Commit graph

405 commits

Author SHA1 Message Date
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 9923742e74 Prevent plugins from breaking in case of concatenations with None elements 2018-05-14 19:06:11 +02:00
Fabio Manganiello 21ac8d7899 Build the address as street + street_number if they are both available 2018-05-13 20:15:25 +00:00
Fabio Manganiello 6c0dc9a4dc Added GMaps geocode plugin and geo update event 2018-05-13 21:42:26 +02:00
Fabio Manganiello 0878e5a3d1 Time to give Platypush a version bump 2018-05-13 14:32:25 +02:00
Fabio Manganiello d0ca6b8e93 Replaced the YouTube search results parsing logic that relied on BeautifulSoup with a simpler logic that only uses regexes to parse video results. It greatly improves the performance of YouTube video search and removes the dependency on BeautifulSoul and lxml 2018-05-13 14:29:31 +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 598c917eda Added Switchbot plugin 2018-05-08 15:51:47 +02:00
Fabio Manganiello b94764436d Added WeMo switch plugin for web panel 2018-05-08 09:59:43 +02:00
Fabio Manganiello 36c9437172 Added method to get WeMo available devices 2018-05-08 09:14:02 +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 27d5f674c5 Added __init__.py 2018-05-06 00:17:18 +02:00
Fabio Manganiello 31f2cbf8b1 Added __init__.py 2018-05-06 00:14:42 +02:00
Fabio Manganiello 0252cc03c4 Added __init__.py 2018-05-06 00:12:57 +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 2f6565ec87 Added support for if-else constructs in procedures 2018-04-29 22:25:31 +02:00
Fabio Manganiello ef75339fef Fixed missing output= argument 2018-04-29 16:38:05 +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 cfe78dfa23 Fixed name clash 2018-04-29 16:19:26 +02:00
Fabio Manganiello 4462f9590f Forgot an import 2018-04-29 16:18:27 +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 e9425236a9 Removed additional file_name parameter 2018-04-26 15:54:40 +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 7fb0a5bb55 Set download_dir only if specified 2018-04-25 12:03:15 +02:00
Fabio Manganiello efe4f32409 Implemented torrent search, download and streaming in OMXPlayer plugin 2018-04-25 11:29:03 +02:00
Fabio Manganiello 34405b96f6 Removed unused mandatory parameters for VideoEvent constructor 2018-04-25 01:04:51 +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 77da94769e Implemented file search method in OMXPlayer plugin 2018-04-24 21:28:42 +02:00
Fabio Manganiello e5e1270380 Exposed a global context.get_bus() method to allow plugins to send events to the main bus 2018-04-24 20:07:16 +02:00
Fabio Manganiello 9052e18f9c Commented OMXPlayer handlers initialization part as the plugin object has no access to the bus 2018-04-24 14:56:31 +02:00
Fabio Manganiello 9492243fd5 Transform a [0,100] volume range in the volume range expected by the OMXPlayer API 2018-04-24 14:54:01 +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 c4401b25be Reload logic on media.ctrl in case the connection with the media plugin has been reset 2018-04-22 23:39:23 +02:00
Fabio Manganiello 6ef97e9ddc Assign the recursive output of _thread_func to response to make sure that the latest response is always returned - that means the successful response in case the previous one was a failure 2018-04-22 21:26:53 +02:00
Fabio Manganiello 60c9c7476e Fixed a missing parenthesis 2018-04-20 15:20:23 +02:00
Fabio Manganiello a783efd0d7 Added status method to media.ctrl plugin 2018-04-20 15:18:20 +02:00
Fabio Manganiello ded4ac3b95 - Introduced a more consistent Enum for managing playing states across different players
- media.ctrl can now spot which player is playing and control only the right one
- Extended video.omxplayer plugin methods
2018-04-20 12:17:27 +02:00
Fabio Manganiello cc506b3340 Final (?) regex fix 2018-04-20 10:04:29 +02:00
Fabio Manganiello eaec9ac51f Final (?) regex fix 2018-04-20 10:00:01 +02:00
Fabio Manganiello 8e5a27d74c Regex fix 2018-04-20 09:52:55 +02:00
Fabio Manganiello 2459506964 Regex typo 2018-04-20 09:41:52 +02:00
Fabio Manganiello 7e119654f9 Retry with the next YouTube video until some of the ones from the search can be played without errors 2018-04-20 09:38:04 +02:00
Fabio Manganiello 4db2f62c17 typo #2 2018-04-20 09:30:19 +02:00
Fabio Manganiello 3f3ec08af2 typo 2018-04-20 09:27:57 +02:00
Fabio Manganiello 6135089d60 Encoding POST data as bytes 2018-04-19 23:46:47 +02:00
Fabio Manganiello 02f6e163bf Variable typo 2018-04-19 23:42:10 +02:00
Fabio Manganiello 51d6bec51c Forgot an import 2018-04-19 23:40:49 +02:00
Fabio Manganiello 14aa4f6454 Implemented torrent search 2018-04-19 23:35:19 +02:00
Fabio Manganiello 95b537dee4 s/music/video/ 2018-04-19 22:45:40 +02:00
Fabio Manganiello 2fdb8c50da Added support for video events 2018-04-19 22:42:28 +02:00
Fabio Manganiello 84ab37e44e Added YouTube search only method 2018-04-19 10:18:46 +02:00
Fabio Manganiello 23095bc18d Log the YT videos being played/searched 2018-04-19 00:39:59 +02:00
Fabio Manganiello 61e851dd8e Fixes 2018-04-19 00:32:20 +02:00
Fabio Manganiello 12295f2f77 youtube_search_and_play moved back to video.omxplayer 2018-04-19 00:30:43 +02:00
Fabio Manganiello a58fa23173 Websocket client-side timeout: 5 -> 30 seconds 2018-04-18 10:13:53 +02:00
Fabio Manganiello d2b881fee7 YouTube search and play code moved to media.ctrl plugin 2018-04-18 00:50:19 +02:00
Fabio Manganiello ab19e258bb Implemented YouTube videos search and play with support for queuse 2018-04-18 00:23:12 +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 2186336bbc Added plugin for supporting MCP3008 ADC for analog sensors 2018-04-17 01:03:02 +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 f717315136 Added music.mpd.searchaddplaylist method 2018-04-15 16:31:23 +02:00
Fabio Manganiello 87fb8855b7 - Show Spotify results first from MPD search, if available
- More granular calculation of the match score
2018-04-15 11:15:43 +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 82200bb150 Better logging management, solves #26 2018-04-14 01:00:00 +02:00
Fabio Manganiello e83b21ad33 No outline on the ZeroBorg div when focused 2018-04-13 23:45:29 +02:00
Fabio Manganiello b863213bd7 More rational management of ZeroBorg auto pilot mode together with sensor - no longer limited to gpio.sensor.distance alone, but including any kind of GpioSensorPlugin. Thresholds, timeouts and actions are configured in config.yaml instead of being hardcoded 2018-04-13 15:49:10 +02:00
Fabio Manganiello b597097be3 Better management of motor power settings in gpio.zerborg - no more offsets multiplied for max_power and hardcoded power coefficients, just pass the motor power in the configuration 2018-04-13 15:12:31 +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 25e601ca4d More granular control of the motors left/right directions 2018-04-12 17:18:32 +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 248b1c37b2 typo 2018-04-09 02:04:07 +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
Fabio Manganiello 2be2677963 Added light sensor backend 2018-04-06 17:19:08 +02:00
Fabio Manganiello 10a78a1f21 Frontend plugin for Philips Hue 2018-03-27 23:13:47 +02:00
Fabio Manganiello 7dd3bb9915 Always call stop_playback even when there is no user request 2018-03-26 00:32:03 +02:00
Fabio Manganiello 1f2b5432b3 Extended Pi camera options 2018-03-24 14:43:18 +01:00
Fabio Manganiello b5567c289f - Added Pi camera stream over TCP backend
- More consistent event handling for the pushtotalk assistant
- Added general GPIO module
2018-03-24 03:05:46 +01:00
Fabio Manganiello a14d6fe652 - Stop assistant playback only if there was a user request. This
prevents a PortAudio write on input-only stream error in the Assistant
SDK, see https://github.com/googlesamples/assistant-sdk-python/issues/185

- Make sure that user_request is always defined before returning it

- Use assistant.google.pushtotalk as a fallback if assistant.google is
not configured/available
2018-03-21 23:21:41 +01:00
Fabio Manganiello d5f73023ea Support for custom hotword detection through Snowboy 2018-03-20 23:34:36 +01:00
Fabio Manganiello 6309f5301e - Power offsets now passed through conf instead of source code
- More robust handling of temporary sensor failures
2018-03-17 17:16:20 +01:00
Fabio Manganiello dcd4f9eddf Threshold obstacle distance increased to 40 cm 2018-03-06 02:44:44 +01:00
Fabio Manganiello 8674626934 - Implemented auto_toggle command for Zeroborg
- Recalibrated power offsets
2018-03-05 23:27:20 +01:00
Fabio Manganiello 8b733fb859 - Added IR sensor backend
- Fixed default power offsets
- Changed threshold distance for ultrasound sensor
- Fixed power multiplier coefficient
2018-03-04 17:55:48 +01:00
Fabio Manganiello 0f97678a78 Throttling power 2018-03-03 03:24:08 +01:00