Commit graph

835 commits

Author SHA1 Message Date
Fabio Manganiello 212cfb63c4 Lazy initialization of WeMo environment 2019-01-11 19:58:43 +01:00
Fabio Manganiello 33fd226fa1 Don't throw the exception if a certain Snapcast host is not reachable 2019-01-11 11:50:37 +01:00
Fabio Manganiello 29be2945cc Log trace before attempting a Snapcast connection 2019-01-11 11:46:13 +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 a190184b0c Using an auxiliary map to keep track of the playing hosts to prevent errors when the items are removed by the worker threads while iterating them 2019-01-10 18:14:41 +01:00
Fabio Manganiello 2c8099e7ae Apply stream name filtering logic also to HTTP streams 2019-01-10 18:01:24 +01:00
Fabio Manganiello f156e9c199 Refactored plugin so that errors are properly returned up the stack, client connections are lazy and re-initialized upon error 2019-01-10 17:51:33 +01:00
Fabio Manganiello 8759dafa0e Let plugin fail if unable to retrieve the status, so it can rely on the automatic reload mechanism instead of swallowing the error 2019-01-10 17:28:49 +01:00
Fabio Manganiello abe80db47e Changed default for exclude_local from True to False 2019-01-10 17:25:25 +01:00
Fabio Manganiello c619d89fa4 Added method to programmatically get the list of active Snapcast connections 2019-01-10 17:22:52 +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 544979e7ff - Added position argument to music.mpd.add
- Added RSS feed parser plugin
2019-01-09 18:43:13 +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 7c02c70663 Version bump 0.9.3 -> 0.9.4 2019-01-08 19:24:17 +01:00
Fabio Manganiello 9ba7a68578 Fixed modal height and positioning on screen 2019-01-08 19:23:06 +01:00
Fabio Manganiello 3c385a601f Exposing backend hosts and ports as both lists and JSON on Snapcast plugin 2019-01-08 18:24:59 +01:00
Fabio Manganiello 80bd5b684c Added support for setting/changing group streams on Snapcast 2019-01-08 17:43:20 +01:00
Fabio Manganiello 35292968ed Made get_plugin lock reentrant 2019-01-08 16:33:57 +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 7aefe4e520 More resilient logic in case actions in a procedure return null responses 2019-01-07 00:07:45 +01:00
Fabio Manganiello bbc3a9e82a Fixed Snapcast status method 2019-01-06 23:46:52 +01:00
Fabio Manganiello 461362f792 mset signature now compatible both with redis-py < 3.0 and >= 3.0 2019-01-06 23:46:18 +01:00
Fabio Manganiello efad5a2bd7 Added Snapcast backend 2019-01-06 19:19:30 +01:00
Fabio Manganiello 2fba3109b3 Wrapped sample response in codeblock 2019-01-06 12:56:30 +01:00
Fabio Manganiello e97ce5d676 Added Snapcast plugin 2019-01-06 02:19:56 +01:00
Fabio Manganiello cb13098c4f Moved initial print statement inside start method to make sure that it's properly caught by the logging configuration 2019-01-03 13:09:12 +00:00
Fabio Manganiello 240abb627d Fix old Spotify playlists URI format 2019-01-03 10:37:16 +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 5a1169d8b8 Wrapped stdout and stderr under the same application logger 2019-01-02 11:38:21 +00: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 09c1598829 More flexible management for included config files paths 2018-12-30 20:18:55 +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 699fa92c5e Added HomeSeer plugin 2018-12-28 09:55:09 +01:00
Fabio Manganiello f9f43964a2 Support for stream names 2018-12-28 00:30:25 +01:00
Fabio Manganiello fae45d8ca3 Returning only the real part of the FFT 2018-12-27 22:47:44 +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 2e82651dbf Expressed triangular wave as a function of the associated sawtooth-shape wave 2018-12-27 17:33:05 +01:00
Fabio Manganiello debf9a017b Sound plugin moved back to __init__ for sake of better readthedocs generation 2018-12-27 17:26:16 +01:00
Fabio Manganiello cff4563dae Rewritten Pushbullet backend using pushbullet.py for better stability 2018-12-27 02:29:44 +01:00
Fabio Manganiello 56ff58d06b Better sound release logic 2018-12-27 01:10:45 +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 f2d2315610 Extended Sound class docstring 2018-12-26 23:16:37 +01:00
Fabio Manganiello 3598d7fcd5 Support for multiple sound waves (triangular, square and sawtooth) 2018-12-26 23:14:52 +01:00
Fabio Manganiello 3b681bbf57 Added played files/notes in stream in query_streams 2018-12-26 16:58:41 +01:00
Fabio Manganiello 3554968468 Support for multiple sounds on the same stream 2018-12-26 16:10:14 +01:00
Fabio Manganiello c2544524e1 Added missing docstring line 2018-12-25 19:26:59 +01:00
Fabio Manganiello 2fb5e5abc6 Support for mixes of multiple sounds 2018-12-25 19:26:08 +01:00
Fabio Manganiello d89184358a Support for playback control for individual sound streams 2018-12-25 17:31:20 +01:00
Fabio Manganiello 3baf0b1589 Initial support for playing multiple sounds to the same stream 2018-12-24 18:58:44 +01:00
Fabio Manganiello 3d2636b09c Further split between sound and core modules 2018-12-24 17:15:29 +01:00
Fabio Manganiello 65465e3a18 - Refactored the class sound out of the plugin module
- More robust stream naming and index assignment logic
2018-12-24 17:12:11 +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 755df6284a Added missing reference to completed_callback_event 2018-12-23 23:43:12 +01:00
Fabio Manganiello c2cf0b5f74 Support for polyphonic synthetic sounds in sound plugin 2018-12-23 23:29:52 +01:00
Fabio Manganiello 7a5657778e Basic support for synth sounds in sound plugin 2018-12-22 01:47:52 +01:00
Fabio Manganiello 00dacc456c A more robust logic for getting the default sound devices 2018-12-21 16:52:52 +01:00
Fabio Manganiello e2f7213697 Don't fail hard if it was not possible to get the ical content 2018-12-20 16:47:07 +01:00
Fabio Manganiello b3ffb29726 Don't extend calendar events will null values 2018-12-20 16:40:14 +01:00
Fabio Manganiello 8d497b0be7 Fixed reference to libtorrent dependency as the pip URL is broken 2018-12-20 01:04:50 +01:00
Fabio Manganiello a1f640ce0a Added support for config include files to Docker images too 2018-12-20 01:04:28 +01:00
Fabio Manganiello 725b3dd672 Included reference to the included files in Config 2018-12-19 23:39:41 +01:00
Fabio Manganiello eec20ee109 Missed cast to str upon pidfile write 2018-12-19 21:24:39 +01:00
Fabio Manganiello fb75dc323e Added pidfile option to the main 2018-12-19 21:15:06 +01:00
Fabio Manganiello 44d24b42d1 Force python3 on the Dockerfile CMD 2018-12-18 22:31:24 +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 6a9ddb9e53 Made config relative paths and include files expansion more robust 2018-12-19 09:19:58 +01:00
Fabio Manganiello 949d9cd619 Fixed platydock rm command 2018-12-19 02:22:10 +01:00
Fabio Manganiello 01f020c203 Version bump 0.9.2 -> 0.9.3 2018-12-19 02:08:57 +01:00
Fabio Manganiello 73d7441d26 Added platydock, a helper to manage Platypush instances as Docker containers 2018-12-19 02:08:13 +01:00
Fabio Manganiello a226aad669 Added python-dateutil requirement 2018-12-19 00:09:21 +01:00
Fabio Manganiello f9b23afbb6 Fixed typo on main.db 2018-12-18 22:20:33 +01:00
Fabio Manganiello 56b48a81b7 Reverted the new config file path expansion logic as it breaks include directives 2018-12-18 22:16:15 +01:00
Fabio Manganiello 12557702dd - cfgfile should expand the home directory ~
- Don't fail hard if failed to create logs directory
2018-12-18 18:46:07 +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 8fe4d77e3d Made requests parsing more robust against messages with target not set (e.g. messages received over HTTP API) 2018-12-18 14:59:10 +01:00
Fabio Manganiello 13463420d9 Made Redis bus/local bus choice more flexible 2018-12-18 12:21:55 +01:00
Fabio Manganiello 7586412ded Serial plugin extended with a general purpose read() method - to communicate for e.g. Espruino and compatible devices 2018-12-16 23:14:34 +01:00
Fabio Manganiello 28223cab30 Only import sounddevice when needed 2018-12-16 17:29:45 +01:00
Fabio Manganiello abd88d0a71 recplay default blocksize should be the configured/default output blocksize 2018-12-16 17:23:26 +01:00
Fabio Manganiello c054d04f2d Added configurable input and output device blocksize to sound device plugin 2018-12-16 17:11:05 +01:00
Fabio Manganiello e049d5483e Added blocksize to sound.record 2018-12-16 16:58:33 +01:00
Fabio Manganiello be43c3ac21 Changed default sound device to index 0 as 'default' is not present on all the systems 2018-12-16 16:34:40 +01:00
Fabio Manganiello 20a779bd8f Replaced if not references with if <var> is not None 2018-12-16 16:24:45 +01:00
Fabio Manganiello f7576dcb7f Added support for audio pass-through to sound plugin 2018-12-16 16:15:45 +01:00
Fabio Manganiello be98dcde6a Added sound device plugin 2018-12-15 01:18:48 +01:00
BlackLight e89046f12a Added max_results to YouTube search 2018-12-12 23:03:17 +01:00
BlackLight 9b0a72269a typo 2018-12-12 22:52:51 +01:00
BlackLight b7603ba166 Mapping YouTube API responses to the internal simpler format recognized by OMXPlayer plugin 2018-12-12 22:46:32 +01:00
BlackLight 679cad53b5 Added YouTube plugin that leverages the YouTube API; Replaced OMXPlayer search references to the old HTML parser withe new YouTube plugin 2018-12-12 22:33:41 +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 791c36f5df More tolerance on json.loads() in case the parsed value from the request context is not a string 2018-12-03 23:04:23 +01:00
Fabio Manganiello 4a148971b4 Allow non-string values to be passed through a request context as well 2018-12-03 22:52:25 +01: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 f6dcd00848 Version bump 0.9.1 -> 0.9.2 2018-12-01 19:44:41 +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 abbd8409ca Run event hook actions in another thread 2018-11-28 01:01:16 +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 c2be1cf6e8 Enforced cast to string for any object posted to the Redis bus 2018-11-20 14:18:58 +00:00
Fabio Manganiello 68dcdf8ccd Enforced cast to string for any object posted to the Redis bus 2018-11-20 14:14:59 +00:00
Fabio Manganiello bb966f123f Added back and forward methods to Chromecast plugin 2018-11-13 23:23:14 +01:00
Fabio Manganiello 025309cae8 Fixed Chromecast media_controller methods 2018-11-13 23:17:51 +01:00
Fabio Manganiello 632da318b1 Expanded Chromecast plugin 2018-11-13 23:09:19 +01:00
Fabio Manganiello 6fcc3a2397 Support for YouTube media in Chromecast plugin 2018-11-13 20:20:55 +01:00
Fabio Manganiello 26f3842724 Added support for Plex to Chromecast 2018-11-13 01:29:24 +01:00
Fabio Manganiello 42053dcf3b Expanded Plex plugin 2018-11-12 23:23:21 +01:00
Fabio Manganiello 1459630661 Added Plex and Chromecast plugins 2018-11-12 16:50:20 +01:00
Fabio Manganiello 9a88f85cda Expanded config example 2018-11-11 12:17:14 +01: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 fc3f53f32b Retry logic for getting mpd status 2018-11-07 18:04:37 +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 cbfcb76c21 volup/voldown fix for mpd plugin 2018-11-04 01:35:33 +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 e2ff62f15d Refactored file plugin 2018-11-02 13:57:24 +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 bf52304758 Fixed ReadTheDocs 2018-11-01 19:42:43 +01:00