Commit Graph

748 Commits

Author SHA1 Message Date
Fabio Manganiello e79430cdc4 Implemented tolerance threshold for lat/long/alt in GPS backend 2019-08-13 22:25:28 +02:00
Fabio Manganiello 39b0c3b741 Added GPS backend 2019-08-03 02:06:06 +02:00
Fabio Manganiello c9dc1aac44 _last_read should always contain the full output of the plugin, not
the filtered output
2019-08-01 23:41:46 +02:00
Fabio Manganiello a3271f0522 Only return the sensor data whose value has changed on the envirophat
backend
2019-08-01 23:33:36 +02:00
Fabio Manganiello 675f899b5f FIX: get_measurement should return a dict not a set 2019-08-01 23:17:04 +02:00
Fabio Manganiello 72d1b3cd2a Filter out only selected sensors on the enviropHAT backend 2019-08-01 22:47:34 +02:00
Fabio Manganiello bdadd2061c Added EnviropHAT support 2019-08-01 22:40:41 +02:00
Fabio Manganiello 1ca7feb506 Small fix for the font size on mobile 2019-07-28 23:32:52 +02:00
Fabio Manganiello 1f2f293778 Redirect mercury-parser.js stderr to stdout. Moreover, if an error occurs while parsing a link from an RSS feed we should report the link that raised the error, not the URL of the parent feed 2019-07-25 16:34:00 +00:00
Fabio Manganiello 44e27e6c62 Log the link we are trying to parse (useful for debugging parsing issues) 2019-07-25 18:23:28 +02:00
Fabio Manganiello 34433a363b Call sound.stop_recording upon audio stream stop so we won't have hanging streams with no clients connected 2019-07-25 14:01:09 +02:00
Fabio Manganiello 6aaa2fa1ea extract_content is supposed to be a boolean 2019-07-25 01:09:16 +02:00
Fabio Manganiello 5293f5b203 #73: Implemented wrapper plugin for the new Node.js mercury-parser.
As the Mercury reader web API is deprecated, and the only available
implementation is the open source mercury-parser, node, npm and
@postlight/mercury-parser have to be added as dependencies for the
http.webpage plugin (or at least for the `simplify` action).
2019-07-24 19:02:53 +02:00
Fabio Manganiello 43ca3a6f94 Added support for streaming audio from an input source over HTTP 2019-07-23 18:22:00 +02:00
Fabio Manganiello 426f064459 "Remember me" options on session should leave the cookie for a longer
time (e.g. one year), it should be browser-session-only otherwise
2019-07-23 00:31:17 +02:00
Fabio Manganiello a16fc65d37 Try to load the dev version of vue.js if available 2019-07-19 20:00:39 +02:00
Fabio Manganiello 57712b3693 Be more robust in case of Mercury API failures while parsing RSS feeds. TODO: the Mercury API has now been retired and replaced by a library, that however is only available for Node.js. Figure out how to wrap the new library in Python 3 2019-07-19 15:00:06 +00:00
Fabio Manganiello f12c6db34f Added camera web panel 2019-07-19 15:20:48 +02:00
Fabio Manganiello f86e2eb5a7 Implemented settings page and finalized multi-user support 2019-07-19 00:50:52 +02:00
Fabio Manganiello cd9bdbb1c8 Fixed undefined reference 2019-07-17 14:57:50 +02:00
Fabio Manganiello a60e89806f Fixed undefined reference 2019-07-16 22:43:27 +02:00
Fabio Manganiello cc61032bec Fixes for readthedocs build 2019-07-16 22:38:42 +02:00
Fabio Manganiello 95b5820783 Fixes for readthedocs build 2019-07-16 22:29:23 +02:00
Fabio Manganiello 9c4646bed5 Fixed documentation and added missing docs to the index 2019-07-16 20:28:00 +02:00
Fabio Manganiello 1c1ecc18df Support for multi-users and authentication for HTTP pages 2019-07-15 14:12:00 +02:00
Fabio Manganiello 674c164fc1 Fixed pylint warnings 2019-07-13 22:36:45 +02:00
Fabio Manganiello 8b2c6d333e Lint warnings fixed 2019-07-13 14:22:43 +02:00
Fabio Manganiello 3c3496b19a Revert "The active-glow animation takes too much CPU on music.mpd"
This reverts commit 4c3cd2fcf2.
2019-07-13 12:27:43 +02:00
Fabio Manganiello 7666e8cb51 Including vue.min.js instead of vue.js 2019-07-13 12:25:02 +02:00
Fabio Manganiello 2999e47a0f Run the hotword detected sound in another thread, or it's likely to mess up with the timing of the hotword-assistant interaction 2019-07-12 17:44:59 +02:00
Fabio Manganiello fe96940744 detect_sound should support relative and ~ paths 2019-07-12 14:55:14 +02:00
Fabio Manganiello 8d660f27d4 Support for multiple hotwords, configurations and assistant languages in Snowboy backend 2019-07-12 14:53:12 +02:00
Fabio Manganiello 5766367402 Rewritten snowboy and Google push-to-talk plugins to make them a better replacement for the deprecated google-assistant-library 2019-07-11 22:54:33 +02:00
Fabio Manganiello 792c24700c Refactored requirements to only include mandatory ones and added style reference to assistant in dashboard.html 2019-07-10 12:18:53 +02:00
Fabio Manganiello 24d3810e44 Added NFC backend 2019-07-09 01:44:31 +02:00
Fabio Manganiello 0a97bb2345 Better style for webpanel switches 2019-07-08 15:21:13 +02:00
Fabio Manganiello b50a52acf2 Sort articles in descending order when querying from RSS news web widget 2019-07-08 09:26:38 +02:00
Fabio Manganiello 4c3cd2fcf2 The active-glow animation takes too much CPU on music.mpd 2019-07-08 00:58:02 +02:00
Fabio Manganiello c19251c6a1 Always reset carousel image width to auto before re-adjusting the size 2019-07-08 00:16:43 +02:00
Fabio Manganiello b2c31fcec6 Dashboard style improvements 2019-07-07 23:50:35 +02:00
Fabio Manganiello 42e5673192 Increased font size for widgets 2019-07-07 20:47:44 +02:00
Fabio Manganiello 09165ca0ff Dashboard rewritten in vue.js 2019-07-07 20:11:32 +02:00
Fabio Manganiello 8006f3688c Removed old gpio scripts 2019-07-02 16:27:13 +02:00
Fabio Manganiello 1e39d3a8d2 Return obj even when the metrics are undefined, or we will set this.metrics to undefined 2019-07-02 16:12:24 +02:00
Fabio Manganiello 75f7fbd67a Don't perform reads on the serial plugin when refreshing 2019-07-02 16:04:06 +02:00
Fabio Manganiello 0dac122db5 Style for the new sensors web plugin 2019-07-02 15:38:09 +02:00
Fabio Manganiello fb4af87967 Style for the new sensors web plugin 2019-07-02 15:23:41 +02:00
Fabio Manganiello 9c44d047ac Vue.set to set metrics object, array assignment won't be picked up by Vue listeners 2019-07-02 15:08:32 +02:00
Fabio Manganiello e82edc8338 Set metrics object through Vue.set 2019-07-02 15:02:44 +02:00
Fabio Manganiello be79d15faf Handle sensor event format correctly 2019-07-02 15:01:40 +02:00
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