Commit graph

1305 commits

Author SHA1 Message Date
68c44c0c3c OZW objects should be imported inside of the ZwavePlugin class to prevent ImportError on other Z-Wave plugins that don't depend on OZW 2021-04-18 02:19:53 +02:00
02a22d4a88 The zwave and zwave.mqtt plugins should extend a common abstract class instead of having a zwave.mqtt -> zwave functional dependency that introduces the PyOWZ dependency into zwave.mqtt 2021-04-16 20:54:07 +02:00
c006c4b368 Added zwave.mqtt plugin and backend [closes #186] 2021-04-12 02:45:59 +02:00
f1faa1141e More LINT fixes 2021-04-06 21:10:48 +02:00
2a78f81a7b Major LINT fixes 2021-04-05 00:58:44 +02:00
99831bf0c7 Fix compatibility with all versions of websocket-client, regardless of the list of arguments required by the callbacks (either ws as a first argument or not) 2021-04-02 19:27:25 +02:00
Fabio Manganiello
4313b6e883 media.vlc.status should synchronize on _stop_lock, or it may fail in the middle of its execution if the VLC session is being freed 2021-03-24 15:02:05 +01:00
9e46ab0b60 Wait for _on_stop_event in media.vlc.stop before releasing the instance 2021-03-16 22:34:03 +01:00
14f1c44378 - If a Z-Wave event includes an explicit value update then explicitly set that value on the node, in order to prevent issues with Z-Wave value updates not yet propagated to the node structure
- Added Z-Wave switch component
2021-03-16 20:52:30 +01:00
f92d19a24e media.vlc.stop should be synchronized on the _stop_lock and should call _reset_state instead of simply setting self._player = None 2021-03-16 19:42:59 +01:00
1d3d741212 Fixed Sphinx build warnings 2021-03-14 01:09:01 +01:00
cef310ffd7 Added missing methods docs 2021-03-12 01:53:16 +01:00
02f6845e72 - Added weather.openweathermap plugin and backend, as a replacement for Darksky [closes #177]
- Added note to the Darksky plugin about the decomissioning of the API by the end of the year
2021-03-12 01:31:26 +01:00
4902475caf Added active_scan mode to bluetooth.scanner backend to actively perform a lookup name on each device discovered at least once [see #174] 2021-03-09 11:50:59 +01:00
d860d8aef1 Added SmartThings switch web plugin 2021-03-05 21:29:32 +01:00
Fabio Manganiello
47ba13d985 calendar.ical.get_upcoming_events should fail hard if there was any exception/unsuccessful response
The error should not be swallowed and it should be instead propagated up
to calendar.get_upcoming_events, if it's called from that context. And
calendar.get_upcoming_events should be in charge of handling the
exceptions and make sure that failing to retrieve the events for one
calendar doesn't make the whole method fail.
2021-03-05 11:16:14 +01:00
4ada1c663d Added SmartThings plugin [#148] 2021-03-05 02:23:28 +01:00
210cefc1a4 General improvements on the Zeroconf plugin and backend 2021-03-03 19:20:12 +01:00
0e3845ef88 The vlc _reset_state logic should be wrapped within a lock context to make sure that two threads don't try to deallocate the context at the same time 2021-02-28 20:56:32 +01:00
833f810d4b Fixed stop handler for vlc plugin.
For some reason, vlc event handlers are not re-entrant (https://github.com/oaubert/python-vlc/issues/44#issuecomment-378520074).

This means that the vlc API can't be used from an event handler,
and that an event handler that reacts to stop/end-of-stream by
releasing the player and the vlc instance will likely get stuck
and the app may eventually die with SIGSEGV.

Because of this design limitation on the vlc side, the plugin has
to run another thread in the main app that monitors the stop event
set by the event handler and releases the resources appropriately.
2021-02-28 13:03:10 +01:00
d190560536 Support for media.vlc.play toggling paused state if called with no arguments, and MediaPlayRequestEvent should have player and plugin attributes set 2021-02-28 01:40:29 +01:00
e0e3081eb1 VLC volume should strictly be an integer 2021-02-28 01:31:00 +01:00
66445cb4e4 - Do not parse Zeroconf info at all if not available
- Temporarily skip test_procedure until I find a proper way to clean up the status from the previous run and start a fresh platform
2021-02-27 21:11:37 +01:00
f93df2fd49 Avoid the loop on the Zeroconf addresses object if the object is None (e.g. in the context of some tests) 2021-02-27 20:55:38 +01:00
0d806eeb6e - Removed setUp method from test_event_parse - let the parent setUp run and properly start the daemon
- More resilient logic in case some entries in the Zeroconf registry are still loading and the info object is still None
2021-02-27 20:51:48 +01:00
Fabio Manganiello
b27c9ee630 Make sure to always run .quit() on the _player instance on stop/exit event, even if the player is already stopped, otherwise the OMXPlayer session may be hanging in the background and prevent new DBus connections 2021-02-22 14:22:45 +01:00
ffb7a3e5a3 Extended and updated pieces of documentation on the HTTP server, Zigbee2mqtt and mpd. Also added example dashboard template and event hook script. 2021-02-22 01:20:01 +01:00
Fabio Manganiello
6f9428487f Higher priority to gstreamer plugin over omxplayer for tts 2021-02-21 02:44:26 +01:00
6b5b50d186 Migrated switches plugin 2021-02-19 20:47:29 +01:00
56f8d85feb Migrated switches web panel and refactored switch plugins to expose a more consistent interface 2021-02-19 02:54:12 +01:00
748609c6f4 Migrated settings panel and logout button 2021-02-15 23:09:27 +01:00
b3c28f6773 Added support for JWT token-based authentication 2021-02-12 22:43:34 +01:00
06ca5be54b Still support default host/port fallback on mqtt.publish 2021-02-12 02:19:36 +01:00
3cf91a3f27 Fixed backend.zigbee.mqtt to work with the new zigbee2mqtt API 2021-02-11 23:50:28 +01:00
1a70c6ea0b Fixed remaining Zigbee groups and binding methods to work with the new zigbee2mqtt API [see #163] 2021-02-10 02:00:52 +01:00
1eedcaf2be Moved more zigbee2mqtt methods to the new API 2021-02-09 02:33:43 +01:00
b8979040da Fixed device_get and device_rename to use the new zigbee2mqtt API 2021-02-08 01:45:21 +01:00
816492d3b2 Fixed MQTT over SSL default version spec in case the parameter is not a string 2021-02-08 01:44:26 +01:00
0bddbb0bca Merge branch 'master' into vuejs 2021-02-06 14:46:08 +01:00
314c01ef97 Refactored Zigbee backend and remove unused logic for keeping devices up-to-date 2021-02-06 14:45:50 +01:00
4c5a52417e Support for new zigbee2mqtt API and protocol (see #163) 2021-02-06 02:19:15 +01:00
2abfb2964c Merge branch 'master' into vuejs 2021-02-04 01:57:36 +01:00
4858dbc060 Back/forward seek changed from 60 to 30 2021-02-04 01:56:28 +01:00
Fabio Manganiello
2834ed2a7c Refactored and fixed many bugs on the media.omxplayer plugin 2021-02-04 01:44:21 +01:00
Fabio Manganiello
165f85f8dc Added support for background shell commands 2021-02-04 01:43:51 +01:00
Fabio Manganiello
7f24b82281 Removed deprecated media.ctrl plugin 2021-02-03 22:13:10 +01:00
7e1d232942 Another fix bites the dust 2021-02-03 17:47:33 +01:00
31a7ecee03 Quick fix 2021-02-03 17:46:05 +01:00
346bd9602d The whole get_plugin/.status() block should be under try/except 2021-02-03 17:44:40 +01:00
673351db51 Don't fail if a media plugin can't be imported 2021-02-03 17:43:26 +01:00
86ebc4fae9 Get the plugin name, not the object 2021-02-03 17:42:20 +01:00
118540db8c Fixed unreferenced var 2021-02-03 17:41:06 +01:00
a1d6c4fbe4 Added missing Config import 2021-02-03 17:39:55 +01:00
2bb07ae191 Fixed base class name 2021-02-03 17:39:16 +01:00
1920bd80a3 First search among the configured media plugins in media.ctrl plugin 2021-02-03 17:34:33 +01:00
8e2d590e62 Merge branch 'master' into vuejs 2021-01-23 15:06:14 +01:00
Fabio Manganiello
31b110a06c FIX: zigbee2mqtt applies different logic to /<device_name> and /<device_name>/get 2021-01-22 16:24:43 +01:00
Fabio Manganiello
717ad5d88c Revert "FIX: zigbee2mqtt /get calls require a property field specified on the message"
This reverts commit 7ff08a9587.
2021-01-22 16:13:18 +01:00
Fabio Manganiello
cc839620cf FIX: zigbee2mqtt /get calls require a property field specified on the message 2021-01-22 01:03:52 +01:00
Fabio Manganiello
7a7e00bea2 Migrated music.snapcast UI 2021-01-22 01:00:49 +01:00
Fabio Manganiello
7ff08a9587 FIX: zigbee2mqtt /get calls require a property field specified on the message 2021-01-22 00:45:52 +01:00
Fabio Manganiello
370a7d4c15 Added frontend support for Plex 2021-01-18 01:28:10 +01:00
Fabio Manganiello
85f56cf98c New media panel [WIP] 2021-01-14 00:15:35 +01:00
Fabio Manganiello
6ae76f1f38 Migrating media plugins [WIP] 2021-01-05 00:50:24 +01:00
Fabio Manganiello
e127f2597c music.mpd refactor WIP 2020-12-31 01:36:02 +01:00
Fabio Manganiello
b4fc734a15 music.mpd panel migration - WIP 2020-12-26 15:03:12 +01:00
Fabio Manganiello
5d4f4b0378 Support for subscribe-once/unsubscribe frontend events mechanisms 2020-12-15 00:01:28 +01:00
Fabio Manganiello
0db997c6a0 transitiontime is not supported on hue/sat/bri change 2020-12-14 16:31:24 +01:00
Fabio Manganiello
5e7c6c26c9 Migrating lights panel WIP 2020-12-14 02:13:55 +01:00
Fabio Manganiello
2de1e3ebe6 Lights panel migration - WIP 2020-12-09 21:16:07 +01:00
Fabio Manganiello
0cd120f492 New template for index panel 2020-11-30 20:57:00 +01:00
Fabio Manganiello
39abdfe40a New Vue.js template for dashbord WIP 2020-11-21 01:12:08 +01:00
Fabio Manganiello
c7711d75a1 New pychromecast has replaced host/port with uri 2020-11-11 03:07:42 +01:00
Fabio Manganiello
711ea543bb Use youtube-dl to extract the video URL instead of streaming its content to a local sock file 2020-11-11 03:07:23 +01:00
Fabio Manganiello
a07cb6ec3d Explicit cast of possible dict_keys element to list() before copy() 2020-11-10 22:53:12 +01:00
Fabio Manganiello
c5dc9333f0 Extended light plugin status method signature 2020-10-28 23:19:16 +01:00
Fabio Manganiello
77530b4a06 Use a threading Event to synchronize with the Hue animation thread instead of relying on the Redis backend 2020-10-14 00:18:23 +02:00
Fabio Manganiello
37e006d86e Refined Tensorflow train methods 2020-10-12 01:06:32 +02:00
Fabio Manganiello
8d7e790eda More descriptive attribute names for the Tensorflow predict response.
Using `outputs` instead of `values` and `predictions` instead of `labels`.
2020-10-02 01:17:34 +02:00
Fabio Manganiello
daaa0050d1 Squeeze the extra dimensions in a grayscale image and pass the model name to the response objects 2020-10-01 18:50:36 +02:00
Fabio Manganiello
287b6303ae More flexible module loading and better lock management for models in Tensorflow plugin 2020-10-01 17:41:12 +02:00
Fabio Manganiello
9e6c40d393 media.gstreamer added to the list of compatible media plugins 2020-09-29 15:37:46 +02:00
Fabio Manganiello
05b0a7f14d Added GStreamer media plugin [closes #151] 2020-09-29 15:32:40 +02:00
Fabio Manganiello
6ad5397a25 Removed unused import 2020-09-28 22:13:42 +02:00
Fabio Manganiello
0a9c4fc3a7 Added GStreamer camera plugin [relates to #151] 2020-09-28 22:10:56 +02:00
Fabio Manganiello
e9d9ef252f Frames directory should be created in 0o755 mode 2020-09-28 02:33:27 +02:00
Fabio Manganiello
df1e03f0af Added FFmpeg camera plugin [relates to #150] 2020-09-27 12:52:07 +02:00
Fabio Manganiello
c269c62fe6 Refactored logging names 2020-09-27 01:33:38 +02:00
Fabio Manganiello
6e6092e4b2 Do proper decapsulation for PiCamera wrapped object when reinitialized 2020-09-25 18:25:33 +02:00
Fabio Manganiello
ac42f7eba4 Make sure that the PiCamera session is properly closed and re-opened on each stream request 2020-09-25 18:06:27 +02:00
Fabio Manganiello
258a9b57ce release_device should not fail hard if stop_recording or close fail on ConnectionError 2020-09-25 17:42:21 +02:00
Fabio Manganiello
28409b8688 The device should be released after each streaming session 2020-09-25 17:34:53 +02:00
Fabio Manganiello
c12e7bab90 The streaming thread shouldn't fail and exit if it fails closing a client socket 2020-09-25 17:28:25 +02:00
Fabio Manganiello
09f9e974b1 Camera plugins refactor 2020-09-25 17:19:43 +02:00
Fabio Manganiello
c0f7cc0782 Added NextCloud integration [closes #149] 2020-09-10 11:10:26 +02:00
Fabio Manganiello
a650840429 Refactored variable plugin 2020-09-09 02:14:59 +02:00
Fabio Manganiello
4d0d467292 PIL JPEG format name typo fix 2020-09-08 18:14:49 +02:00
Fabio Manganiello
83122becdb Applied degrees -> PIL rotation ID conversion to the output image 2020-09-08 18:03:18 +02:00
Fabio Manganiello
53ddbad7ce Refactored MLX90640 plugin and HTTP route to work with direct BytesIO - it improves performance over using temporary files or base64-encoded responses 2020-09-08 17:51:46 +02:00
Fabio Manganiello
8a1f49a906 Open the source file in read non-binary mode in case of MIMEText 2020-09-05 01:29:43 +02:00
Fabio Manganiello
6dce4c59f6 (Forgot to pass the new arguments to the MIME constructor) 2020-09-05 01:27:08 +02:00
Fabio Manganiello
ce42f5aada MIMEText doesn't accept the Name parameter 2020-09-05 01:25:12 +02:00
Fabio Manganiello
9402e4f65f Removed trailing column 2020-09-03 17:16:35 +02:00
Fabio Manganiello
a4c6028dc4 Fixed wrong code-block syntax 2020-09-03 14:32:51 +02:00
Fabio Manganiello
907bc0f75b Added rtorrent integration [closes #120] 2020-09-03 13:08:42 +02:00
Fabio Manganiello
d7806757c5 Polished mail integration 2020-09-02 01:34:18 +02:00
Fabio Manganiello
ca168828de Added events on IMAP flagged/starred messages and extended IMAP plugin with remaining methods [closes #146] 2020-09-02 00:07:08 +02:00
Fabio Manganiello
6c24783df7 Log full exceptions in case of failures in a procedure 2020-09-01 10:33:56 +02:00
Fabio Manganiello
681e9f1703 Added SMTP plugin [links to #146] 2020-09-01 01:52:22 +02:00
Fabio Manganiello
dc1b54961f Added inspect.get_config() method to get the configuration programmatically 2020-08-31 18:26:08 +02:00
Fabio Manganiello
3c3ee09d90 Fixed auto-generated docs indentation and code blocks 2020-08-31 17:39:42 +02:00
Fabio Manganiello
1681f80728 Added IMAP plugin and generic mail check backend [links to #146] 2020-08-31 15:33:03 +02:00
Fabio Manganiello
f1ab923bfe Option to reuse the MQTT configuration of the plugin if not provided on the backend 2020-08-27 17:39:22 +02:00
Fabio Manganiello
beceb39b0c Added client_id in MQTT integrations 2020-08-27 16:41:51 +02:00
Fabio Manganiello
f7df1d2f6e typo fix 2020-08-27 16:01:51 +02:00
Fabio Manganiello
cd8732dc8f Added tls_insecure flag to MQTT 2020-08-27 15:56:43 +02:00
Fabio Manganiello
b8917de52f TLS version in MQTT configuration parsed from string 2020-08-27 12:44:00 +02:00
Fabio Manganiello
aa631deb88 Fixed docs typo 2020-08-24 01:24:24 +02:00
Fabio Manganiello
2e6388f6f4 ReadTheDocs fixes 2020-08-24 01:14:40 +02:00
Fabio Manganiello
5d2e74eb97 LINT fixes for LCD plugins 2020-08-24 00:42:34 +02:00
Fabio Manganiello
af614480b8 Added LCD display integration (closes #145) 2020-08-23 20:00:08 +01:00
Fabio Manganiello
7a7c065754 Added missing docs 2020-08-23 00:49:51 +02:00
Fabio Manganiello
6bed284e8b Added DHT temperature/humidity sensor integration [closes #113] 2020-08-22 23:46:21 +01:00
Fabio Manganiello
289eebd6a0 Moved definition of workdir inside the constructor, otherwise readthedocs will fail for missing configuration file 2020-08-22 15:33:44 +02:00
Fabio Manganiello
63ad4bfdce Doc fixes 2020-08-20 00:35:06 +02:00
Fabio Manganiello
019bcbf90a Replaced values.unset in Twilio methods signature with None for JSON compatibility 2020-08-20 00:08:10 +02:00
Fabio Manganiello
988601b10e Added Twilio integration [closes #132] 2020-08-19 23:30:26 +02:00
Fabio Manganiello
cbae8132ed Python 3.5 compatibility 2020-08-19 22:20:00 +02:00
Fabio Manganiello
0659996c48 Added DBus integration [closes #141] 2020-08-16 01:57:30 +02:00
Fabio Manganiello
20b095232d Support for extended information in zeroconf.discover_service 2020-08-14 15:52:24 +02:00
Fabio Manganiello
7e8bef40cd Added Zeroconf integration [closes #105] 2020-08-14 00:36:39 +02:00
Fabio Manganiello
6b43a5e592 Added luma.oled display support 2020-08-11 14:48:14 +02:00
Fabio Manganiello
65bac0ccc5 Fix for pychromecast.get_chromecasts new return type.
On newer versions of pychromecast get_chromecasts returns
a tuple (devices, browser_service) instead of a list. The
software should be robust enough with both older and newer
versions of pychromecast.
2020-07-25 01:35:06 +02:00
Fabio Manganiello
590d416682 Google Translate API supports a maximum of 2000 characters per API call.
Therefore it's a good idea to split the input text/html.
2020-07-05 21:04:54 +02:00
Fabio Manganiello
adc94349c7 Missing commas 2020-07-04 00:31:24 +02:00
Fabio Manganiello
b716b1a0c1 More robust URL query for YouTube 2020-07-04 00:25:49 +02:00
Fabio Manganiello
93ac6c8af9 Regex format fix 2020-07-04 00:18:45 +02:00
Fabio Manganiello
03dc524f80 Fixed response type 2020-07-04 00:15:44 +02:00
Fabio Manganiello
c943acb9c2 Smarter logic for parsing YouTube URLs in Kodi 2020-07-04 00:12:16 +02:00
Fabio Manganiello
a4824a4e95 Google Cloud Translate API works through GOOGLE_APPLICATION_CREDENTIALS env variable 2020-07-02 02:24:54 +02:00
Fabio Manganiello
46515020cf Added Google Translate plugin 2020-07-02 02:07:57 +02:00
Fabio Manganiello
3174db5776 Always convert content to string before writing it to a file 2020-06-30 11:41:38 +02:00
Fabio Manganiello
11709641d7 Extended file plugin with more util methods 2020-06-29 23:53:11 +02:00
Fabio Manganiello
d560823887 Replaced deprecated options in PiCamera module 2020-06-27 13:55:18 +02:00
Fabio Manganiello
96716dc872 Support for pre-fetched HTML/Markdown content.
HTML output can be too large for the process called over the command
line. HTML data exchange now happens through an intermediate temporary
file.
2020-06-25 01:37:59 +02:00
Fabio Manganiello
f50ad767e0 Support for more arguments passed to the Mercury parser 2020-06-23 01:54:35 +02:00
Fabio Manganiello
a1c20a52da Defined get_procedures() method on inspect plugin 2020-06-17 22:31:07 +02:00
Fabio Manganiello
fb58c89911 More robust node_to_dict code in case of race conditions where some of the attributes required to generate id_on_network are not available 2020-06-11 14:50:41 +02:00
Fabio Manganiello
a18002dea0 The command class of a Z-Wave value can also be null: prevent the plugin from breaking in such case 2020-06-09 16:14:02 +02:00
Fabio Manganiello
9d6375f381 More robust logic in case of Tplink device not available 2020-06-08 19:43:08 +02:00
Fabio Manganiello
0ced46058a Always set check_same_thread=False in case of SQLite engines.
Platypush is heavily multi-threaded, and it can happen that some
transactions are handled in different threads - and consistency
is managed by the application itself.
2020-06-08 00:27:41 +02:00
Fabio Manganiello
82a9aa1232 Added clipboard backend 2020-05-23 23:11:42 +02:00
Fabio Manganiello
3cdd9e8474 Added SSH plugin [closes #136] 2020-05-23 21:38:22 +02:00
Fabio Manganiello
1b47615100 More robust attribute checking before conversion, as the object can actually be either a ZWaveNode or a ZWaveController 2020-05-22 12:08:17 +02:00
Fabio Manganiello
d595688d55 Use the /total/country/<cc> endpoint instead of /total/dayone/country/<cc> 2020-05-17 16:52:37 +02:00
Fabio Manganiello
80d5a6ad19 Support for multiple torrent sessions 2020-05-07 23:34:56 +02:00
Fabio Manganiello
26f6feebb7 Implemented retry+sleep mechanism in Switchbot plugin in case of errors
This should prevent race conditions in case of command timeout+quick
disconnection and retry that can result in race conditions and double
free corruptions.
2020-05-06 00:25:19 +02:00
Fabio Manganiello
99fee9ce20 Parse countries from the official country list 2020-05-04 13:15:17 +00:00
Fabio Manganiello
d0ccd65214 Added Samsung smart TV web plugin 2020-05-03 17:21:16 +02:00
Fabio Manganiello
2f57ccf412 Added Samsung smart TV plugin 2020-05-03 00:57:13 +02:00
Fabio Manganiello
9d0f43707a Support for list of countries 2020-04-30 22:45:04 +02:00
Fabio Manganiello
3bb4c4434c Added Covid-19 country stats plugin and backend/monitor 2020-04-30 00:44:34 +02:00
Fabio Manganiello
3c209a800b New popcorn time API URLs 2020-04-28 13:49:31 +02:00
Fabio Manganiello
7ce5efaf2e Removed numpy and PIL top-level imports that could break the HTTP server if not installed on the system 2020-03-24 10:25:25 +01:00
Fabio Manganiello
7af8fb581b A more robust logic to check whether the first dimension of the input tensor is None 2020-03-23 23:54:18 +01:00
Fabio Manganiello
30a5f7b297 Fixed docs typo 2020-03-23 01:25:35 +01:00
Fabio Manganiello
375a8376dc Don't use Config.get on __init__, or docs build will fail because of missing config.yaml 2020-03-23 01:14:44 +01:00
Fabio Manganiello
f4dcf688f0 Set default values for metrics for regression and networks 2020-03-23 01:10:59 +01:00
Fabio Manganiello
50e372be36 Implemented extensive support for neural networks, images and directories [closes #121] 2020-03-23 01:00:25 +01:00
Fabio Manganiello
1f1fefca9d Tensorflow plugin implementation WIP [#121]
TODO: Extend neural network implementation to work
also with e.g. input from images, sounds or binary
2020-03-21 19:50:59 +01:00
Fabio Manganiello
d938017bf8 Added support for extra mplayer arguments for TTS plugins 2020-03-16 18:40:17 +01:00
Fabio Manganiello
e7084b5d6f Added CSV plugin 2020-03-13 01:29:43 +01:00
Fabio Manganiello
a130edb74f Made QR-code scan work also on picamera 2020-03-11 01:06:07 +01:00
Fabio Manganiello
2992d5f726 List of dependencies for qrcode plugin should also include numpy 2020-03-10 22:50:33 +01:00
Fabio Manganiello
141275ecdf Support for scanning QR-codes and barcodes through a camera plugin 2020-03-10 22:35:50 +01:00
Fabio Manganiello
c9db887505 Added QR code/barcode integration [closes #119] 2020-03-10 00:07:21 +01:00
Fabio Manganiello
c26d456109 Added Linode integration [closes #116] 2020-03-09 21:34:06 +01:00
Fabio Manganiello
096f84c865 Added OTP integration [closes #118] 2020-03-09 01:11:23 +01:00
Fabio Manganiello
fc7982378a The bluetooth BLE plugin must also implement get_measurement to work with the scanner backend 2020-03-08 23:50:23 +01:00
Fabio Manganiello
59e3f81202 Added bluetooth scanner backends [closes #112] 2020-03-08 23:37:57 +01:00
Fabio Manganiello
42c5bbe0e4 Fixed LINT warnings and changed MPD filter format (from list to dict) 2020-03-08 13:04:00 +01:00
Fabio Manganiello
642d5117a1 Added note about the license for PicoVoice Cheetah 2020-03-07 20:28:42 +01:00
Fabio Manganiello
ce0f3227ec Implemented PicoVoice speech-to-text integration [closes #130] 2020-03-07 20:21:32 +01:00
Fabio Manganiello
a5c08ed3e4 Added PicoVoice plugin with support for hotwords [see #130] 2020-03-07 02:00:35 +01:00
Fabio Manganiello
e04c6fb921 Extracted common logic for speech-to-text integrations into abstract STT plugin 2020-03-06 23:11:19 +01:00
Fabio Manganiello
7ed847b646 Removed __future__ annotations (it breaks readthedocs build) 2020-03-06 00:53:24 +01:00
Fabio Manganiello
b0339754b2 Implemented Mozilla DeepSpeech speech-to-text integration [closes #126] 2020-03-06 00:38:24 +01:00
Fabio Manganiello
fc949ed9f1 Skip base Response type 2020-03-05 23:19:26 +01:00
Fabio Manganiello
27f847eac6 Support for is_muted/toggle_muted on Google assistant 2020-03-05 18:13:44 +01:00
Fabio Manganiello
e66c02f3de Added documentation for response objects as well 2020-03-05 17:41:26 +01:00
Fabio Manganiello
cb0dd900ab Don't overwrite the original byte read from serial 2020-02-26 11:22:52 +01:00
Fabio Manganiello
a9cb834499 Be more robust in case we receive non-Unicode characters on the serial port 2020-02-26 11:19:59 +01:00
Fabio Manganiello
87a51b391c Support for custom TTS engine for rendering assistant response (see #86) 2020-02-24 20:23:22 +01:00
Fabio Manganiello
fb17aafe53 Support for custom audio volume for alarms 2020-02-23 23:09:40 +01:00
Fabio Manganiello
2d3c61173d Added Zigbee web panel (closes #123) 2020-02-23 22:54:50 +01:00
Fabio Manganiello
0643b7fade Support for intervals in seconds on alarm add/set 2020-02-22 16:18:56 +01:00
Fabio Manganiello
424077fdbc Completed ZWave web panel (see #123) 2020-02-22 01:00:52 +01:00
Fabio Manganiello
a9dbda455f Support for default media player volume 2020-02-21 18:40:46 +01:00
Fabio Manganiello
70fe2459de _event_callbacks is a protected attribute of mpv.MPV 2020-02-21 18:29:40 +01:00
Fabio Manganiello
9ee81d7999 Removed header from documentation - pydoc can't handle headers in methods 2020-02-21 18:20:38 +01:00
Fabio Manganiello
98727c4f31 Added support for values in Z-Wave web panel (see #123) 2020-02-20 02:34:35 +01:00
Fabio Manganiello
a0ceb560b4 Implemented alarm/timer plugin (closes #111) 2020-02-17 19:37:22 +01:00
Fabio Manganiello
8248b5353f Added status action to MediaPlugin interface 2020-02-17 18:12:40 +01:00
Fabio Manganiello
fcef7af6a4 Adding Z-Wave web panel (#123) [WIP] 2020-02-10 00:39:32 +01:00
Fabio Manganiello
02246a48ae Added Z-Wave integration (closes #76) 2020-02-05 22:26:52 +01:00
Fabio Manganiello
8255f9af28 Added zigbee2mqtt integration (see #76) 2020-01-22 18:34:28 +01:00
Fabio Manganiello
f91fd00067 Removed old comment note for esp.file_download 2020-01-20 15:41:24 +01:00
Fabio Manganiello
b484fcf9ed - New implementation of esp.file_get that also works with binary files
- New communication protocol for downloaded chunks based on queues
  instead of events.
2020-01-20 15:39:23 +01:00
Fabio Manganiello
4b56431e2a Added proper support for ESP file upload/download (closes #110) 2020-01-20 11:47:10 +01:00
Fabio Manganiello
b7d9917d1d Cleaned up unused variables 2020-01-20 08:54:59 +01:00
Fabio Manganiello
f38121d176 Always pause/resume speech detection on backend level 2020-01-19 16:32:41 +01:00
Fabio Manganiello
6c797b0ad9 Implemented support for assistant pause/resume conversation (closes #109) 2020-01-19 16:21:29 +01:00
Fabio Manganiello
5ae57e3aaf Added action to retrieve temperature and pressure from a DHT11/DHT22 sensor on ESP plugin 2020-01-18 20:15:31 +01:00
Fabio Manganiello
4e45c1d0bc Removed font-awesome full submodule clone. Use the CDN-provided all.css file instead.
It won't work if the webapp runs on a device not connected to the internet,
but it saves a lot of installation space.
2020-01-18 19:59:02 +01:00
Fabio Manganiello
2598e2fb30 Replace the \r\n sequence with \n in the processed response 2020-01-18 18:26:23 +01:00
Fabio Manganiello
2f63a861cb Fixed ESP plugin extra args formatting 2020-01-18 18:11:35 +01:00
Fabio Manganiello
c3c88b23fe Added ESP8266/ESP32 integration (closes #108) 2020-01-17 21:16:14 +01:00
Fabio Manganiello
b920927dab Added Travis-Ci integration (closes #104) 2020-01-12 13:53:46 +01:00
Fabio Manganiello
f5b010c15c Added nmap integration (closes #99) 2020-01-11 18:51:54 +01:00
Fabio Manganiello
b0a5f1e272 Added Foursquare integration - closes #94 2020-01-10 22:51:07 +01:00
Fabio Manganiello
ddbe76646b Throw an assert error (no reload/retry mechanism) instead of a runtime error when a method is called outside of the registered plugin actions 2020-01-10 00:07:40 +01:00
Fabio Manganiello
4c3140c9b5 Fixed docs 2020-01-09 23:40:59 +01:00
Fabio Manganiello
f2de1015a8 Fixed doc URL 2020-01-09 22:24:15 +01:00
Fabio Manganiello
e709908d7e Added Google Drive plugin - closes #91 2020-01-09 22:07:03 +01:00
Fabio Manganiello
35cefcc9f5 Improved consistency and robustness of sensors backend 2020-01-08 22:58:24 +01:00
Fabio Manganiello
9d592fe370 Added battery sensor backend 2020-01-08 14:55:58 +01:00
Fabio Manganiello
6738ff832a get_data/get_measurement/close should be implemented in a base SensorPlugin
class, not specifically in GpioSensorPlugin
2020-01-08 00:20:00 +01:00
Fabio Manganiello
aa6bf5379a Added process management actions 2020-01-08 00:07:15 +01:00
Fabio Manganiello
c53dfab246 Added pid_exists action 2020-01-07 23:03:30 +01:00
Fabio Manganiello
8fe34d541b Added system monitor integration - closes #98 2020-01-07 22:44:59 +01:00
Fabio Manganiello
3271759fba Added Pi-hole integration - closes #100 2020-01-06 19:22:04 +01:00
Fabio Manganiello
e880f00498 Added Graphite integration - closes #96 2020-01-06 15:24:52 +01:00
Fabio Manganiello
d73df1454e Added TCP and UDP plugins - closes #106 2020-01-05 20:52:42 +01:00
Fabio Manganiello
bcd05ecf4a Added CUPS plugin - closes #93 2020-01-05 19:25:20 +01:00
Fabio Manganiello
a9fdbe7812 Fixed code-block format 2020-01-05 13:11:44 +01:00
Fabio Manganiello
084b5ba807 Stop also board iterators on close 2020-01-05 13:02:41 +01:00
Fabio Manganiello
d8a7c9c6e0 Added Arduino over Firmata integration - closes #92 2020-01-05 00:46:46 +01:00
Fabio Manganiello
77ff88360b music.mpd.play should add the resource at the beginning of the
current tracklist and play it, not clear the whole tracklist.
2020-01-01 21:16:27 +01:00
Fabio Manganiello
de429a5b7d Extended Telegram integration 2020-01-01 20:59:22 +01:00
Fabio Manganiello
753694a865 Added Telegram integration 2020-01-01 15:40:42 +01:00
Fabio Manganiello
49a7ee643e - Added Buienradar integration
- Refactored weather plugin/backend as Darksky plugin/backend
2019-12-31 08:51:19 +01:00
Fabio Manganiello
9eed1014eb Added keyboard/mouse plugin 2019-12-30 21:39:56 +01:00
Fabio Manganiello
dc2b3689a2 Fixes 2019-12-30 19:04:13 +01:00
Fabio Manganiello
952a8f2faf Added generation for events docs 2019-12-30 18:50:01 +01:00
Fabio Manganiello
9d961a265f Generated missing docs 2019-12-30 10:16:55 +01:00
Fabio Manganiello
bc7c248f72 Added Google Pub/Sub integration 2019-12-30 09:33:26 +01:00
Fabio Manganiello
ba6c890a42 Refactored and improved camera plugin 2019-12-29 16:28:07 +01:00
Fabio Manganiello
663be43f06 Added ping plugin and backend 2019-12-27 23:26:39 +01:00
Fabio Manganiello
5ba18ea7d5 Added Trello integration 2019-12-27 19:18:56 +01:00
Fabio Manganiello
f0999c7375 Added is_streaming method to camera.pi 2019-12-27 17:10:36 +01:00
Fabio Manganiello
fb2ff7d1d6 Improved management of PiCamera start/stop streaming events 2019-12-27 16:56:07 +01:00
Fabio Manganiello
29789461d7 Added Todoist integration 2019-12-25 20:33:26 +01:00
Fabio Manganiello
5d5e8b54ae Other typing adjustments for dumb Python 3.5 compatibility 2019-12-23 21:49:16 +01:00
Fabio Manganiello
36835a1706 Fixed Python 3.5 compatibility for Zeroborg plugin 2019-12-23 21:40:30 +01:00
Fabio Manganiello
ff9e1c71a7 Prevent race condition on self._drive_thread = None 2019-12-23 18:48:01 +01:00
Fabio Manganiello
7f440a9160 s/or/and/ 2019-12-23 18:43:59 +01:00
Fabio Manganiello
d5c2ae961a Reset the mode if GPIO.getmode() returns None for any reason 2019-12-23 18:40:39 +01:00
Fabio Manganiello
9ffa04c666 Removed auto mode from Zeroborg plugin 2019-12-23 17:57:35 +01:00
Fabio Manganiello
50a7746bf0 Refactored ZeroBorg plugin 2019-12-23 00:36:53 +01:00
Fabio Manganiello
7a7acbe6b9 Support for Zeroborg events 2019-12-22 23:54:45 +01:00
Fabio Manganiello
b36a8095ab Sleep for (default: 0.1 seconds) between reads when distance sensor runs in
continuous mode to prevent excessive CPU load
2019-12-22 19:56:43 +01:00
Fabio Manganiello
17d233b55d Fixed __exit__ arguments list in GpioSensorDistance 2019-12-22 19:40:41 +01:00
Fabio Manganiello
d6515ed991 Added support for continuous checks on distance sensor and DistanceSensorEvent 2019-12-22 19:09:02 +01:00
Fabio Manganiello
9c4f917b53 LINT fixes 2019-12-22 18:18:41 +01:00
Fabio Manganiello
55d3f379d4 LINT fixes 2019-12-22 18:14:42 +01:00
Fabio Manganiello
a23f5446da Added GPIO web panel 2019-12-22 18:10:30 +01:00
Fabio Manganiello
d33494419a Added cleanup action on GPIO plugin 2019-12-21 23:36:09 +01:00
Fabio Manganiello
bdfe48fe32 Refactored integration between ZeroBorg and distance sensor plugin 2019-12-21 13:09:44 +01:00
Fabio Manganiello
58b0b48393 Added gpio.cleanup at the end of get_measurement in distance sensor plugin 2019-12-20 21:40:57 +01:00
Fabio Manganiello
4090570278 GpioSensorDistancePlugin should extend GpioPlugin 2019-12-20 21:24:52 +01:00
Fabio Manganiello
f0751cb37d Fixed typo 2019-12-20 18:56:00 +01:00
Fabio Manganiello
1077dbcf71 Added mode (BOARD/BCM) parameter to GPIO plugins 2019-12-20 18:27:52 +01:00
Fabio Manganiello
93a3c72d4e Added camera.android.ipcam web panel 2019-12-18 01:00:56 +01:00
Fabio Manganiello
416c9ceb93 Fixed picamera mjpeg stream 2019-12-17 22:44:15 +01:00
Fabio Manganiello
634aeec58d Refactored camera.pi endpoints 2019-12-17 21:51:55 +01:00
Fabio Manganiello
17af488b32 Using an io memory buffer to write the streamed images instead of a
physical file to improve streaming performance
2019-12-17 21:32:56 +01:00
Fabio Manganiello
fb744dbc74 Added picamera streaming route and web panel tab 2019-12-17 19:54:38 +01:00
Fabio Manganiello
bce4c7c51e Support for static list of devices in switch.tplink plugin to reduce scanning time and prevent stupid "communication protocol errors" on scan 2019-12-17 10:56:00 +01:00
Fabio Manganiello
66d00ee428 Added Android IPCam support 2019-12-17 00:56:28 +01:00
Fabio Manganiello
0cef9c6070 No need to explicitly specify request_queue and response_queue on Worker derived classes 2019-12-15 19:55:14 +01:00
Fabio Manganiello
6082eb62d5 - Added support for device scanning in switch.wemo plugin
- Added generic interface for workers to run jobs in parallel
2019-12-15 19:42:48 +01:00
Fabio Manganiello
5481990834 Using scan_timeout value in switch.switchbot plugin when discovering a device characteristics 2019-12-14 15:57:00 +01:00
Fabio Manganiello
af24f36519 - Added bluetooth LTE plugin
- Switchbot plugin rewritten as an implementation of bluetooth BLE

see #89
2019-12-13 02:08:43 +01:00
Fabio Manganiello
5d2d7d55af Added bluetooth OBEX file receiver service (see #89) 2019-12-11 22:22:56 +01:00
Fabio Manganiello
8c41110145 Added bluetooth plugin (see #89) 2019-12-11 18:05:17 +01:00
Fabio Manganiello
f8a709fe98 Improved Pushbullet plugin 2019-12-09 11:00:31 +00:00
Fabio Manganiello
be5c5d365c Added execute tab to webpanel 2019-12-08 16:25:03 +01:00
Fabio Manganiello
f378fa8832 MPV.Event.IDLE should also be treated as a player stop event 2019-12-07 17:16:48 +01:00
Fabio Manganiello
d6f251989c Added missing __init__.py 2019-12-05 00:46:05 +01:00
Fabio Manganiello
e3d44b56dd Added Join plugin to control remote Android devices 2019-12-05 00:42:29 +01:00
Fabio Manganiello
0f0f8f8a94 LINT fixes 2019-12-05 00:42:29 +01:00
Fabio Manganiello
08119add97 Optimized WeMo plugin 2019-12-05 00:42:29 +01:00
Fabio Manganiello
c34c8586f4 Fixed KeyError 2019-12-04 09:32:56 +01:00
Fabio Manganiello
10ab1751d8 Return only the first element, not in an array, if status() was called with only one device 2019-12-04 09:29:29 +01:00
Fabio Manganiello
25894d3c00 Only return the first element of status() 2019-12-04 09:28:08 +01:00
Fabio Manganiello
69e702ed0c Let switch.wemo on/off/toggle methods always call status() for returned value for consistency with the frontend and other switch plugins 2019-12-04 09:24:34 +01:00
Fabio Manganiello
fea39b1306 Added id to switch.wemo.status for compatibility with the frontend 2019-12-04 02:50:22 +01:00
Fabio Manganiello
b4dbb0c5a6 Overridden status method in switch.wemo 2019-12-04 02:39:11 +01:00
Fabio Manganiello
2e4e847857 Migrated WeMo Switch plugin to raw HTTP requests. ouimeaux was heavy and broken 2019-12-04 02:09:49 +01:00
Fabio Manganiello
d38746d278 Moved imports for extra dependencies inside the methods where they are actually used 2019-12-01 23:35:05 +01:00
Fabio Manganiello
f537a7785a typo 2019-12-01 18:23:50 +01:00
Fabio Manganiello
2b8ba2b956 Support for specifying external audio player on Alexa plugin 2019-11-26 11:19:15 +01:00
Fabio Manganiello
d5f0d476c0 #86: Support for play_response flag on Google pushtotalk plugin 2019-11-26 00:32:27 +01:00
Fabio Manganiello
9b04570e49 Assistant event refactor: always explicitly pass the assistant object.
Also added match_condition override for ResponseEvent to capture the
assistant response text, when available, and prevent the default
response - it should solve #86.
2019-11-26 00:16:32 +01:00
Fabio Manganiello
75c6abf249 Pass the assistant object on the Alexa events 2019-11-25 23:16:33 +01:00
Fabio Manganiello
077d787d42 Added input audio device support to Alexa plugin 2019-11-25 23:05:01 +01:00
Fabio Manganiello
1661428417 #80: kwargs on start_conversation for extra parameters 2019-11-25 00:06:48 +01:00
Fabio Manganiello
ef8fd044fd #80: Extended Alexa/Echo plugin 2019-11-24 23:57:32 +01:00
Fabio Manganiello
deb28cf005 #80: Support for Alexa/Echo assistant 2019-11-24 23:46:14 +01:00
Fabio Manganiello
6aa13a10cb Initialize the animation groups map only if groups was specified 2019-11-03 14:45:03 +01:00
Fabio Manganiello
99d17b666c Only set up listen ports for libtorrent if it's a new session 2019-10-08 10:06:33 +00:00
Fabio Manganiello
f23afa3c53 Better management for font styles in http.webpage.simplify 2019-10-05 23:54:26 +02:00
Fabio Manganiello
89c2555753 Improved font in http.webpage.simplify for HTML and PDF output 2019-10-05 22:48:07 +02:00
Fabio Manganiello
09991b2e8a Use a filesystem FIFO for YouTube media content instead of playing the *.googlevideo.com URL directly
Google Video URLs now return 403 if played directly. Let youtube-dl
handle the heavylifting and use a FIFO to stream the media
2019-09-30 18:06:30 +02:00
Fabio Manganiello
f69a7e422b [#84] Completed Dropbox support 2019-09-30 00:04:48 +02:00
Fabio Manganiello
fd10b2260c Changed PopcornTime endpoints 2019-09-29 10:31:00 +02:00
Fabio Manganiello
48e4aeb3dc Added machine learning plugin based on OpenCV cv2.dnn module 2019-09-27 11:46:50 +02:00
Fabio Manganiello
6aa52f0522 typo 2019-09-27 10:35:16 +02:00
Fabio Manganiello
a17dba3ec6 LINT warnings fix 2019-09-26 19:23:38 +02:00
Fabio Manganiello
168b1b0e5a Finalized camera.ir.mlx90640 web interface 2019-09-26 18:33:44 +02:00
Fabio Manganiello
d7dc74beed Added web plugin for mlx90640 infrared camera 2019-09-26 11:15:18 +02:00
Fabio Manganiello
c6384b3b65 Expand rawrgb_path to support relative paths and user prefix 2019-09-25 16:02:35 +02:00
Fabio Manganiello
755c8b52ec Extended features of MLX90640 infrared camera plugin 2019-09-25 15:36:56 +02:00
Fabio Manganiello
d1d842ae95 Added MLX90640 infrared camera plugin 2019-09-25 10:40:57 +02:00
Fabio Manganiello
d96a218c56 LINT warnings fix 2019-09-24 23:21:19 +02:00
Fabio Manganiello
876a07d2c8 Keep measurements in a loop until we get a valid data point 2019-09-24 10:00:56 +02:00
Fabio Manganiello
0fe255436e Don't fail hard if the seconds key is not in the map 2019-09-24 01:20:14 +02:00
Fabio Manganiello
d21fd64100 Added motion_events_per_sec measurement 2019-09-24 01:17:13 +02:00
Fabio Manganiello
ff1fe3058b Don't fail hard in case of temporary sensor glitches 2019-09-24 01:01:06 +02:00
Fabio Manganiello
d6de1189e5 Simplified motion sensor interface by removing unneeded absolute vector 2019-09-24 00:13:02 +02:00
Fabio Manganiello
63d222d2ee Slot enum mapping fix 2019-09-23 23:48:26 +02:00
Fabio Manganiello
7e92f59d44 Added PWM3901 optical motion/flow sensor plugin 2019-09-23 23:28:33 +02:00
Fabio Manganiello
a580cc93eb Added draft for Dropbox plugin 2019-09-13 10:18:54 +00:00
Fabio Manganiello
a43508a743 Do not import cv2 in camera.__init__ unless we specify a video_type that needs to be expanded. Otherwise we introduce the OpenCV dependency also for the camera.pi plugin 2019-09-10 00:21:11 +02:00
Fabio Manganiello
e9c7104242 Keep track of the newly inserted token records in media.local.search, or we can experience UniqueConstraint violations upon session commit because of duplicate records 2019-09-02 23:05:16 +02:00
Fabio Manganiello
1dca11c0be HTTP headers should always be an argument of the Request object 2019-09-02 01:17:52 +02:00
Fabio Manganiello
e673b3e0c7 search_* methods can't be static 2019-09-02 01:12:43 +02:00
Fabio Manganiello
86d38b421a Added headers in torrent API requests 2019-09-02 01:10:22 +02:00
Fabio Manganiello
7bf4284f7b Typo in keyword name 2019-09-02 01:00:38 +02:00
Fabio Manganiello
7bbaaba767 Refactored torrents plugin 2019-09-02 00:53:09 +02:00
Fabio Manganiello
b9360cf2c5 camera.close() should be in a finally block to make sure that we don't
run out of resources because of failed camera initializations
2019-08-25 16:51:10 +02:00
Fabio Manganiello
69a03fa025 Do wait_recording until the client disconnects 2019-08-17 00:27:19 +02:00
Fabio Manganiello
b599c622c4 _get_camera should first verify both that camera is not null and not
closed before returning the cached object
2019-08-16 19:15:00 +02:00
Fabio Manganiello
3c675b296f Don't propagate the exception if stop_preview failed 2019-08-16 18:49:15 +02:00
Fabio Manganiello
6465a6f282 Added start/stop preview camera actions 2019-08-16 18:38:04 +02:00
Fabio Manganiello
c93af07333 Close camera preview after taking a picture or a sequence 2019-08-16 18:30:49 +02:00
Fabio Manganiello
284ec129d9 Lint fixes 2019-08-16 18:18:55 +02:00
Fabio Manganiello
7fd5f5c4f8 Proper synchronization with client connections and stop_streaming condition in the streaming thread 2019-08-16 17:49:15 +02:00
Fabio Manganiello
190ab15a76 Fixed camera.pi plugin 2019-08-16 12:24:42 +02:00
Fabio Manganiello
b153d212e3 New picamera plugin 2019-08-16 11:11:45 +02:00
Fabio Manganiello
59d976d681 Start ranging only with one setting (to get more accurate measurements once the sensor has warmed up) and configure it only at sensor startup 2019-08-15 15:20:49 +02:00
Fabio Manganiello
dccd3fd3d4 Don't open the device and leave it open on each measurement, or the backend will fail with 'Too many open files' at some point 2019-08-15 13:06:31 +02:00
Fabio Manganiello
8396c82d56 Typo in import name 2019-08-15 00:35:17 +02:00
Fabio Manganiello
b15dff0a24 Class name typo 2019-08-15 00:30:42 +02:00
Fabio Manganiello
e60660b0e6 Added plugin and backend for VL53L1X laser ranger/distance sensor 2019-08-15 00:26:25 +02:00
Fabio Manganiello
e7448d90d6 Trigger a ConversationStartedEvent before initializing the assistant object 2019-08-14 21:46:31 +02:00
Fabio Manganiello
19dc96ff1c Added LTR559 sensor plugin and backend 2019-08-14 21:27:25 +02:00
Fabio Manganiello
80f969cfce The BME280 sensor also supports altitude 2019-08-14 21:03:27 +02:00
Fabio Manganiello
8bf5076334 FIX we should return device from _get_device 2019-08-14 20:52:27 +02:00
Fabio Manganiello
693b38ef51 Cache the BME280 object instead of initializing it on each get_measurement call
The BME280 needs some warmup time before picking up the results.
2019-08-14 20:50:14 +02:00
Fabio Manganiello
757e0ff9bf Refactored SensorBackend and derived classes and added BME280 sensor
plugin and backend
2019-08-14 19:49:19 +02:00
Fabio Manganiello
228e656da8 Only import cv2 in the methods that require it (prevents camera.pi
and other camera derived plugins from failing if OpenCV is not installed)
2019-08-07 09:43:40 +02:00
Fabio Manganiello
fa9b816d06 Return the parsed raw YouTube URL only if available, otherwise the original URL 2019-08-04 17:36:06 +02:00
Fabio Manganiello
aebeadbcf7 args can be either a list or a tuple - treat accordingly 2019-08-04 17:17:09 +02:00
Fabio Manganiello
3a5a731bd2 pause and then play omxplayer in the play handler to make sure that all the proper events are generated upon play 2019-08-04 16:50:38 +02:00
Fabio Manganiello
f06a851b61 Accelerometer and magnometer reads should be dict not set 2019-08-01 23:23:19 +02:00
Fabio Manganiello
bdadd2061c Added EnviropHAT support 2019-08-01 22:40:41 +02:00
Fabio Manganiello
dcb4a36959 Replaced os.environ['HOME'] with os.path.expanduser('~') (Windows compatibility)
Solves #74
2019-07-29 00:03:01 +02:00
Fabio Manganiello
0ab70cdbae Kodi Application.SetVolume() expects an integer or a string, not a float 2019-07-25 23:54:32 +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
83db3f770c Don't generate HTML/CSS wrapper for the content unless the output is a
destination file (HTML/PDF).
2019-07-25 18:08:30 +02:00
Fabio Manganiello
beef06fad2 Log exception and parser output if it returns invalid JSON 2019-07-24 23:31:27 +00: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
5c3d32d05d Fixed undefined reference 2019-07-19 13:50:01 +02:00
Fabio Manganiello
f86e2eb5a7 Implemented settings page and finalized multi-user support 2019-07-19 00:50:52 +02:00
Fabio Manganiello
ca030b06e0 Added support (not working yet) for custom Google device actions and events 2019-07-17 14:56:04 +02:00
Fabio Manganiello
008fce70fa Replaced references to in pydoc with format, as doesn't seem to work in RTD 2019-07-16 23:00:20 +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
4e8235a649 More robust logic to handle temporary database connection errors through retry mechanism 2019-07-16 16:40:56 +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
55cd937a51 Made OMXPlayer plugin more resiliant in the case where the player has already terminated 2019-07-13 22:12:56 +02:00
Fabio Manganiello
0b05d7d8de pylint warnings fixed 2019-07-13 18:25:42 +02:00
Fabio Manganiello
8b2c6d333e Lint warnings fixed 2019-07-13 14:22:43 +02:00
Fabio Manganiello
654c61ec51 Standardized omxplayer returned attributes and volume management 2019-07-12 20:12:59 +02:00
Fabio Manganiello
50313580fd Catch PortAudio exception in case of race conditions on closed streams and re-initialize the assistant object when they occur 2019-07-12 18:19:32 +02:00
Fabio Manganiello
bb3a39acb9 Better synchronization mechanism between push-to-talk and platypush when an event is matched and no assistant playback should follow up 2019-07-12 18:11: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
6769707580 Stop assistant interaction if a phrase match is found 2019-07-12 09:37:37 +02:00
Fabio Manganiello
402baee48e typo 2019-07-12 00:56:18 +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
09165ca0ff Dashboard rewritten in vue.js 2019-07-07 20:11:32 +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
17de2a194c Removed comment 2019-06-24 01:04:52 +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
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
9805ed0479 Merge branch 'master' into vuejs 2019-06-18 18:31:11 +02:00
Fabio Manganiello
f108157a8a Fixed inconsistencies/warnings in calendar plugins 2019-06-18 18:30:43 +02:00
Fabio Manganiello
ecd41a1f41 New media webplugin WIP 2019-06-18 18:14:48 +02:00
Fabio Manganiello
e5d7334662 New media webplugin WIP 2019-06-16 21:45:21 +02:00
Fabio Manganiello
076d766745 New TTS webpanel plugins 2019-06-11 11:53:15 +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
611a137ff6 music.mpd vue.js refactoring WIP: Implemented playlist track move feature 2019-06-04 15:59:07 +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
7a74b83c76 music.mpd plugin vue.js refactoring - WIP 2019-05-30 02:07:28 +02:00
Fabio Manganiello
01b111f436 Webpanel refactoring in progress 2019-05-28 19:16:55 +02:00
Fabio Manganiello
5041d8bec2 whiteline PEP fix 2019-05-28 19:16:55 +02:00
Fabio Manganiello
f053aa455d PEP fixes for light.hue plugin and new methods xy and ct added 2019-05-28 19:16:55 +02:00
Fabio Manganiello
7ea65cf90e One more url fix 2019-04-24 23:57:11 +02:00
Fabio Manganiello
5ed4b10de3 Fixed torrent search URLs 2019-04-24 23:53:20 +02:00
Fabio Manganiello
d2f4ec44c3 Support for searching all the torrent categories in parallel if no categories is provided 2019-04-24 23:45:57 +02:00
Fabio Manganiello
2bcc22e0fc Refactored torrent search 2019-04-24 23:25:25 +02:00
Fabio Manganiello
9f3f6c9caa Log URL being parsed 2019-04-13 08:17:45 +00:00
Fabio Manganiello
3dd47260d6 Raise runtime error if mercury API responds with empty response 2019-04-13 08:15:08 +00:00
Fabio Manganiello
8553a8eeb5 typo 2019-04-13 08:10:35 +00:00
Fabio Manganiello
72f179cb7e typo 2019-04-13 08:08:20 +00:00
Fabio Manganiello
1ea6041dfa Log response from Mercury API 2019-04-13 08:06:40 +00:00
Fabio Manganiello
611e5f2160 Set default title with timestamp if no title is provided by the Instapaper API 2019-04-13 08:03:42 +00:00
Fabio Manganiello
c55deab6cb Support for authentication in HTTP plugin methods 2019-04-11 16:21:39 +02:00
Fabio Manganiello
12fefaa220 Improved generated pdf font size and family 2019-03-30 14:08:04 +01:00
Fabio Manganiello
24ec35e5b3 Increased font size in generated pdf 2019-03-30 12:41:02 +01:00
Fabio Manganiello
3ca6e75634 Added font style to generated pdf 2019-03-30 12:25:19 +01:00
Fabio Manganiello
b8e9adadbe Added plugin to parse web pages 2019-03-29 03:57:19 +01:00
Fabio Manganiello
20b0c09a0c Removed workaround that doesn't work 2019-03-20 18:37:49 +01:00
Fabio Manganiello
eb40024c53 Only initalize credentials map in Google plugins if some scopes are required 2019-03-18 01:06:10 +01:00
Fabio Manganiello
8b89166e30 Fixed typo in SSL variable name 2019-03-18 00:16:54 +01:00
Fabio Manganiello
cbe4d8cd78 Delete recording thread item from map only if the thread has actually stopped 2019-03-17 22:55:36 +01:00
Fabio Manganiello
81a200bd4e Make sure that device_id is in _is_recording and hasn't been removed by another thread before checking it 2019-03-17 02:16:43 +01:00
Fabio Manganiello
f95f52df19 Few fixes in camera plugin 2019-03-17 02:06:47 +01:00
Fabio Manganiello
9ed4ad6d85 Set workaround environment variable before importing OpenCV 2019-03-17 01:56:05 +01:00
Fabio Manganiello
3af30075e3 Temporarily workaround for OpenCV >= 3.4.2 bug that doesn't properly release the video device 2019-03-17 01:26:06 +01:00
Fabio Manganiello
5942a7cd84 Removed unused imports 2019-03-17 00:56:32 +01:00
Fabio Manganiello
87d63d7cb3 Added Google Fit backend 2019-03-16 01:22:42 +01:00
Fabio Manganiello
55c0896b31 Refactored Google plugins with support multiple scopes and a simpler API and added Google Fit plugin 2019-03-14 01:12:39 +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