Commit Graph

2017 Commits

Author SHA1 Message Date
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
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 48363c94e4 s/ModuleNotFoundError/ImportError/g 2018-02-20 22:58:13 +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 e8891f0c12 Filter implementation for music.mpd 2018-02-09 20:54:02 +01:00
Fabio Manganiello 0d2a1e5932 onopen logging message 2018-02-07 22:52:16 +01:00
Fabio Manganiello b675f631e9 - Websocket ping interval 1 -> 5 seconds
- JS client websocket reconnect logic
2018-02-07 22:14:38 +01:00
Fabio Manganiello c47d910465 Removed comma 2018-02-05 10:35:24 +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 9cf9135eae Making the mpd interface fit in a smaller screen without overflows 2018-02-01 01:12:47 +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 fc608317fd Give some breath to the websocket ping loop 2018-01-29 21:21:40 +01:00
Fabio Manganiello 07219bef89 Player style fixes 2018-01-29 21:18:31 +01:00
Fabio Manganiello 90f49b0964 Player style fixes 2018-01-29 21:15:57 +01:00
Fabio Manganiello 22e4a44fdb Fixed js glitch 2018-01-29 17:09:53 +01:00
Fabio Manganiello e007d26896 Version bump 2018-01-29 16:34:52 +01:00
Fabio Manganiello 75fac37984 Fixed tests 2018-01-29 16:34:00 +01:00
Fabio Manganiello 0ff5adc4c1 Removed swap file 2018-01-29 16:29:36 +01:00
Fabio Manganiello ae3ee8ada5 Music player styles 2018-01-29 16:28:32 +01:00
Fabio Manganiello 6ad7f85e76 A more clever way to get the static dirs 2018-01-29 15:08:29 +01:00
Fabio Manganiello 6ff1552063 Fixed websocket 2018-01-29 14:46:31 +01:00
Fabio Manganiello 72af7adb46 #51 first web panel iteration 2018-01-29 13:47:21 +01:00
Fabio Manganiello 615573f932 Changed format for HTTP backend requests to something more consistent 2018-01-28 14:49:59 +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 91dd975413 mkdir_p replaced with os.makedirs 2018-01-27 13:54:15 +01:00
Fabio Manganiello 22b3f8e9b9 Removed redundant variable 2018-01-27 04:46:28 +01:00
Fabio Manganiello a87b6cfaf0 Version bump 2018-01-27 04:37:34 +01:00
Fabio Manganiello 14afbcad3a Support for RSS feeds update events, solves #48 2018-01-27 04:32:44 +01:00
Fabio Manganiello 834b700d5f Added GMail actions support, solves #49 2018-01-17 03:16:59 +01:00
Fabio Manganiello d629fc897f Start the cron scheduler only if there are crons configured 2018-01-15 22:53:48 +01:00
Fabio Manganiello a16d92ae8e Version bump 2018-01-15 22:46:41 +01:00
Fabio Manganiello b9c4cefb59 Better format for crons 2018-01-15 22:44:57 +01:00
Fabio Manganiello 14b511034f Support for cron actions, solves #47 2018-01-15 22:37:01 +01:00
Fabio Manganiello f6d16366eb Changed assistant stop_conv logic on match 2018-01-15 13:37:48 +01:00
Fabio Manganiello 0e6de85b8d Added pylast to the optional dependencies;
Version bump.
2018-01-15 02:41:54 +01:00
Fabio Manganiello ac15e581ce Added last.fm scrobbler plugin, solves #21 2018-01-15 02:40:22 +01:00
Fabio Manganiello 632255d2dc typo 2018-01-15 01:43:35 +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 b1f42c22ae Added Booking.com endpoints automation 2018-01-11 19:31:44 +01:00
Fabio Manganiello 959296b15a Support for context variables and constants 2018-01-10 18:47:25 +01:00
Fabio Manganiello 19cfafb2c7 Making the HTTP poll events work 2018-01-10 03:14:27 +01:00
Fabio Manganiello d0759765b2 Removed booking module 2018-01-10 00:20:48 +01:00
Fabio Manganiello 2ea06f7708 Making JSON HTTP poll requests work 2018-01-09 18:44:45 +01:00
Fabio Manganiello c1ab3f5a14 google-assistant-library now requires device_model_id 2018-01-09 14:16:09 +01:00
Fabio Manganiello b074e03d45 - Support for workdir
- Prepared draft for HttpPoll backend
2018-01-09 01:27:19 +01:00
Fabio Manganiello ed28a2c3ec Include should occur only once in the file 2018-01-08 10:20:32 +01:00
Fabio Manganiello 7963b5e11f Support for include directive in config.yaml, #32 2018-01-08 10:08:55 +01:00
Fabio Manganiello d6807bd85b Version bump 2018-01-08 02:43:46 +01:00
Fabio Manganiello d4ef2bf59e Implemented for loops support in procedures, #44 2018-01-08 02:41:24 +01:00
Fabio Manganiello 252f503e4d Better management of the context and support for proper expression expansion from the context in the action execution through eval 2018-01-07 23:31:19 +01:00
Fabio Manganiello 2871583c75 Fixed events being triggered as priority even if they had no preset priority 2018-01-07 17:10:59 +01:00
Fabio Manganiello bad5ff339f Latest push received in the last 5 seconds instead of 2 2018-01-07 13:18:01 +01:00
Fabio Manganiello 305dcfe530 Version bump 2018-01-07 02:49:43 +01:00
Fabio Manganiello 3c13625e63 Better logic for db inserts 2018-01-07 01:35:27 +00:00
Fabio Manganiello 694d7ca62d Support for PushBullet events on notifications, #36 2018-01-07 00:58:03 +01:00
Fabio Manganiello ae8ba3fda1 Version bump 2018-01-06 22:53:08 +01:00
Fabio Manganiello 32dcb0c829 Added database plugin, #43 2018-01-06 22:52:24 +01:00
Fabio Manganiello dfee3f5004 Recursively expand the context of a request over the nested arguments 2018-01-06 12:40:22 +01:00
Fabio Manganiello 6b31ed3b1a Added __init__.py 2018-01-06 11:10:55 +01:00
Fabio Manganiello f83aedf0f1 Support for synchronous and asynchronous procedures 2018-01-06 00:21:25 +01:00
Fabio Manganiello b98fe01352 Implemented sequential execution of tasks in procedures, response context parsing and procedure response returned on the bus as well, #37 2018-01-05 23:20:39 +01:00
Fabio Manganiello b7854cb5dd Version bump 2018-01-05 20:10:18 +01:00
Fabio Manganiello 1df10bc97e Added HTTP requests plugin, #42 2018-01-05 20:00:15 +01:00
Fabio Manganiello 109805fd8d Don't stop the conversation on hook match if the hook match was a priority one 2018-01-05 10:09:02 +01:00
Fabio Manganiello 5461bf532c Copy the arguments before creating the action and re-create the action every time to make sure that the context is not polluted by previous executions 2018-01-04 23:10:53 +01:00
Fabio Manganiello fa34b05c6c Priority-based algorithm for hooks, solves #41 2018-01-04 19:19:56 +01:00
Fabio Manganiello 1581685f62 use_reloader=False on Flask to prevent the platypush daemon to be spawned twice 2018-01-04 17:34:25 +01:00
Fabio Manganiello 39f986a88d Fixed HTTP backend 2018-01-04 17:20:35 +01:00
Fabio Manganiello a476de81a8 Fixed procedure execution code 2018-01-04 16:11:54 +01:00
Fabio Manganiello 679a53b620 Version bump 2018-01-04 02:46:23 +01:00
Fabio Manganiello 20b07fb02f Made an HTTP backend, #27 2018-01-04 02:45:23 +01:00
Fabio Manganiello 4c62133378 Updated README 2018-01-03 02:23:25 +01:00
Fabio Manganiello 691a9c8593 Added test for the event/condition matching and parsing logic 2018-01-03 00:16:01 +01:00
Fabio Manganiello 2a192dacc1 References to Config static getters moved from the constructor declaration to the constructor body to prevent the default Config object to be initialized before the time and any config override to be ignored. This should also fix the tests, #33 2018-01-02 19:44:58 +01:00
Fabio Manganiello 9220b23471 Removed two unneeded rows 2018-01-02 19:34:41 +01:00
Fabio Manganiello 4a6accf483 s/push/send_request/g 2018-01-02 19:33:33 +01:00
Fabio Manganiello f2e5ba1eef Fixed corner case on event match in case the named argument is the last token 2018-01-02 01:37:30 +01:00
Fabio Manganiello 44a64b8cac Version bump 2018-01-02 00:49:38 +01:00
Fabio Manganiello 760782f427 Added new files 2018-01-02 00:48:41 +01:00
Fabio Manganiello 5a92c0ac3b - Proper support for event arguments
- Better algorithm for event matching
- Added send_event support to pusher
2018-01-02 00:35:55 +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 7d36e9e946 Version bump 2017-12-27 10:22:30 +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 720ab38673 Version bump 2017-12-25 17:27:08 +01:00
Fabio Manganiello 617c0f8a07 Added code for handling procedures - solves #1 2017-12-25 17:23:12 +01:00
Fabio Manganiello 96f2d9f496 Removed old processor module 2017-12-24 20:41:38 +01:00
Fabio Manganiello 7f3a94dcaf Version bump 2017-12-24 13:21:11 +01:00
Fabio Manganiello 75410ead2d Added __init__.py 2017-12-24 13:20:00 +01:00
Fabio Manganiello 6928e440bc Support for Flic button events 2017-12-24 13:15:37 +01:00
Fabio Manganiello 18830232a4 Don't trigger the default Assistant response if the phrase matched an internal rule. Also, backends should be easily accessible through a context module (more context variables will be added there) 2017-12-24 02:35:49 +01:00
Fabio Manganiello 939744314e Updated sample config 2017-12-24 01:33:06 +01:00
Fabio Manganiello 7b97a5b229 - #30 Implemented Google Assistant backend
- #21 Implemented events management
2017-12-24 01:10:48 +01:00
Fabio Manganiello 16dabd7575 Pass n_tries to Request.execute 2017-12-22 18:11:42 +01:00
Fabio Manganiello f04d0bd24f Don't send responses in case of errors within the retry mechanism 2017-12-22 18:09:11 +01:00
Fabio Manganiello ac3dad5fd9 Changed design for run_request - it should be a method of Request, not a member of Daemon 2017-12-22 18:04:18 +01:00
Fabio Manganiello 1ea8badd59 Assistant v.0.1 2017-12-22 10:43:43 +01:00
Fabio Manganiello 3a9afd1fed import error 2017-12-22 10:21:31 +01:00
Fabio Manganiello 017c53fb50 Added Google Assistant draft backend 2017-12-22 10:18:04 +01:00
Fabio Manganiello 766f1c62e4 Fixed comparison for none 2017-12-22 09:53:58 +01:00
Fabio Manganiello 7a0295675c #20 Added TTS plugin 2017-12-22 03:14:19 +01:00
Fabio Manganiello 6dcec9f9b4 - Version bump
- Only Python 3.6 on Travis
2017-12-22 02:57:44 +01:00
Fabio Manganiello 97adb1a191 * Better documentation for the local backend
* Remove the fifos at the beginning of the test
2017-12-22 02:52:56 +01:00
Fabio Manganiello 3dfcf0ec97 Added tests 2017-12-22 02:11:56 +01:00
Fabio Manganiello 4b819d5460 Another major refactoring. Among the other things, reintroduced local backend, made requests and responses working in every case, and properly handling stop events 2017-12-22 00:49:03 +01:00
Fabio Manganiello 7e79fa0418 Support for custom message handlers on the listener 2017-12-20 22:12:32 +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 84e36a13e9 Force exit on pusher response timeout 2017-12-18 22:58:31 +01:00
Fabio Manganiello 8ea943ffe1 Version bump 2017-12-18 22:45:55 +01:00
Fabio Manganiello 86f339cbee Printing response on pusher 2017-12-18 22:45:03 +01:00
Fabio Manganiello 21381e7c0f [#23] Request/Response ID chaining fixes
[#17] Response wait and response timeout implementation on pusher side
2017-12-18 22:40:56 +01:00
Fabio Manganiello 08f7fce028 exit all the threads on termination 2017-12-18 03:23:18 +01:00
Fabio Manganiello 18a5902ac4 Locking requests and responses with ids 2017-12-18 03:09:38 +01:00
Fabio Manganiello 97b6fab376 Updated README 2017-12-18 01:53:32 +01:00
Fabio Manganiello 93be9e3912 Fixed plugin name 2017-12-18 01:25:30 +01:00
Fabio Manganiello 4a04e51da7 Major refactoring #2 2017-12-18 01:10:51 +01:00
Fabio Manganiello 546ea1b9b9 Removed unneeded imports 2017-12-17 16:52:22 +01:00
Fabio Manganiello 1a6d726b19 Passing arguments to the plugin 2017-12-17 16:41:52 +01:00
Fabio Manganiello 339e7b73a5 Major refactoring.
Solves, among the others, #2, #18 and #22
2017-12-17 16:15:44 +01:00
Fabio Manganiello cb423dab03 Removed short circuit on the response 2017-12-16 07:01:25 +01:00
Fabio Manganiello 6c7c08f7aa Version bump 2017-12-16 05:00:29 +01:00
Fabio Manganiello 8c89a10710 Simplified backend interface, fixed some bugs with response management 2017-12-16 04:56:43 +01:00
Fabio Manganiello ea3eef379a No reference to self in static method 2017-12-14 01:58:42 +01:00
Fabio Manganiello ee5b8e21a0 * If we get a push tickle on PushBullet, get that latest push
* Fixed device_id attribute name clash
2017-12-13 23:55:38 +01:00
Fabio Manganiello dfb4620e0a Added __init__.py 2017-12-13 04:24:59 +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 bf49fb8af3 #11 Kafka topics are now in the format topic.device_id so messages aren't broadcast to all the listeners of the same topic 2017-12-13 01:07:46 +01:00
Fabio Manganiello c62a1a2bd3 Initialize the local fifo only when the backend is run 2017-12-13 01:04:04 +01:00
Fabio Manganiello 898a4ffdef Syntax error 2017-12-12 20:16:00 +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 4b0706380e Consistent logging info 2017-12-12 19:26:23 +01:00
Fabio Manganiello 7a58add0ad #5 pusher script moved to its own module and entrypoint 2017-12-11 23:09:45 +01:00
Fabio Manganiello 6c2ea3767c s/runbullet/platypush/g 2017-12-11 20:30:57 +01:00