Commit graph

526 commits

Author SHA1 Message Date
Fabio Manganiello 004868f526 Added skeleton UI for Snapcast plugin on web panel 2019-01-07 15:34:31 +01:00
Fabio Manganiello efad5a2bd7 Added Snapcast backend 2019-01-06 19:19:30 +01:00
Fabio Manganiello 9328566235 Selecting the default light group tab on web panel load if configured 2019-01-02 21:24:07 +01:00
Fabio Manganiello 5b9c54748e Do not propagate a null response message back to the bus to prevent backends from breaking 2019-01-02 09:29:27 +01:00
Fabio Manganiello 62045c2b5c Support for multiple resource_dirs on the HTTP backend
It is now possible to map multiple static resource directories to the
Flask HTTP server
2018-12-30 18:40:03 +01:00
Fabio Manganiello 9e28379203 Prevent js errors upon null artist or album 2018-12-30 15:43:09 +01:00
Fabio Manganiello 01006046e0 Don't try to push a Pushbullet note body to the bus if it's not a valid JSON 2018-12-27 22:45:31 +01:00
Fabio Manganiello 54c3381ae3 - Added frames throttling support on Leap Motion backend
- Moved the Leap listener to another process to prevent it from hanging the other backends
- Added support for sound and mix frequency analysis
2018-12-27 20:24:51 +01:00
Fabio Manganiello cff4563dae Rewritten Pushbullet backend using pushbullet.py for better stability 2018-12-27 02:29:44 +01:00
Fabio Manganiello c445763979 - Support for sound "release" (removal from active stream)
- Added `query_ports` method to MIDI plugin
2018-12-27 00:09:05 +01:00
Fabio Manganiello 3554968468 Support for multiple sounds on the same stream 2018-12-26 16:10:14 +01:00
Fabio Manganiello f53d1c06dc No need to be verbose upon Pushbullet websocket temporary disconnections 2018-12-24 14:33:27 +01:00
Fabio Manganiello ef241b3769 More robust Pushbullet reconnection logic 2018-12-24 12:31:38 +01:00
Fabio Manganiello b911d46315 Create a new event loop in the Pushbullet backend 2018-12-24 11:37:18 +01:00
Fabio Manganiello 6a48a53c0d Typo 2018-12-24 11:30:10 +01:00
Fabio Manganiello 186ade8f18 Refactored Pushbullet backend to remove the dependency from websocket-client and rely only on websockets 2018-12-18 19:01:51 +01:00
Fabio Manganiello a226aad669 Added python-dateutil requirement 2018-12-19 00:09:21 +01:00
Fabio Manganiello c8f7eb30aa Made Redis backend and plugin more robust.
- Redis arguments read either from the backend or the plugin
configuration as a fallback in case of partial conf

- send_message now falls back on the default Redis connection
configuration if *args and **kwargs are missing
2018-12-18 15:51:37 +01:00
Fabio Manganiello eb439d227a Wrapped HTTP requests loop in a try-except block to prevent it from breaking in case of temporary failures 2018-12-05 15:55:19 +00:00
Fabio Manganiello 9421602e81 Removed duplicate log trace 2018-12-02 23:47:49 +01:00
Fabio Manganiello 7cd1efe2c6 Option to pair a specific device to the Wiimote backend 2018-12-02 23:44:17 +01:00
Fabio Manganiello f677c79f54 Made inactivity timeout on Wiimote configurable 2018-12-01 19:38:43 +01:00
Fabio Manganiello 199e9fdba1 Better management of inactivity timeout on Wiimote 2018-12-01 19:22:10 +01:00
Fabio Manganiello 66b6f0bc8b Added Wiimote support docs; Added Wiimote connection/disconnection events 2018-12-01 18:55:13 +01:00
Fabio Manganiello 383a075f39 Handling Wiimote timeout on Wiimote backend 2018-12-01 18:43:18 +01:00
Fabio Manganiello 2b03276159 #46: Added Wiimote support 2018-12-01 17:56:31 +01:00
Fabio Manganiello 6603f64757 Enforced cast to string for any object posted to the Redis bus 2018-11-20 14:24:14 +00:00
Fabio Manganiello 2d8078b8bb Don't propagate the message from MQTT nor wait for a response if the message is null or its handler threw an exception 2018-11-10 01:16:32 +01:00
Fabio Manganiello cda64865f3 Set the correct mimetype on the /execute endpoint 2018-11-09 23:43:47 +01:00
Fabio Manganiello 26ec213098 Make sure that the shitty MQTT backend doesn't break for no reason 2018-11-06 11:40:01 +01:00
Fabio Manganiello 56b87f3436 Support for default broker server configuration in MQTT plugin 2018-11-02 15:32:12 +00:00
Fabio Manganiello 788a2652c8 Support for TLS/SSL and user authentication on MQTT 2018-11-02 15:15:48 +00:00
Fabio Manganiello c05fc9ee3f Added logic to propagate events to the websockets backend 2018-11-02 10:14:06 +00:00
Fabio Manganiello cd3aea5cd6 typo 2018-11-02 00:07:42 +01:00
Fabio Manganiello f1e1ee92d3 bool compatibility fix 2018-11-02 00:06:39 +01:00
Fabio Manganiello 51440d43fd Propagate SSL flag to the templates 2018-11-02 00:04:49 +01:00
Fabio Manganiello e571d8ea41 Typo 2018-11-02 00:03:10 +01:00
Fabio Manganiello a77a9c04b7 Missed SSL flag 2018-11-02 00:02:11 +01:00
Fabio Manganiello 3eed774d50 Added SSL to websockets js code as well 2018-11-02 00:00:10 +01:00
Fabio Manganiello 727b604bb4 Added SSL to HTTP backend websockets as well 2018-11-01 23:57:50 +01:00
Fabio Manganiello a253e5f49e Removed old line of code 2018-11-01 23:48:25 +01:00
Fabio Manganiello 667d5e8a45 HTTPS support on the web server 2018-11-01 23:43:02 +01:00
Fabio Manganiello 38a8cac9c6 Refactored SSL context logic as utils methods 2018-11-01 23:34:14 +01:00
Fabio Manganiello 6bc976cf89 Fixed SSL support in websocket implementation 2018-11-01 17:28:54 +00:00
Fabio Manganiello b365e7d126 Keep-alive logic implemented for websocket backend 2018-10-27 01:09:09 +02:00
Fabio Manganiello 92a3759721 Added websocket backend and plugin 2018-10-26 21:55:49 +02:00
Fabio Manganiello 8635ed8268 Added support for MQTT backend to process responses on a topic named platypush_bus_mq/<device>/responses/<msg_id> 2018-10-26 13:33:23 +00:00
Fabio Manganiello 284e0638f8 Always define msg so the function doesn't fail on exception
Reverted the previous retry logic for backend - it didn't really work

This reverts commit 4e0e4863a0.
This reverts commit 964c7b5cf0.
This reverts commit 6ce348365f.
2018-10-25 20:46:34 +02:00
Fabio Manganiello 964c7b5cf0 Making sure that Redis constructor only initializes the attributes without creating the object and performing a connection 2018-10-25 20:06:29 +02:00
Fabio Manganiello 6ce348365f Refactored backends to be more robust by wrapping the core logic into a try-except logic with sleep and retry 2018-10-25 19:46:13 +02:00
Fabio Manganiello 4c2302a534 Removed title from logging trace in RSS backend 2018-10-23 00:23:47 +02:00
Fabio Manganiello fec684210c Wrapped MPD plugin reload logic to prevent the backend from crashing if the second initialization fails as well 2018-10-21 14:50:58 +02:00
Fabio Manganiello ae7cd120d2 Wrapped the RSS parsing loop in a try-except block to prevent the backend from continuously crashing if there are encoding issues on the RSS titles 2018-10-21 14:47:52 +02:00
Fabio Manganiello 7adfb67c12 Fixed Kodi plugin 2018-10-20 19:27:15 +02:00
Fabio Manganiello 7490529ca2 Reverted bugged title decode 2018-10-20 14:49:21 +02:00
Fabio Manganiello 2fd7ba003b Decoding title from RSS feeds 2018-10-19 23:48:04 +02:00
Fabio Manganiello af00ac6c68 Fixed attribute name 2018-10-14 17:36:06 +02:00
Fabio Manganiello a4e2db184d Added tts.google web plugin 2018-10-14 17:17:19 +02:00
Fabio Manganiello 74d23262b7 Implemented TCP backend 2018-10-11 14:02:29 +00:00
Fabio Manganiello f79de2e708 Reverted bus post logic for HTTP backend 2018-09-25 00:31:51 +02:00
Fabio Manganiello 65ec2458d8 MQTT backend should call on_message instead of posting directly to the bus 2018-09-24 23:21:02 +02:00
Fabio Manganiello d215410a6a More consistent flow for messages received by a backend 2018-09-24 23:13:44 +02:00
Fabio Manganiello 59d84c4fcb - Calling on_message on Redis backend to trigger the right logic
instead of `self.bus.post` directly

- For consistency `mset` now returns back the map of the set variables

- Redis backend enabled on tests
2018-09-24 22:07:13 +02:00
Fabio Manganiello badb739a8c Increased response queue read timeout to 60 seconds 2018-09-20 13:13:36 +00:00
Fabio Manganiello 6449504e26 Switched the bus to a Redis bus 2018-09-20 10:49:57 +00:00
Fabio Manganiello 661563d1f1 Added Redis bus 2018-09-20 09:41:27 +02:00
Fabio Manganiello 98d24b061a Added joystick backend 2018-09-18 18:58:23 +02:00
Fabio Manganiello 2ee54b5220 Replaced fadeIn with show to make transitions less CPU heavy on RPi 2018-09-15 18:25:58 +02:00
Fabio Manganiello 63890f7670 Return of get_measurement should always be a dict 2018-09-06 03:14:11 +02:00
Fabio Manganiello 5b5e861f94 Implemented distance sensors backend 2018-09-06 03:02:16 +02:00
Fabio Manganiello 98a8874084 Added accelerometer sensor backend 2018-09-06 02:31:01 +02:00
Fabio Manganiello 53ba5f6628 Wrap camera stop and connection close in two distinct try-catch blocks 2018-09-05 15:29:14 +00:00
Fabio Manganiello 6e867e9fb2 Support for multiple thresholds for the same sensor 2018-08-25 12:29:20 +02:00
Fabio Manganiello 2df9c5a890 Fixed gpio css 2018-08-22 21:01:37 +02:00
Fabio Manganiello a9b4c1b8bf Fixed gpio ui 2018-08-22 20:22:34 +02:00
Fabio Manganiello 2c369cb86d Added web interface for gpio plugin 2018-08-22 19:50:30 +02:00
Fabio Manganiello 09d7d98ae3 Retry logic for Mercury API 2018-08-19 21:52:01 +00:00
Fabio Manganiello d2bd49b364 Sync changes on playback volume or state with events and web UI 2018-08-18 01:11:14 +02:00
Fabio Manganiello 822e0a1e25 Better fix for broken async variables and attributes after Python 3.7 migration 2018-08-07 22:00:11 +00:00
Fabio Manganiello b023618950 Revert "In Python 3.7 async is a strict language keyword that can't be used for variables names - replaces occurrences with _async"
This reverts commit e625861edf.
2018-08-07 21:52:02 +00:00
Fabio Manganiello e625861edf In Python 3.7 async is a strict language keyword that can't be used for variables names - replaces occurrences with _async 2018-08-07 21:26:57 +00:00
Fabio Manganiello ec38ecbaf3 More pylint fixes 2018-07-30 23:18:01 +02:00
Fabio Manganiello 81803a364d Fixed some pylint warnings 2018-07-30 22:08:06 +02:00
Fabio Manganiello 61e211ee07 Added Kafka plugin 2018-07-28 01:55:19 +02:00
Fabio Manganiello 1ec0bd40d9 Updated docstrings 2018-07-23 02:11:16 +02:00
Fabio Manganiello 0b4cfec8e7 More robust HTTP backend in case Redis wasn't configured 2018-07-20 11:13:49 +02:00
Fabio Manganiello 5bc7319933 Optimized serial plugin 2018-07-17 23:47:13 +02:00
Fabio Manganiello b9c77b15f8 Fixed docstring 2018-07-16 22:12:02 +02:00
Fabio Manganiello 42fa8360f3 Only propagate the values above/below threshold in case of a sensor threshold crossing, excluding the sensors that haven't crossed the threshold 2018-07-15 17:28:17 +02:00
Fabio Manganiello c81534875a Get Redis object on each interaction in case the backend wasn't ready before 2018-07-08 22:12:30 +02:00
Fabio Manganiello e1ead3c25f s/_token/token/ 2018-07-08 22:00:28 +02:00
Fabio Manganiello 2647bd3881 Implemented token verification over HTTP calls.
The token can be provided either:

* GET parameter (``?token=abc``)
* JSON payload request (``{..your_request.., "_token":"abc"})
* HTTP header (``X-Token: abc``)
* Basic HTTP auth (any username works, password: token)
2018-07-08 21:36:58 +02:00
Fabio Manganiello 4ebdda80f9 More robust support for Redis configuration in web socket server 2018-07-08 12:24:33 +02:00
Fabio Manganiello b443df7947 Parametrized the HTTP backend Redis object by using the same configuration used on the Redis backend 2018-07-08 12:13:43 +02:00
Fabio Manganiello 88d9f9d3ac Stability fixes 2018-07-06 03:38:14 +02:00
Fabio Manganiello 81a81312e3 Basic support for token authentication on request level 2018-07-05 09:15:53 +02:00
Fabio Manganiello 7ad0724f0e while True loop for recording 2018-07-01 19:35:23 +02:00
Fabio Manganiello 6ba71b52e7 Improved camera.pi logic 2018-06-29 11:25:18 +02:00
Fabio Manganiello 57baa0c64a Try to decode the message event if it's not a Platypush message 2018-06-29 11:09:28 +02:00
Fabio Manganiello 3872276234 Better way to handle plugins->backends communication through Redis 2018-06-29 10:21:19 +02:00
Fabio Manganiello 4163a414bf Caching switch.tplink devices and supporting lookup by alias 2018-06-26 22:59:33 +02:00
Fabio Manganiello 65f9610cce Added switch.tplink web widget 2018-06-26 22:14:11 +02:00
Fabio Manganiello 94ffaf2099 Commented out optional requirements that break RTD build 2018-06-26 01:06:23 +02:00
Fabio Manganiello e6fdcaa068 Make sure that the Redis thread gets the stop event propagated when the application terminates 2018-06-26 00:57:26 +02:00
Fabio Manganiello 8e16f31603 fixed regex 2018-06-26 00:46:13 +02:00
Fabio Manganiello 7398107570 Completed documentation for backends 2018-06-26 00:36:01 +02:00
Fabio Manganiello 8a0ca64e4d Merge branch 'master' into docs 2018-06-26 00:17:28 +02:00
Fabio Manganiello 28862d743d Adding backends documentation 2018-06-26 00:16:39 +02:00
Fabio Manganiello 0939cdedf8 Added utility to scan for messages on the ZeroBorg infrared sensor 2018-06-26 00:16:04 +02:00
Fabio Manganiello cb30a0418f Don't play icon animation to prevent the browser on a tiny RPi to freeze 2018-06-25 20:09:45 +02:00
Fabio Manganiello 49333d892e Remove and then re-add the skycons icon to make sure that the refresh happens 2018-06-24 14:35:36 +02:00
Fabio Manganiello fd792cb089 Added support for weather icons on the dashboard 2018-06-23 01:34:46 +02:00
Fabio Manganiello a4273f5619 Older versions of the assistant SDK don't have the ON_RENDER_RESPONSE event - check if they have it defined before testing the event type 2018-06-21 01:29:04 +02:00
Fabio Manganiello 8708d53236 Show assistant response text on web clients 2018-06-21 00:22:26 +02:00
Fabio Manganiello f73adc83bc - Support for assistant response text as a ResponseEvent
- Don't trigger a ConversationEndEvent if the assistant needs to follow up on the previous interaction
2018-06-20 19:21:32 +02:00
Fabio Manganiello 5f50b5c4f4 Support for color animations via web interface too 2018-06-19 00:37:33 +02:00
Fabio Manganiello 2d6994c057 send_message over Redis for OMXPlayer plugin 2018-06-14 21:13:01 +02:00
Fabio Manganiello b7181085f3 Cover both the cases where the Redis backend is not configured and where it's None 2018-06-14 20:44:06 +02:00
Fabio Manganiello bd18d1cbc1 Using Redis backend as a fallback for send_message if a backend does not implement its own send_message 2018-06-14 20:42:57 +02:00
Fabio Manganiello 81d29928b0 Pi Camera backend version 1.0, now properly controllable 2018-06-14 12:37:14 +02:00
Fabio Manganiello 2b73f71803 Improved logging traces names for backends and plugins 2018-06-14 02:19:55 +02:00
Fabio Manganiello 793b4df12d Pi Camera backend version 0.something 2018-06-14 02:14:08 +02:00
Fabio Manganiello 85512424ae Better events orchestration on camera.pi backend 2018-06-14 00:44:50 +02:00
Fabio Manganiello bb43facee5 typo #2 2018-06-14 00:37:38 +02:00
Fabio Manganiello e9fc35b39d typo 2018-06-14 00:36:07 +02:00
Fabio Manganiello 29a5cfa9c2 Refactored camera.pi backend. Support for start/stop recording control via plugin action. Introduced support for taking pictures too 2018-06-14 00:34:30 +02:00
Fabio Manganiello 2e08be2886 Clean up the iframe src on timeout expire 2018-06-13 20:44:24 +02:00
Fabio Manganiello 5a1e77c174 Added iframe modal on dashboard with support for dynamic events to temporarily/permanently display a custom web page on the connected browsers 2018-06-13 20:40:49 +02:00
Fabio Manganiello d89b03a697 Optional 'zoom' parameter added to the map page to override Google Maps auto-zoom (needed if the page is embedded in an iframe) 2018-06-13 18:10:58 +00:00
Fabio Manganiello e0ff431894 (Forgot to fix humidity sensor reads) 2018-06-12 20:31:58 +02:00
Fabio Manganiello 64ee7e3e59 Fixed the way the FE widget parses the sensor changes after the structural change to SensorDataChangeEvent 2018-06-12 20:30:23 +02:00
Fabio Manganiello e216eb4792 Added maps page 2018-06-12 15:33:04 +00:00
Fabio Manganiello 464ff1ff57 A more robust way to handle JSON serialization/deserialization on MQTT backend 2018-06-12 10:33:30 +02:00
Fabio Manganiello b329580ff0 json decode msg 2018-06-12 09:28:15 +02:00
Fabio Manganiello 8c208c0028 Use the Redis backend to dispatch messages to the core bus if available 2018-06-12 09:20:22 +02:00
Fabio Manganiello 7ab85b4cfa Symlinked serial sensor web interface to MCP3008 sensor template 2018-06-12 01:03:29 +02:00
Fabio Manganiello 77d954f14e Simplified MCP3008 sensor backend by letting it extend SensorBackend 2018-06-12 00:36:43 +02:00
Fabio Manganiello c410bd8926 s/sensors/data/g 2018-06-12 00:23:47 +02:00
Fabio Manganiello f137595ba0 Removed the serial backend, as it's now being replaced by the more specific (and reusable) sensor.serial backend 2018-06-12 00:01:18 +02:00
Fabio Manganiello 0e3873eaf3 Removed light sensor backend. As most of them are analog sensors, they can't communicate directly with the Raspberry - instead a plugin like serial (e.g. Arduino) or MCP3008 should act as a proxy 2018-06-12 00:00:15 +02:00
Fabio Manganiello 33a507f047 Simplified SensorBackend implementations 2018-06-11 23:49:37 +02:00
Fabio Manganiello 933940c695 Attribute name fix 2018-06-11 22:12:25 +02:00
Fabio Manganiello 0905981c58 Refactoring sensor backend and added SensorSerialBackend 2018-06-11 21:07:54 +02:00
Fabio Manganiello 40293a3d30 calendar-next-event-container width 50% -> 70% 2018-06-10 17:20:05 +02:00
Fabio Manganiello c6054f4ac9 Typos 2018-06-08 17:17:12 +02:00
Fabio Manganiello 6247488450 Fixed other logging issues 2018-06-08 17:10:11 +02:00
Fabio Manganiello d7bc17778e Forgot import logging 2018-06-08 16:55:06 +02:00
Fabio Manganiello 2bb6ed6867 Declared logger attribute in HttpRequest as it won't be available to the subclasses otherwise 2018-06-08 16:54:15 +02:00
Fabio Manganiello f0bb2a20b0 Typo 2018-06-08 16:41:31 +02:00
Fabio Manganiello 0756da3861 Fixed logger references 2018-06-08 16:37:59 +02:00
Fabio Manganiello 9a43b6cf51 Fixed logger references 2018-06-07 09:08:32 +02:00
Fabio Manganiello 4da74b1096 Refactored logging submodule 2018-06-06 20:09:23 +02:00
Fabio Manganiello 9984b75895 Added midi backend to support events from MIDI sources 2018-06-06 02:26:28 +02:00
Fabio Manganiello 8534a738d2 Refresh calendar each 15 minutes 2018-06-04 01:01:27 +00:00
Fabio Manganiello bc3e100217 New general-purpose plugin for managing multiple calendar + support for ICal format 2018-05-30 15:59:10 +02:00
Fabio Manganiello 3fe70dd184 Implemented MQTT backend and plugin, see issue #56 2018-05-27 12:21:41 +02:00
Fabio Manganiello c73905d35d More robust handling of card removed events 2018-05-27 11:47:57 +02:00
Fabio Manganiello b04a355cc0 Pass also ATR and reader to SmartCardRemovedEvent 2018-05-27 11:25:29 +02:00
Fabio Manganiello 9801fe26fc Generating SmartCardRemoveEvent as well when a scard is removed 2018-05-27 11:21:47 +02:00
Fabio Manganiello 8a6dcdbf5f Generating SmartCardRemoveEvent as well when a scard is removed 2018-05-27 11:11:05 +02:00
Fabio Manganiello 755eb83093 Added support for smart card events 2018-05-27 10:47:58 +02:00
Fabio Manganiello c1caa182be Handling assistant no_response events 2018-05-25 18:26:02 +02:00
Fabio Manganiello 4f75b765b1 Added assistant conversation timeout event 2018-05-25 18:18:16 +02:00
Fabio Manganiello 306faff4af Default tolerance for hand palm motion on Leap should be zero 2018-05-23 19:48:59 +02:00
Fabio Manganiello 57722fce2a Added support for Leap Motion device events 2018-05-23 17:07:15 +02:00
Fabio Manganiello f4da6ebb1b Redis plugin added and Redis backend made more robust to work also with single-quoted JSON-like strings returned by the Redis lib 2018-05-22 14:44:17 +00:00
Fabio Manganiello 18efdb1c70 Make sure the summary is always there 2018-05-21 09:47:50 +02:00
Fabio Manganiello 0accbfa66e Logging traces on RSS parse 2018-05-21 09:27:13 +02:00
Fabio Manganiello 4643c10e11 Added Redis backend, issue #55 2018-05-14 20:09:25 +02:00
Fabio Manganiello 01c5bbadcd Type should actually always be there 2018-05-13 11:49:42 +02:00
Fabio Manganiello 5e3b41c3ad Made the Pushbullet backend more resilient in case of rogue messages with no type specified 2018-05-13 11:39:59 +02:00
Fabio Manganiello d75326bbe8 Added Switchbot web plugin 2018-05-08 17:07:01 +02:00
Fabio Manganiello b94764436d Added WeMo switch plugin for web panel 2018-05-08 09:59:43 +02:00
Fabio Manganiello bd761d420e RSS digests are now optional 2018-05-07 19:44:34 +02:00
Fabio Manganiello a3b83e8c57 Fixed sensors position 2018-05-07 19:21:58 +02:00
Fabio Manganiello 44596a6cfb Improved style for temp/humidity sensors on the widget 2018-05-07 19:16:25 +02:00
Fabio Manganiello 20a9224ab5 Included support for temperature/humidity display on weather widget from sensor events 2018-05-07 18:55:50 +02:00
Fabio Manganiello e4269a8d5d Skip RSS items if published_parsed is not defined 2018-05-07 18:33:44 +02:00
Fabio Manganiello f322f71447 - News widget max items is now configurable
- Update the news list whenever the loop over the current list is done
2018-05-07 18:16:30 +02:00
Fabio Manganiello 1b1016fba2 Added background blurred image if width < height 2018-05-07 17:18:01 +02:00
Fabio Manganiello 37c6e25ac3 Finally got a proper scaling for carousel widget pictures 2018-05-07 14:50:08 +02:00
Fabio Manganiello e671a1294c Reset min-width when cloning the element 2018-05-07 09:57:35 +02:00
Fabio Manganiello 19268f66a8 border-radius fix 2018-05-07 09:56:31 +02:00
Fabio Manganiello af11358a76 Image carousel widget improvements 2018-05-07 09:54:30 +02:00
Fabio Manganiello 2483c6d612 Simplified websockets keep-alive logic. Just wait on recv() and clean up the websocket in case of a ConnectionClosed exception 2018-05-06 11:38:24 +02:00
Fabio Manganiello 177a359e4a Only do article fade-in without fade-out+fade-in dance 2018-05-06 00:42:46 +02:00
Fabio Manganiello 31f2cbf8b1 Added __init__.py 2018-05-06 00:14:42 +02:00
Fabio Manganiello 88c5bc16f5 - Added rss-news dashboard widget
- Added summary field to the RSS entry
- Added support for custom dashboard backgrounds
- UX fixes + font change
2018-05-05 23:59:43 +02:00
Fabio Manganiello ac958f98da Added images carousel web widget 2018-05-05 04:37:22 +02:00
Fabio Manganiello e1e4d824ad - Added web widget for Google Calendar integration
- UX improvements on the dashboard
2018-05-05 00:57:41 +02:00
Fabio Manganiello f6306c6015 Added Google Calendar plugin 2018-05-04 19:20:23 +02:00
Fabio Manganiello 2f8c74c8e3 - Added Pushbullet JS logic to show mirror notifications on web FE
- Added JS and CSS files for dashboard and widgets
2018-05-04 17:25:12 +02:00
Fabio Manganiello d83c2c903f - Added support for /dashboard page with customizable widgets under the web server
- Introduced Redis to pass messages between the Flask process and the
main application. It now syncs messages with the bus and connected websockets
- Added support to programmatically modify dashboard widgets through POST request like Dashing
- Added weather forecast plugin
2018-05-04 03:24:35 +02:00
Fabio Manganiello a67b301cd6 s/albumartist/album/g 2018-05-03 02:17:31 +02:00
Fabio Manganiello dca41ea86e A more robust logic for spotting new RSS items 2018-05-01 10:13:41 +02:00
Fabio Manganiello d12ebe8810 Bold font for sensor values 2018-04-30 10:20:12 +02:00
Fabio Manganiello 79bfed3a1d FE fixes on the sensors panel 2018-04-30 10:04:37 +02:00
Fabio Manganiello b4bd1cb7bb Added web UI for MCP3008 analog sensors values 2018-04-30 09:40:44 +02:00
Fabio Manganiello b8cba8ec0c Forgot an assignment 2018-04-30 01:43:23 +02:00
Fabio Manganiello c0ef9e2373 poll_seconds should not have a default value 2018-04-29 23:58:33 +02:00
Fabio Manganiello bd8d4649c5 Added MCP3008 backend 2018-04-29 23:51:53 +02:00
Fabio Manganiello cbe676a29f Get the JSON/string output out of the Response object 2018-04-29 16:28:01 +02:00
Fabio Manganiello cddd740666 Removed reference to self.device in backend.serial 2018-04-29 16:26:12 +02:00
Fabio Manganiello 4f19cd1324 Removed old reference to serial.Serial 2018-04-29 16:17:09 +02:00
Fabio Manganiello a907c9ad63 Refactored serial, the entry point for querying serial devices should be the serial plugin, the backend should only be a client. Also, if the serial output is a JSON, parse it 2018-04-29 16:14:46 +02:00
Fabio Manganiello 514eb3d4e4 No need for a comma there 2018-04-29 12:32:25 +02:00
Fabio Manganiello 68c52fe102 - Importing Flask.request as http_request to prevent name clashes with
SQLAlchemy's request module

- All SQLAlchemy engine and connection setup done within get_new_items
to prevent different threads from creating and using the db instance

- Added check_same_thread to sqlite connection line to prevent
different-thread exceptions when the Flask main thread does some cleanup
2018-04-28 19:11:14 +02:00
Fabio Manganiello 63b3d196e8 Video icons fixes 2018-04-26 15:29:10 +02:00
Fabio Manganiello 797d6a0fe8 Added an icon to the video results to show the type 2018-04-26 15:23:10 +02:00
Fabio Manganiello acd06c2193 Implemented OMXPlayer file search and unified all searches under one method 2018-04-25 00:13:17 +02:00
Fabio Manganiello dd254b65cb Implemented YouTube videos search and controls web FE 2018-04-24 14:36:05 +02:00
Fabio Manganiello 4d45284131 Style fixes 2018-04-24 09:17:09 +02:00
Fabio Manganiello 1bda7b8346 Handlers & buttons 2018-04-24 01:30:04 +02:00
Fabio Manganiello 27398030e4 Fixed form name in CSS 2018-04-24 01:26:00 +02:00
Fabio Manganiello e310ef0a04 Finalized video.omxplayer FE plugin 2018-04-24 01:23:06 +02:00
Fabio Manganiello b5b61f0442 Wrong extension.. 2018-04-24 01:05:37 +02:00
Fabio Manganiello ebed6adf57 Added video.omxplayer frontend plugin 2018-04-24 01:03:50 +02:00
Fabio Manganiello 53f8f88bac Added inotify files and paths monitoring backend 2018-04-23 16:32:35 +02:00
Fabio Manganiello a58fa23173 Websocket client-side timeout: 5 -> 30 seconds 2018-04-18 10:13:53 +02:00
Fabio Manganiello 02e951bd57 - Added hidden plugins configuration for plugins that shouldn't be shown
on the web panel as tabs

- Added support for popup notifications on the web panel

- Added voice assistant interactive notifications to the web panel

- Added new playing music notifications to the web panel
2018-04-17 23:10:49 +02:00
Fabio Manganiello fcdc4d1af8 Reload the MPD plugin in case of any errors during the status retrieval 2018-04-17 16:43:39 +02:00
Fabio Manganiello 15a233a927 Keep reloading the MPD plugin in the MPD backend if the plugin crashed or keeps being null 2018-04-17 09:27:41 +02:00
Fabio Manganiello 40d1b7481a Added TTS web plugin 2018-04-16 14:38:13 +02:00
Fabio Manganiello 607ec2812c Run get_plugin at every iteration of the mpd backend in case the plugin lost the connection and has been reloaded 2018-04-16 09:38:34 +02:00
Fabio Manganiello 1a01b336b7 Brought server side ping timeout to 60 seconds 2018-04-15 22:36:45 +02:00
Fabio Manganiello 400943b74b Cleaner management of MPD search filters on the frontend 2018-04-15 10:03:34 +02:00
Fabio Manganiello 73c74654d1 - Better MPD filter management - you can now pass filters as arrays like
['artist', 'Led Zeppelin', 'title', 'Stairway To Heaven'] instead of
relying on one single type-filter pair

- Improved condition matching - don't skip the last condition token if
there are still event tokens to add
2018-04-14 23:58:48 +02:00
Fabio Manganiello e83b21ad33 No outline on the ZeroBorg div when focused 2018-04-13 23:45:29 +02:00
Fabio Manganiello 0cfd67be51 Changed behaviour on playlist track click. Click twice to play instace of long pressing to prevent tracks from playing while scrolling the pane 2018-04-12 20:07:28 +02:00
Fabio Manganiello cf2b362947 Support for robot control through keyboard 2018-04-12 18:42:01 +02:00
Fabio Manganiello de7a8067cb Better filtering of music results 2018-04-12 14:28:20 +02:00
Fabio Manganiello abdc5a5ed0 Inverted search priority order 2018-04-12 14:22:24 +02:00
Fabio Manganiello b400597a1b Refresh the status as well upon successful search results play/add 2018-04-12 13:53:04 +02:00
Fabio Manganiello decadee00a Implemented music search from web panel 2018-04-12 13:04:56 +02:00
Fabio Manganiello f3d725c890 Making the websocket reconnect client-side logic a bit more consistent 2018-04-10 19:49:37 +02:00
Fabio Manganiello 10bf54f961 A more consistent a bug-free handling of websocket reconnection cycles 2018-04-10 15:56:00 +02:00
Fabio Manganiello 4efbcc50dd Server-side websocket timeout: 3 -> 5 seconds 2018-04-10 00:10:03 +02:00
Fabio Manganiello ef1843fdbc s/1 second/3 seconds/ 2018-04-09 23:58:54 +02:00
Fabio Manganiello cb6894b6f8 s/5 seconds/1 second/ 2018-04-09 23:56:43 +02:00
Fabio Manganiello c81e969097 Reverted 10 msec wait to prevent sys resources flooding on retries 2018-04-09 23:26:14 +02:00
Fabio Manganiello ce5db9a9c6 Reconnect to the websocket immediately in case of normal closure 2018-04-09 23:21:19 +02:00
Fabio Manganiello d380e0f398 Keep trying to connect in case the websocket goes down 2018-04-09 23:15:15 +02:00
Fabio Manganiello 75e958bb38 Added auto pilot and stop controls to ZeroBorg web UI 2018-04-09 18:12:53 +02:00
Fabio Manganiello cb44f864cc Added ZeroBorg plugin web UI for motors control 2018-04-09 15:45:14 +02:00
Fabio Manganiello 4bd69d1d68 Making the header a bit more proportioned 2018-04-09 10:22:07 +02:00
Fabio Manganiello fe2930dfdc Increased font size for datetime div 2018-04-09 10:20:32 +02:00
Fabio Manganiello fa4ed7c95c light.hue.on/off wants an array 2018-04-09 01:53:25 +02:00
Fabio Manganiello a3fbce1082 Support for global and individual color and power switches on Philips Hue interface 2018-04-09 01:24:02 +02:00
Fabio Manganiello 2bf4ff136b Exposing serial data functionally through a plugin 2018-04-08 18:16:24 +02:00
Fabio Manganiello 8ae22726ed Added serial device backend 2018-04-07 03:08:52 +02:00