Commit Graph

1632 Commits

Author SHA1 Message Date
Fabio Manganiello ab02d7e79c Calendar events can also be all day - in such a case parse the 'date' field instead of 'dateTime' 2018-06-13 00:54:59 +02:00
Fabio Manganiello 464ff1ff57 A more robust way to handle JSON serialization/deserialization on MQTT backend 2018-06-12 10:33:30 +02:00
Fabio Manganiello bdf862e6d2 get_data alias for get_measuremnt 2018-06-12 00:46:51 +02:00
Fabio Manganiello f8506d6d25 Added comment to explain the reasons for sudo in the switchbot plugin 2018-06-11 22:41:23 +02:00
Fabio Manganiello 1bc4c47df7 Imported ZeroBorg library with scope constructor as global import fails for some reason 2018-06-08 17:10:49 +02:00
Fabio Manganiello bb21595678 Called parent constructor in ZeroBorg plugin to make sure that the logger instance is initialized 2018-06-07 09:31:12 +02:00
Fabio Manganiello 4da74b1096 Refactored logging submodule 2018-06-06 20:09:23 +02:00
Fabio Manganiello 4c1cb9ae6b Added mkv to the supported media extensions 2018-06-02 21:56:46 +02:00
Fabio Manganiello bc3e100217 New general-purpose plugin for managing multiple calendar + support for ICal format 2018-05-30 15:59:10 +02:00
Fabio Manganiello 3fe70dd184 Implemented MQTT backend and plugin, see issue #56 2018-05-27 12:21:41 +02:00
Fabio Manganiello 96e3acb20f Added MPD play_if_paused and pause_if_playing methods 2018-05-25 18:04:37 +02:00
Fabio Manganiello 27b97e584f Added support for MIDI real-time events 2018-05-23 19:49:54 +02:00
Fabio Manganiello a8015addbf Only take the first component of formatted_address 2018-05-23 08:06:52 +00:00
Fabio Manganiello 3ce6cf8b41 Just use formatted_address from the Google geocode response instead of considering all the cases of address formatting 2018-05-22 21:43:21 +00:00
Fabio Manganiello 2c7880874d Logging geocode response 2018-05-22 21:34:06 +00:00
Fabio Manganiello f4da6ebb1b Redis plugin added and Redis backend made more robust to work also with single-quoted JSON-like strings returned by the Redis lib 2018-05-22 14:44:17 +00:00
Fabio Manganiello 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 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 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 27d5f674c5 Added __init__.py 2018-05-06 00:17:18 +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 ef75339fef Fixed missing output= argument 2018-04-29 16:38:05 +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 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 e9425236a9 Removed additional file_name parameter 2018-04-26 15:54:40 +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 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 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 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 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 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 2186336bbc Added plugin for supporting MCP3008 ADC for analog sensors 2018-04-17 01:03:02 +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 73c74654d1 - Better MPD filter management - you can now pass filters as arrays like
['artist', 'Led Zeppelin', 'title', 'Stairway To Heaven'] instead of
relying on one single type-filter pair

- Improved condition matching - don't skip the last condition token if
there are still event tokens to add
2018-04-14 23:58:48 +02:00
Fabio Manganiello e83b21ad33 No outline on the ZeroBorg div when focused 2018-04-13 23:45:29 +02:00
Fabio Manganiello 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 25e601ca4d More granular control of the motors left/right directions 2018-04-12 17:18:32 +02:00
Fabio Manganiello decadee00a Implemented music search from web panel 2018-04-12 13:04:56 +02:00
Fabio Manganiello 248b1c37b2 typo 2018-04-09 02:04:07 +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 10a78a1f21 Frontend plugin for Philips Hue 2018-03-27 23:13:47 +02: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
Fabio Manganiello da0d715d49 Getting distance synchronously 2018-03-02 16:02:04 +01:00
Fabio Manganiello df6790cde9 Changed default distance 2018-03-02 14:37:14 +01:00
Fabio Manganiello cf83f07f79 Implemented auto pilot with distance sensors 2018-02-26 11:31:06 +01:00
Fabio Manganiello a8254181b2 Fixed ZeroBorg power offsets 2018-02-26 01:01:07 +01:00
Fabio Manganiello 6508f0baf3 Zeroborg plugin 2018-02-25 23:45:31 +01:00
Fabio Manganiello 779a907ebd Made the ZeroBorg module Python3-friendly 2018-02-20 20:41:56 +01:00
Fabio Manganiello f16719f575 Added ZeroBorg plugin draft 2018-02-20 20:09:29 +01:00
Fabio Manganiello 40efb3f9c7 Support for selecting and playing tracks and playlists in web interface 2018-02-05 09:45:35 +01:00
Fabio Manganiello 1cab75757b - Support for playlist update events handling on MPD
- Support for playlist updates on the web interface
- Support for selecting and playing tracks in the web interface
2018-02-05 00:55:19 +01:00
Fabio Manganiello de2e50fefa Implemented support for track random seek 2018-01-31 10:35:14 +01:00
Fabio Manganiello 7cd15d35e1 Return new status on random and repeat calls 2018-01-31 01:39:04 +01:00
Fabio Manganiello 968b71e946 - Implemented support for shuffle, random and set volume on the UI
- Reduced the websocket ping poll frequency to 1 second
2018-01-31 01:32:07 +01:00
Fabio Manganiello 28bc4c748e UI improvements + support for MPD playlists and folders 2018-01-30 00:54:46 +01:00
Fabio Manganiello 6aec6380d8 MIMEBase import is needed here 2018-01-28 03:08:19 +01:00
Fabio Manganiello 6bfb6d934d Support for multiple attachments and binary application attachments in GMail 2018-01-28 02:59:19 +01:00
Fabio Manganiello 55eb689121 Support for RSS digest generation either in HTML or PDF format 2018-01-28 02:01:54 +01:00
Fabio Manganiello 834b700d5f Added GMail actions support, solves #49 2018-01-17 03:16:59 +01:00
Fabio Manganiello ac15e581ce Added last.fm scrobbler plugin, solves #21 2018-01-15 02:40:22 +01:00
Fabio Manganiello 4fa7a08006 Added mpd backend 2018-01-13 02:52:06 +01:00
Fabio Manganiello 76f7bbc529 Refactored HTTP request plugin and fixed bug on the plugin name 2018-01-12 15:18:06 +01:00
Fabio Manganiello 3c13625e63 Better logic for db inserts 2018-01-07 01:35:27 +00:00
Fabio Manganiello 32dcb0c829 Added database plugin, #43 2018-01-06 22:52:24 +01:00
Fabio Manganiello 6b31ed3b1a Added __init__.py 2018-01-06 11:10:55 +01:00
Fabio Manganiello 1df10bc97e Added HTTP requests plugin, #42 2018-01-05 20:00:15 +01:00
Fabio Manganiello 4c62133378 Updated README 2018-01-03 02:23:25 +01:00
Fabio Manganiello 08189653bb s/playlistload/load/ 2017-12-29 12:48:14 +01:00
Fabio Manganiello b6733b3e6a Also start playback when adding a playlist 2017-12-29 12:44:49 +01:00
Fabio Manganiello 26c3afee68 Implemented play_or_stop in mpd 2017-12-28 13:13:09 +01:00
Fabio Manganiello c830988e09 Added __init__ 2017-12-27 12:09:59 +01:00
Fabio Manganiello d727b28acf Syntax error 2017-12-27 12:02:47 +01:00
Fabio Manganiello aa506b20e2 Should import logging 2017-12-27 11:29:33 +01:00
Fabio Manganiello ec6f1b1457 Prevent player loops in case of dbus errors 2017-12-27 11:27:06 +01:00
Fabio Manganiello 7c55848651 Forgot a couple of selfs 2017-12-27 11:01:07 +01:00
Fabio Manganiello c184356f67 Added __init__.py 2017-12-27 10:37:15 +01:00
Fabio Manganiello eff046f1d1 Added __init__.py 2017-12-27 10:30:33 +01:00
Fabio Manganiello 92b691041e Added more general media control plugin, #10 2017-12-27 10:19:35 +01:00
Fabio Manganiello c201d725b7 Google Assistant plugin to programmatically start/stop conversation 2017-12-26 15:06:59 +01:00
Fabio Manganiello 6928e440bc Support for Flic button events 2017-12-24 13:15:37 +01:00
Fabio Manganiello 7a0295675c #20 Added TTS plugin 2017-12-22 03:14:19 +01:00
Fabio Manganiello bd5c80175f - Major refactoring.
- More consistent naming for many methods, plus added a more extensive doc.

- Refactored the entry points for the daemon and the pusher into two
  classes, easier to encapsulate and wrap into tests.

- Removed the local backend - managing the concurrency of two processes
  reading and writing on the same socket at the same time was too much,
  and its utility outside of the tests (which can have mock backends as
  well) is quite modest.

- Managing stop events on the bus. Still some work to do tho.

- Fixed several bugs.
2017-12-20 20:25:08 +01:00
Fabio Manganiello 4a04e51da7 Major refactoring #2 2017-12-18 01:10:51 +01:00
Fabio Manganiello 1a6d726b19 Passing arguments to the plugin 2017-12-17 16:41:52 +01:00
Fabio Manganiello 33c4d9fb52 s/platypush.response/platypush.message.response/g 2017-12-13 04:21:26 +01:00
Fabio Manganiello 462dc2f1c9 * Sending responses back on the backend channel
* Version bump
2017-12-13 04:14:46 +01:00
Fabio Manganiello 491c2cd571 * More consistent management of responses
* Better per-plugin/per-backend logging management
2017-12-13 03:37:28 +01:00
Fabio Manganiello f7202fd205 * PushbulletBackend.send_msg method refactored and removed pushbullet.py dependency
* Management of optional dependencies moved to setup.py
2017-12-12 20:14:02 +01:00
Fabio Manganiello 6c2ea3767c s/runbullet/platypush/g 2017-12-11 20:30:57 +01:00