Commit Graph

748 Commits

Author SHA1 Message Date
Fabio Manganiello 23d106969f Default timeout for API calls from 30 to 60 seconds 2019-07-02 14:56:43 +02:00
Fabio Manganiello 40fa640397 New sensors web panel WIP 2019-07-02 14:42:25 +02:00
Fabio Manganiello 54a3643605 Added name and value props to sensor component 2019-07-02 14:39:04 +02:00
Fabio Manganiello 43b01f7c0e Fixed icon class 2019-07-02 14:34:05 +02:00
Fabio Manganiello 1eae45805d Added new sensors plugin to webpanel 2019-07-02 14:04:25 +02:00
Fabio Manganiello b932df1c12 Added switch tab to the new web panel 2019-07-02 12:02:28 +02:00
Fabio Manganiello 26ee3fc75c Changed nav bar text to icons 2019-07-01 22:26:04 +02:00
Fabio Manganiello 277d6ec271 Added torrent support in new webplayer 2019-07-01 19:32:22 +02:00
Fabio Manganiello c78789e644 Added Kodi support to new media webplayer 2019-06-29 00:06:03 +02:00
Fabio Manganiello f86eeef549 New media webplugin WIP 2019-06-27 23:52:40 +02:00
Fabio Manganiello 70bba5fc96 Support for browser webplayer and subtitles in new webplugin 2019-06-26 11:05:16 +02:00
Fabio Manganiello e55735f409 Added YouTube support to new media webplugin 2019-06-25 22:46:25 +02:00
Fabio Manganiello cf23e2fc72 Support for subtitles in new media webplugin - WIP 2019-06-25 00:48:00 +02:00
Fabio Manganiello 9305f86d0c New media webplugin WIP 2019-06-24 01:01:08 +02:00
Fabio Manganiello ba800ef8e2 Normalized all local players so that they handle events and return statuses in the same format 2019-06-23 02:16:20 +02:00
Fabio Manganiello 1964f74f19 New media webplugin WIP 2019-06-22 19:05:17 +02:00
Fabio Manganiello 2da6d7d866 New media webplugin WIP 2019-06-22 14:41:42 +02:00
Fabio Manganiello 482f6f0765 New media webplugin WIP 2019-06-22 00:15:32 +02:00
Fabio Manganiello 4cd2e6949f New media webplugin WIP 2019-06-21 02:13:14 +02:00
Fabio Manganiello ecd41a1f41 New media webplugin WIP 2019-06-18 18:14:48 +02:00
Fabio Manganiello 32efebe405 Fixed typos and warnings in snapcast backend 2019-06-16 21:59:31 +02:00
Fabio Manganiello e5d7334662 New media webplugin WIP 2019-06-16 21:45:21 +02:00
Fabio Manganiello 5e2b927267 Explicitly inherit the height of parent panels container 2019-06-15 13:02:09 +02:00
Fabio Manganiello 7015c0df11 Explicitly inherit the height of parent panels container 2019-06-15 13:00:41 +02:00
Fabio Manganiello 496e692860 calc mixin shit 2019-06-15 12:50:14 +02:00
Fabio Manganiello a25565a80d Fill window.config object before including other js code 2019-06-15 12:01:13 +02:00
Fabio Manganiello 3a3637d3d7 Fixed calc mixin and introduced media handlers for webpanel media plugin 2019-06-15 00:51:48 +02:00
Fabio Manganiello fc5ea429d2 Using cross-browser mixin for calc 2019-06-14 19:15:57 +02:00
Fabio Manganiello 359e6703e4 new font-awesome commits 2019-06-14 01:01:51 +02:00
Fabio Manganiello 9d4511577f - Refactored webpanel style to use flex and dynamic element heights
instead of ugly fixed/absolute positioning.

- New media webpanel plugin WIP
2019-06-14 00:54:20 +02:00
Fabio Manganiello 076d766745 New TTS webpanel plugins 2019-06-11 11:53:15 +02:00
Fabio Manganiello 205903bc40 Removed old music.snapcast.js 2019-06-10 23:26:26 +02:00
Fabio Manganiello 91ef6f3ce2 Finalized new Snapcast webpanel plugin 2019-06-10 15:11:24 +02:00
Fabio Manganiello 95a9c22618 Added new Snapcast webpanel plugin 2019-06-10 00:55:23 +02:00
Fabio Manganiello 33d55dcd93 Fixed Pushbullet backend 2019-06-08 22:37:19 +02:00
Fabio Manganiello 6019ba9db6 Wrote new Pushbullet handler for webpanel 2019-06-08 17:16:47 +02:00
Fabio Manganiello 46836374b0 Removed old application.js 2019-06-08 13:38:57 +02:00
Fabio Manganiello 4bfd6baab2 Removed old assistant google web plugin 2019-06-08 13:38:18 +02:00
Fabio Manganiello bb4cc80262 Added assistant.google plugin in new webpanel 2019-06-08 13:25:40 +02:00
Fabio Manganiello 41d8ae48e1 Removed old jQuery music.mpd plugin 2019-06-07 23:13:07 +02:00
Fabio Manganiello b7a625097d Added playlist editor in music.mpd web panel 2019-06-07 23:07:36 +02:00
Fabio Manganiello 1ad72a2695 Implemented support for adding tracks to playlists 2019-06-07 17:17:58 +02:00
Fabio Manganiello 0b6b29f043 Improved support for multiple modals and added ability to search for albums and artists on the fly from tracks in music.mpd - vue.js refactoring WIP 2019-06-07 00:43:39 +02:00
Fabio Manganiello 7df0cec14e Implemented support for modals and music.mpd search and item info 2019-06-06 02:08:36 +02:00
Fabio Manganiello 611a137ff6 music.mpd vue.js refactoring WIP: Implemented playlist track move feature 2019-06-04 15:59:07 +02:00
Fabio Manganiello d3ecb7b871 music.mpd vue.js refactoring WIP 2019-06-03 23:53:37 +02:00
Fabio Manganiello 85bdd54f7e music.mpd vue.js refactoring WIP 2019-06-03 23:37:19 +02:00
Fabio Manganiello e1ddf7bb3b music.mpd vue.js refactoring WIP 2019-06-02 00:54:49 +02:00
Fabio Manganiello 0f3987aaf2 Reverted scrollbar style override 2019-05-30 02:19:20 +02:00
Fabio Manganiello 7a74b83c76 music.mpd plugin vue.js refactoring - WIP 2019-05-30 02:07:28 +02:00
Fabio Manganiello 444fe6331d New support for notifications in webpanel in vue.js 2019-05-28 19:16:55 +02:00
Fabio Manganiello e1c3951456 Added events and websocket support in webpanel refactoring and removed old light.hue templates and scripts 2019-05-28 19:16:55 +02:00
Fabio Manganiello 197a5805be Made nav header fixed 2019-05-28 19:16:55 +02:00
Fabio Manganiello 01b111f436 Webpanel refactoring in progress 2019-05-28 19:16:55 +02:00
Fabio Manganiello 897338399f Synchronize all lights toggles when scenes are selected 2019-05-28 19:16:55 +02:00
Fabio Manganiello e72d4de581 vue.js refactor part 1 - prepared webpanel logic and migrated light.hue plugin 2019-05-28 19:16:55 +02:00
Fabio Manganiello 8b478ede45 vue.js migration commit - WIP 2019-05-28 19:16:55 +02:00
Fabio Manganiello 1ad86428c8 Added support for custom webhooks 2019-05-17 14:55:29 +00:00
Fabio Manganiello 9fc243c93d Use startTime instead of endTime as a time indicator to identify new records 2019-03-29 10:14:46 +00:00
Fabio Manganiello 24d395ce49 Use endTime 2019-03-28 14:37:26 +01:00
Fabio Manganiello c84a6047ed Using modifiedTime instead of startTime to track new data points 2019-03-28 14:17:43 +01:00
Fabio Manganiello c3b2212972 Storing last processed timestamp per fit metric instead of a single timestamp for all the metrics to prevent new data points from being masked from newer ones from other metrics 2019-03-28 02:36:16 +01:00
Fabio Manganiello 68f985d2c6 Copy websockets list before iterating over it to prevent race conditions upon list changed upon iteration 2019-03-27 02:25:06 +01:00
Fabio Manganiello 387ed23e86 No need for snapcast-settings-btn class on snapcast-host-container 2019-03-27 00:49:53 +01:00
Fabio Manganiello 67fd88950a Fixed modal madness in Snapcast frontend 2019-03-27 00:41:19 +01:00
Fabio Manganiello 31108b21e5 Don't define Snapcast modal open elements on the highest level, or modals will pop up even when clicking on other elements than the name 2019-03-21 18:30:32 +01:00
Fabio Manganiello 92f1f3eea7 Wrap Google Fit checks in try-catch block to prevent the backend from crashing with no reload 2019-03-20 10:48:07 +00:00
Fabio Manganiello 7072a19829 Print timestamps in human readable format 2019-03-19 11:32:06 +00:00
Fabio Manganiello eb7b9c066c Logging info about processed Fit entries to debug why we don't always get all the new events 2019-03-19 11:29:53 +00:00
Fabio Manganiello af97f7b6a5 Tentative fix for Google Fit data points timestamp tracking 2019-03-18 11:58:40 +00:00
Fabio Manganiello 9d36688a61 Don't fail hard if it's not possible yet to retrieve the mopidy status in the backend constructor 2019-03-17 02:06:56 +01:00
Fabio Manganiello a1c31a9fb9 Better handling for last_timestamp reads from Google Fit backend 2019-03-17 00:31:32 +01:00
Fabio Manganiello 9153b1e9c4 Added __init__.py init backend.google 2019-03-16 19:36:46 +01:00
Fabio Manganiello f201f039e9 Extended and normalized key names in GoogleFitEvent type 2019-03-16 19:28:47 +01:00
Fabio Manganiello 87d63d7cb3 Added Google Fit backend 2019-03-16 01:22:42 +01:00
Fabio Manganiello 022262eb78 Handle MQTT listeners by host with lists of topics, so we only need one listener thread per host 2019-03-07 23:03:12 +01:00
Fabio Manganiello 84099b2ab7 Added support for multiple listeners on multiple servers and topics for general-purpose messaging on the MQTT backend 2019-03-07 22:52:02 +01:00
Fabio Manganiello 38ebe87220 Get the device_id after initializing/creating the device 2019-03-07 20:11:32 +01:00
Fabio Manganiello 9324ad3f9b Create a device if it doesn't exist 2019-03-07 20:05:40 +01:00
Fabio Manganiello fb93aec3ec Added empty __init__.py to plugins to let importlib correctly find the submodules 2019-03-06 02:21:26 +01:00
Fabio Manganiello 0596d77403 Support for camera snapshot and stream endpoints and for disabling logging on response and event messages 2019-03-06 02:01:17 +01:00
Fabio Manganiello 619c750f3b Don't fail hard if status is not available 2019-03-03 12:42:31 +01:00
Fabio Manganiello a9fb6a38dd New API for firing events and registering/unregistering event handlers
both for plugins and backends
2019-02-28 01:21:25 +01:00
Fabio Manganiello 811af1bf9d Removed conflict leftovers 2019-02-26 23:55:00 +01:00
Fabio Manganiello 17367f5b3e Added camera plugin over cv2 2019-02-26 23:50:48 +01:00
Fabio Manganiello 150d95d0dc Support for launching uWSGI directly from the HTTP backend 2019-02-25 10:52:48 +01:00
Fabio Manganiello 0104037ada Dashboard background image added to static/resources 2019-02-24 20:10:58 +01:00
Fabio Manganiello 2adab13d50 Added favicon 2019-02-24 19:59:08 +01:00
Fabio Manganiello 8ef3aafb52 Added missing doc line in backend.http 2019-02-24 15:53:01 +01:00
Fabio Manganiello 8153d8476f Added uWSGI optional dependency for HTTP backend 2019-02-24 12:35:26 +01:00
Fabio Manganiello e3fcebe4b6 Made a separate uWSGI startup script for the webapp 2019-02-24 00:17:31 +01:00
Fabio Manganiello c74b939660 Renamed app->application for the main Flask webapp to make sure that the default uwsgi configuration can pick it up 2019-02-24 00:11:35 +01:00
Fabio Manganiello d5c31d938b Run each message handling logic on the bus on a separate thread to make sure that messages don't queue up too much 2019-02-23 23:58:43 +01:00
Fabio Manganiello 0e794cd1b0 Refactored HTTP server to split the routes on separate files and keep the main Flask app object in a separate file as well so it can be easily wrapped by a WSGI instance 2019-02-23 21:19:00 +01:00
Fabio Manganiello 73383ab80f Panel and modal close bindings should refer the target element in the event, not $(this) 2019-02-21 20:13:31 +01:00
Fabio Manganiello 6e1b6686c2 Revert "Running Flask webserver in another thread instead than another process"
This reverts commit 0a5c42fdfd.
2019-02-21 16:15:06 +01:00
Fabio Manganiello 0a5c42fdfd Running Flask webserver in another thread instead than another process 2019-02-21 14:33:41 +01:00
Fabio Manganiello 97e1dfacdf Made VLC template symlink 2019-02-21 01:38:21 +01:00
Fabio Manganiello fd18bd84ca Don't download subtitles for magnet links (until the media file/metadata is ready at least) 2019-02-19 10:37:29 +01:00
Fabio Manganiello 151e2e56d9 typo 2019-02-19 01:05:44 +01:00
Fabio Manganiello 11af83f88f Added symlink media.mpv.html -> media.html 2019-02-19 00:19:48 +01:00
Fabio Manganiello a21a11d499 Only proceed with subtitles loading when the list of subs is not empty 2019-02-17 16:29:39 +01:00
Fabio Manganiello 7d1c9275f5 Make it 10 seconds when it comes to poll time 2019-02-16 20:21:04 +01:00
Fabio Manganiello 55f1a33d90 Keep a sleep between polls to the Snapcast servers 2019-02-16 20:17:15 +01:00
Fabio Manganiello 6ac62b0161 Reset the time-seek indicator also on the web panel 2019-02-13 18:01:56 +01:00
Fabio Manganiello 4503eb31ed Clear track elapsed time display on stop event 2019-02-13 17:53:57 +01:00
Fabio Manganiello a287a10bcc Propagate a MusicStopEvent upon playback stop even when the context of the current track is not available 2019-02-13 17:38:58 +01:00
Fabio Manganiello 7c817ba0c6 Position is expressed in milliseconds on mopidy websocket, convert to seconds 2019-02-13 17:25:56 +01:00
Fabio Manganiello 0a81b43f1d startStreaming should always return a map 2019-02-13 10:15:18 +01:00
Fabio Manganiello 09f5c92541 Passing url from the promise in the right way 2019-02-13 09:38:40 +01:00
Fabio Manganiello 34e2dffe99 Catching music stop events both on track_playback_ended and playback_state_changed 2019-02-13 00:58:40 +01:00
Fabio Manganiello 8a9c868f77 Bringing more consistency in music.mpd.js regardless of the backend 2019-02-13 00:50:58 +01:00
Fabio Manganiello 0697598a86 Fixed music.js widget as well for the new mopidy backend 2019-02-13 00:32:14 +01:00
Fabio Manganiello 3190d3c6c8 Fixing music.mpd.js both for mpd and mopidy backends 2019-02-13 00:27:36 +01:00
Fabio Manganiello f0f6d43990 Using the right naming for length and elapsed variables 2019-02-12 23:59:13 +01:00
Fabio Manganiello 71c6ba2d34 More compatibility between TCP-based mpd and websocket-based mopidy backends when it comes to how the track time is reported 2019-02-12 23:48:18 +01:00
Fabio Manganiello 77a76370a5 Returning flat representation for artist and renamed 'name' attribute for consistency with the mpd backend 2019-02-12 23:24:16 +01:00
Fabio Manganiello 1c4edf93bf Another typo 2019-02-12 23:19:36 +01:00
Fabio Manganiello 97855b1535 state might not always be provided in a music event 2019-02-12 23:11:37 +01:00
Fabio Manganiello 18d2c51b4e Forgot an enumerate 2019-02-12 23:08:48 +01:00
Fabio Manganiello e5c169a549 on_message requires two arguments 2019-02-12 23:00:16 +01:00
Fabio Manganiello 6024eddd2d on_open requires ws as a parameter 2019-02-12 22:58:22 +01:00
Fabio Manganiello c18515bd3c Few more fixes on mopidy backend 2019-02-12 22:57:09 +01:00
Fabio Manganiello ee3df8fe8c Switched mopidy backend from websockets to websocket-client 2019-02-12 22:52:29 +01:00
Fabio Manganiello b555777cc8 Use another event loop for the synchronous websocket communication method 2019-02-12 20:49:10 +01:00
Fabio Manganiello 73d7e9a3ef Fixes on mopidy backend 2019-02-12 20:45:40 +01:00
Fabio Manganiello 148d25f1cb Added mopidy backend functionalities 2019-02-12 20:34:17 +01:00
Fabio Manganiello 7b99842225 Added draft for mopidy backend over websocket 2019-02-12 17:29:24 +01:00
Fabio Manganiello f68efc0d68 Attempt to support subtitles on Chromecast media too 2019-02-12 11:13:19 +01:00
Fabio Manganiello 5cbd0fdfe7 Added support for VTT subtitles and subtitles toggling both in local and browser media players 2019-02-12 01:30:55 +01:00
Fabio Manganiello 41c34b4bc5 Attempt to support subtitle tracks in web player 2019-02-11 18:46:25 +01:00
Fabio Manganiello 34f0264d5e Subtitles support
- Added support for local and OpenSubtitles media subs
- Added management of media events in web panel
2019-02-11 00:55:20 +01:00
Fabio Manganiello 630850ee9a Reset the connection to a Snapcast server if it starts failing 2019-02-10 11:08:04 +01:00
Fabio Manganiello cd49f22d5c Introduced floating panel with options on element click instead of the double-click-to-play logic on media elements 2019-02-09 01:53:17 +01:00
Fabio Manganiello e2b0bf8462 More consistent management of media devices icons and added devices refresh button 2019-02-08 19:48:18 +01:00
Fabio Manganiello b3f2974c4c Support for streaming media to browser 2019-02-08 00:43:43 +01:00
Fabio Manganiello 9ec3365413 Support for media streaming over internal HTTP server
Dropped the additional node.js dependency of localstream and relied
instead on a built-in solution to stream files
2019-02-07 14:27:14 +01:00
Fabio Manganiello d15b21ddfa Added support for remote cast on the web media panel 2019-02-06 09:47:00 +01:00
Fabio Manganiello d297b5cc42 Trying to make a more resiliant assistant error handling 2019-02-05 11:59:04 +01:00
Fabio Manganiello caa48ad056 Better error handling on the assistant 2019-02-05 11:26:03 +01:00
Fabio Manganiello 63b423cf75 Refactored mplayer and omxplayer under the same media player 2019-02-02 00:06:28 +01:00
Fabio Manganiello 2d6dfc86ac typo 2019-01-30 10:04:42 +01:00
Fabio Manganiello 2956a9ca63 Restart the assistant connection on error 2019-01-30 09:21:35 +01:00
Fabio Manganiello 7a80cd08ce Handling dashboards widget configuration as a list instead of a hash to preserve the order of the widgets 2019-01-28 23:14:12 +01:00
Fabio Manganiello e1920700ec Handle backend stop/disconnection on MQTT 2019-01-18 04:10:27 +01:00
Fabio Manganiello 122978c6f0 Support for extra args/kwargs passed to light.hue actions 2019-01-19 23:23:58 +01:00
Fabio Manganiello 2b38f1b03f Added alarm, timer and error event handlers on assistant backend 2019-01-19 01:55:32 +01:00
Fabio Manganiello 03bdf5c547 Implemented get_timeout/get_timeouts/get_interval/get_intervals util methods 2019-01-14 20:44:40 +01:00
Fabio Manganiello f38b2db273 Fixed interaction with modal dialogs to prevent browser race conditions when touchscreen events are involved 2019-01-13 23:45:03 +01:00
Fabio Manganiello 2d8b2ba55a Removed pp- prefix from the name of the spawned processes and threads 2019-01-13 20:41:15 +01:00
Fabio Manganiello 3587fa7cb4 Force music.mpd plugin reload when the mpd backend fails to get the state 2019-01-12 02:15:24 +01:00
Fabio Manganiello 78d44364cf Casting data to number whenever possible on FeedUpdateEvent as well 2019-01-12 01:58:35 +01:00
Fabio Manganiello ca855fce5d Improved Adafruit IO data handling 2019-01-12 01:38:17 +01:00
Fabio Manganiello 1087dae197 Added Adafruit IO backend 2019-01-12 01:07:38 +01:00
Fabio Manganiello fbf3600e91 Setting thread and process names properly through prctl 2019-01-10 23:45:13 +01:00
Fabio Manganiello 56c7258c74 Setting names for threads 2019-01-10 23:08:29 +01:00
Fabio Manganiello 0bbfaf4498 If the mpd frontend receives an empty PlaylistChangeEvent, trigger an initPlaylist to update the playlist 2019-01-10 22:27:44 +01:00
Fabio Manganiello a349b45ba4 Removed get_plugin utils method from web server, it messes up with also with the reentrant locks as it runs in another process. Refactored Snapcast frontend to get the backend hosts asynchronously through a plugin method 2019-01-10 11:52:39 +01:00
Fabio Manganiello c1b05226a9 Made the mpd backend a bit more resiliant 2019-01-10 01:28:12 +01:00
Fabio Manganiello 6150e07fc9 Prevent toggle button id clash because of Snapcast using the MAC address of a device as a client (and therefore the same client connected to multiple servers may lead to inconsistent behaviour) 2019-01-10 00:29:22 +01:00
Fabio Manganiello 89ea4798bf Restored retry logic in mpd backend 2019-01-09 22:20:01 +01:00
Fabio Manganiello 156e2e8b5a Don't go crazy with plugin reload logic in the mpd backend in case of corrupted received messages 2019-01-09 22:05:53 +01:00
Fabio Manganiello 464f84805f Added empty __init__.py to lib module 2019-01-09 15:13:10 +01:00
Fabio Manganiello 43ff0d4e25 Added hooks on light.hue web panel tab to synchronize light statuses with LightStatusChangeEvent events 2019-01-09 15:08:16 +01:00
Fabio Manganiello d50d92e99e Added Philips Hue lights backend to monitor status changes to the lights 2019-01-09 09:21:48 +01:00
Fabio Manganiello 9ba7a68578 Fixed modal height and positioning on screen 2019-01-08 19:23:06 +01:00
Fabio Manganiello 80bd5b684c Added support for setting/changing group streams on Snapcast 2019-01-08 17:43:20 +01:00
Fabio Manganiello 19eab381ae Weird Jinja bug broke the web panel load when using JSON parse, had to refactor it a bit to fix it 2019-01-08 13:53:21 +01:00
Fabio Manganiello d91e494940 Added group and host modals and settings to Snapcast UI 2019-01-08 12:54:33 +01:00
Fabio Manganiello 382866b1a4 Added content to Snapcast group modal 2019-01-08 10:13:13 +01:00
Fabio Manganiello fd8c3bb846 Connected the wires between Snapcast backend and frontend 2019-01-08 01:47:16 +01:00
Fabio Manganiello a346442246 Draft for Snapcast UI style 2019-01-07 16:50:51 +01:00
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