Commit Graph

1580 Commits

Author SHA1 Message Date
Fabio Manganiello f5b010c15c Added nmap integration (closes #99) 2020-01-11 18:51:54 +01:00
Fabio Manganiello 1e342cc8a5 New interface for implementing backends.
Backends that simply poll for changes and wait some time
between checks can just implement a `loop()` method and,
optionally, `__enter__` and `__exit__` methods, so they
can perform initialization/cleanup logic within a context
manager.
2020-01-11 18:13:25 +01:00
Fabio Manganiello a7ca779870 Argument of int() can't be nullable 2020-01-11 16:24:35 +01:00
Fabio Manganiello 3b2ca4d70c Added Foursquare backend 2020-01-11 16:11:35 +01:00
Fabio Manganiello 3daf39e3e0 Stop polluting Pushbullet messages with StopEvent JSON whenever the backend stops. 2020-01-11 12:31:32 +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 40e65d882f Support for while/break/continue/return statemnts - closes #107 2020-01-09 10:28:02 +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 3e2a9c0401 Skip torrent status responses with no url. 2020-01-07 09:59:45 +01:00
Fabio Manganiello 9134a231b3 success=true will always be in the response: deal with it 2020-01-07 09:46:26 +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 cc424c6e7a Bump version: 0.11.2 → 0.11.3 2020-01-03 16:31:00 +01:00
Fabio Manganiello 8aadd5569e Added Trello backend: closes #90 2020-01-03 16:28:49 +01:00
Fabio Manganiello 1de3296c85 Support for group events and lists of authorized chat_ids 2020-01-01 23:28:21 +01:00
Fabio Manganiello 846d5ff2eb Support for underscores and minuses in Telegram command names 2020-01-01 22:33:57 +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 135cfc606c Added the right handler for location events 2020-01-01 21:06:51 +01:00
Fabio Manganiello de429a5b7d Extended Telegram integration 2020-01-01 20:59:22 +01:00
Fabio Manganiello fd5abc748f Added missing docs 2020-01-01 17:55:19 +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 8f2eb1c4e0 Reimplemented workers as threads instead of processes 2019-12-29 23:18:58 +01:00
Fabio Manganiello 931ab9d673 Removed debug print 2019-12-29 16:55:50 +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 ce2b3ae849 LINT fixes 2019-12-27 19:22:48 +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 b880a02ef6 Fixed websocket on_error handler signature 2019-12-25 20:43:20 +01:00
Fabio Manganiello 29789461d7 Added Todoist integration 2019-12-25 20:33:26 +01:00
Fabio Manganiello 7ecb27463c Added missing '@' 2019-12-24 14:04:23 +01:00
Fabio Manganiello ba31d4f4c9 Fixed parameter access 2019-12-24 14:00:06 +01:00
Fabio Manganiello 2edb3f0944 Added button for refreshing available cameras 2019-12-24 13:52:14 +01:00
Fabio Manganiello ef58cc9e32 Support for username/password in camera URLs if authentication is required 2019-12-24 13:52:14 +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 470f4a8fc9 Added disable_web_clients_notification on Event for events
generated with high throughput that shouldn't be propagated
to the connected websockets.
2019-12-22 19:38:01 +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 60d5e7a0f6 Response cast fix 2019-12-17 20:00:08 +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 d1ea69262a Prevent active wait on the list of workers 2019-12-15 19:50:47 +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 4d361b59a3 Bump version: 0.11.1 → 0.11.2 2019-12-13 09:35:43 +00: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 e1ed7f681c Added bluetooth OBEX file browser service (see #89) 2019-12-12 00:11:27 +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 2c8993e67d LINT fixes 2019-12-09 19:22:38 +01:00
Fabio Manganiello f8a709fe98 Improved Pushbullet plugin 2019-12-09 11:00:31 +00:00
Fabio Manganiello 09caa66317 Return immediately in _parse_records if tag.ndef is null 2019-12-08 21:25:39 +01:00
Fabio Manganiello d498c21518 Implemented Node-RED backend, solves #88 2019-12-08 19:02:08 +01:00
Fabio Manganiello a6488e15fe Don't treat the execute tab as a special tab in the web panel,
otherwise configurations with enabled_plugins/disabled_plugins
won't work with it
2019-12-08 17:33:21 +01: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 fc360e3e43 Bump version: 0.11.0 → 0.11.1 2019-12-04 12:28:01 +00:00
Fabio Manganiello 50168e00c5 Bump version: 0.10.9 → 0.11.0 2019-12-04 12:17:17 +00: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 675b690929 switches should not be considered as a special token in the Config object 2019-12-04 02:58:45 +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 55dd7b0d53 Don't generate a startup script in docker - instead add /app to PYTHONPATH 2019-12-02 09:17:04 +01:00
Fabio Manganiello 5f54eaa108 Only python setup.py web_build is needed in Docker 2019-12-02 01:18:17 +01:00
Fabio Manganiello a1f3ff3ae5 Forgotten newlines 2019-12-02 01:13:57 +01:00
Fabio Manganiello e9df6768f9 Use a startup script to launch platypush from the /app folder in docker 2019-12-02 01:12:10 +01:00
Fabio Manganiello 93a5ffc755 git clone in Dockerfile must be recursive 2019-12-02 01:03:33 +01:00
Fabio Manganiello 93bb71bef7 Fixed extra newline 2019-12-02 00:59:25 +01:00
Fabio Manganiello e751325886 libffi-dev, libjpeg-turbo-dev and zlib-dev are also required to build some of the recommended dependencies 2019-12-02 00:56:22 +01:00
Fabio Manganiello f08be1f3c1 The generated command should all be on one line 2019-12-02 00:51:56 +01:00
Fabio Manganiello 3a347496d3 Fixed git clone && cd dance in generated Dockerfile 2019-12-02 00:49:19 +01:00
Fabio Manganiello 909695e070 git clones to /app/platypush 2019-12-02 00:43:37 +01:00
Fabio Manganiello 47f7a36e6e Prevent pending continuation line in generated Dockerfile 2019-12-02 00:41:48 +01:00
Fabio Manganiello de3bb48493 mkdir -p /app in generated Dockerfile 2019-12-02 00:37:34 +01:00
Fabio Manganiello 3ac9ecbd8f Do git clone and explicit pip install -r requirements.txt in platydock to make sure that all the recommended dependencies are installed 2019-12-02 00:34:32 +01:00
Fabio Manganiello fbe4f9494c No need to run pip install pyScss in setup.py if it's not available 2019-12-02 00:24:28 +01:00
Fabio Manganiello 346b1be924 Filter out in get_plugins the special configuration fields not associated with plugins 2019-12-01 23:53:14 +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 f8d3ea5197 Refactored platydock and platyvenv 2019-12-01 22:27:54 +01:00
Fabio Manganiello c5284c7183 Bump version: 0.10.8 → 0.10.9 2019-12-01 19:55:10 +01:00
Fabio Manganiello f537a7785a typo 2019-12-01 18:23:50 +01:00
Fabio Manganiello e3476ee634 Bump version: 0.10.7 → 0.10.8 2019-12-01 17:47:53 +01:00
Fabio Manganiello 92533c8303 Added special utils.get_context action to get current context 2019-12-01 17:43:10 +01:00
Fabio Manganiello a18452ab2e Made procedure.[sync|async].name second argument optional
A procedure will be sync if [sync|async] is not specified
2019-12-01 16:48:57 +01:00
Fabio Manganiello f281411b2e Set the light property before the any_on/all_on check on the group 2019-12-01 16:33:48 +01:00
Fabio Manganiello 3bbb6cf053 Include dev version of vue.js if available in the HTTP static/js
folder, otherwise include the minified version
2019-12-01 16:33:48 +01:00
Fabio Manganiello abbfe517de Don't override matches_condition in ResponseEvent to run stop_conversation. Use the flag play_response=False on plugin level to bypass the response instead 2019-11-26 15:52:30 +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 0ddfce3dce PEP fixes 2019-11-26 00:04:17 +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 2cf9bf654d Removed unused imports from Snowboy backend 2019-11-25 20:27:52 +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 f98a440200 Support for explicit enabled_plugins/disabled_plugins on webpanel index 2019-11-22 00:00:14 +01:00
Fabio Manganiello f04f42caef Refactored and simplified Snapcast backend. Moreover the "grace sleep"
should happen in any case of errors, not only on disconnect errors,
to prevent a tight loop of retries.
2019-11-05 18:11:04 +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 c4f4d61851 Bump version: 0.10.6 → 0.10.7 2019-10-21 01:30:57 +02:00
Fabio Manganiello 9914d4ef0b Handling CSS and fonts properly in RSSUpdates digests 2019-10-13 12:43:18 +02:00
Fabio Manganiello 4c72646759 typo 2019-10-08 10:24:48 +00:00
Fabio Manganiello ca41f6b8cf Torrent download from web panel should be asynchronous 2019-10-08 10:14:45 +00: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 313a195831 Support for torrent direct download through magnet link in web panel 2019-09-29 17:48:30 +02:00
Fabio Manganiello fd10b2260c Changed PopcornTime endpoints 2019-09-29 10:31:00 +02:00
Fabio Manganiello faa55daccf Smarter cron management with croniter 2019-09-28 01:34:27 +02:00
Fabio Manganiello bcb47909c9 Reverted seconds support in cronjobs 2019-09-27 15:00:00 +02:00
Fabio Manganiello 87d14134f8 Increased cron check frequency to support seconds granularity 2019-09-27 14:51:53 +02:00
Fabio Manganiello bcd3bf7911 Support for seconds in cron expressions 2019-09-27 14:47:27 +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 3da6c41f21 Shorter default poll_seconds (0.01) for better motion sensitivity 2019-09-24 00:10:17 +02:00
Fabio Manganiello 63d222d2ee Slot enum mapping fix 2019-09-23 23:48:26 +02:00
Fabio Manganiello f76e45dda9 Backend name typo 2019-09-23 23:34:46 +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 5ca8ee594f If a for loop argument returns a native Python iterable then expand that iterable 2019-08-16 19:04:15 +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 8462f474f7 Skip tolerance check whether if the new or the old value are not numeric 2019-08-14 22:49:18 +02:00
Fabio Manganiello 4a34fcd7fd More robust sensor tolerance measurement in case of non-numeric sensor data 2019-08-14 22:45:50 +02:00
Fabio Manganiello e7448d90d6 Trigger a ConversationStartedEvent before initializing the assistant object 2019-08-14 21:46:31 +02:00
Fabio Manganiello df5f17eb0e Fixed wrong plugin name 2019-08-14 21:38:52 +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 e0351421ad Better management of sensor tolerance in SensorBackend 2019-08-14 20:39:21 +02:00
Fabio Manganiello 851635bc15 typo on serial plugin name 2019-08-14 20:03:34 +02:00
Fabio Manganiello 8bfe875483 We don't need to fail hard in backend.http if the backend is configured
to run the web server externally but without spawning uswgi directly
(e.g. if nginx takes care of spawning and wrapping the uwsgi instance)
2019-08-14 20:02:13 +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 e79430cdc4 Implemented tolerance threshold for lat/long/alt in GPS backend 2019-08-13 22:25:28 +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 39b0c3b741 Added GPS backend 2019-08-03 02:06:06 +02:00
Fabio Manganiello c9dc1aac44 _last_read should always contain the full output of the plugin, not
the filtered output
2019-08-01 23:41:46 +02:00
Fabio Manganiello a3271f0522 Only return the sensor data whose value has changed on the envirophat
backend
2019-08-01 23:33:36 +02:00
Fabio Manganiello f06a851b61 Accelerometer and magnometer reads should be dict not set 2019-08-01 23:23:19 +02:00
Fabio Manganiello 675f899b5f FIX: get_measurement should return a dict not a set 2019-08-01 23:17:04 +02:00
Fabio Manganiello 72d1b3cd2a Filter out only selected sensors on the enviropHAT backend 2019-08-01 22:47:34 +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 1ca7feb506 Small fix for the font size on mobile 2019-07-28 23:32:52 +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 f5dbfe08bd Bump version: 0.10.5 → 0.10.6 2019-07-25 18:40:05 +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 44e27e6c62 Log the link we are trying to parse (useful for debugging parsing issues) 2019-07-25 18:23:28 +02: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 34433a363b Call sound.stop_recording upon audio stream stop so we won't have hanging streams with no clients connected 2019-07-25 14:01:09 +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 d64c519660 Bump version: 0.10.4 → 0.10.5 2019-07-25 01:15:38 +02:00
Fabio Manganiello 6aaa2fa1ea extract_content is supposed to be a boolean 2019-07-25 01:09:16 +02: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 426f064459 "Remember me" options on session should leave the cookie for a longer
time (e.g. one year), it should be browser-session-only otherwise
2019-07-23 00:31:17 +02:00
Fabio Manganiello a16fc65d37 Try to load the dev version of vue.js if available 2019-07-19 20:00:39 +02:00
Fabio Manganiello 57712b3693 Be more robust in case of Mercury API failures while parsing RSS feeds. TODO: the Mercury API has now been retired and replaced by a library, that however is only available for Node.js. Figure out how to wrap the new library in Python 3 2019-07-19 15:00:06 +00:00
Fabio Manganiello f12c6db34f Added camera web panel 2019-07-19 15:20:48 +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 cd9bdbb1c8 Fixed undefined reference 2019-07-17 14:57:50 +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 a60e89806f Fixed undefined reference 2019-07-16 22:43:27 +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 96c9d5460a Log the underlying error cause too if get_plugin fails 2019-07-16 16:51:27 +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 0826dd53a6 FIX: LifoQueue.get is blocking. Check if the queue is empty instead 2019-07-13 22:22:44 +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 07dbe57641 pylint warnings fixed 2019-07-13 15:49:38 +02:00
Fabio Manganiello 8b2c6d333e Lint warnings fixed 2019-07-13 14:22:43 +02:00
Fabio Manganiello 3c3496b19a Revert "The active-glow animation takes too much CPU on music.mpd"
This reverts commit 4c3cd2fcf2.
2019-07-13 12:27:43 +02:00
Fabio Manganiello 7666e8cb51 Including vue.min.js instead of vue.js 2019-07-13 12:25:02 +02:00
Fabio Manganiello 3479033170 Version bump 0.10.3 -> 0.10.4 2019-07-12 23:57:06 +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 2999e47a0f Run the hotword detected sound in another thread, or it's likely to mess up with the timing of the hotword-assistant interaction 2019-07-12 17:44:59 +02:00
Fabio Manganiello fe96940744 detect_sound should support relative and ~ paths 2019-07-12 14:55: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 b63843a130 Fixed assistant event constructor with new Google plugins structure 2019-07-12 01:45:27 +02:00
Fabio Manganiello 6848a2a0c1 Version bump 0.10.2 -> 0.10.3 2019-07-12 00:59:03 +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 792c24700c Refactored requirements to only include mandatory ones and added style reference to assistant in dashboard.html 2019-07-10 12:18:53 +02:00
Fabio Manganiello f086d30e71 Version bump 0.10.1 -> 0.10.2 2019-07-09 02:14:52 +02:00
Fabio Manganiello fc296a1417 Version bump 0.10 -> 0.10.1 2019-07-09 02:01:01 +02:00
Fabio Manganiello 24d3810e44 Added NFC backend 2019-07-09 01:44:31 +02:00
Fabio Manganiello 0a97bb2345 Better style for webpanel switches 2019-07-08 15:21:13 +02:00
Fabio Manganiello b50a52acf2 Sort articles in descending order when querying from RSS news web widget 2019-07-08 09:26:38 +02:00
Fabio Manganiello 4c3cd2fcf2 The active-glow animation takes too much CPU on music.mpd 2019-07-08 00:58:02 +02:00
Fabio Manganiello c19251c6a1 Always reset carousel image width to auto before re-adjusting the size 2019-07-08 00:16:43 +02:00
Fabio Manganiello b2c31fcec6 Dashboard style improvements 2019-07-07 23:50:35 +02:00
Fabio Manganiello 42e5673192 Increased font size for widgets 2019-07-07 20:47:44 +02:00
Fabio Manganiello 851c0f8583 Version bump 0.10 -> 0.10 2019-07-07 20:19:25 +02:00
Fabio Manganiello 09165ca0ff Dashboard rewritten in vue.js 2019-07-07 20:11:32 +02:00
Fabio Manganiello 8006f3688c Removed old gpio scripts 2019-07-02 16:27:13 +02:00
Fabio Manganiello 1e39d3a8d2 Return obj even when the metrics are undefined, or we will set this.metrics to undefined 2019-07-02 16:12:24 +02:00
Fabio Manganiello 75f7fbd67a Don't perform reads on the serial plugin when refreshing 2019-07-02 16:04:06 +02:00
Fabio Manganiello 0dac122db5 Style for the new sensors web plugin 2019-07-02 15:38:09 +02:00
Fabio Manganiello fb4af87967 Style for the new sensors web plugin 2019-07-02 15:23:41 +02:00
Fabio Manganiello 9c44d047ac Vue.set to set metrics object, array assignment won't be picked up by Vue listeners 2019-07-02 15:08:32 +02:00