Commit Graph

748 Commits

Author SHA1 Message Date
Fabio Manganiello 424077fdbc Completed ZWave web panel (see #123) 2020-02-22 01:00:52 +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 9b2e4f9d0c Added count parameter to the ping backend 2020-02-17 13:39:40 +01:00
Fabio Manganiello 30e51ee299 Network initialization for the Pushbullet backend should be done in the run method.
Network errors in the constructor cause the whole application to fail.
Better to do the initialization in the run method with retries.
2020-02-17 00:46:33 +01:00
Fabio Manganiello fcef7af6a4 Adding Z-Wave web panel (#123) [WIP] 2020-02-10 00:39:32 +01:00
Fabio Manganiello c5adc141ea More robust mechanism for websocket message send section locking 2020-02-06 19:30:40 +01:00
Fabio Manganiello ca030c9b25 Websocket notifications delivery should be thread-safe.
If multiple threads process events and notify the websocket
clients at the same time then we may end up with inconsistent
messages delivered on the websocket (and websockets is not
designed to handle such cases). Protecting the send call with
a per-socket lock makes sure that we only write one message
at the time for a certain client.
2020-02-06 01:04:36 +01:00
Fabio Manganiello 02246a48ae Added Z-Wave integration (closes #76) 2020-02-05 22:26:52 +01:00
Fabio Manganiello 8caa170676 Don't consider the trailing / in pre-select tab mode 2020-02-01 00:17:11 +01:00
Fabio Manganiello b02b30656c Using /#[plugin.name] as a URL hint for selecting a tab on load.
Closes #83
2020-01-31 20:29:47 +01:00
Fabio Manganiello eff21c0720 Added /plugin/<plugin_name> route for single plugin view (see #83) 2020-01-23 00:27:36 +01:00
Fabio Manganiello 8255f9af28 Added zigbee2mqtt integration (see #76) 2020-01-22 18:34:28 +01:00
Fabio Manganiello f3b50d0de1 Using the Github link for the flag-icon.css instead of cloning the whole submodule 2020-01-20 22:38:13 +01:00
Fabio Manganiello 6c797b0ad9 Implemented support for assistant pause/resume conversation (closes #109) 2020-01-19 16:21:29 +01:00
Fabio Manganiello 89ae86492f If the latest build is still running then we should wait and not process events 2020-01-19 15:43:39 +01:00
Fabio Manganiello db862d1d96 Datetime conversion should also support cases where the input is a float timestamp represented as a string 2020-01-19 15:39:57 +01:00
Fabio Manganiello 42eabcf661 More robust ISO date to timestamp conversion 2020-01-19 15:37:55 +01:00
Fabio Manganiello bbb52ba191 Always convert datetime to UNIX timestamp in Travis-Ci backend.
Python can't perform comparisons between offset-aware and
offset-naive dateime objects. Instead, convert them to UTC
timestamps before comparisons.
2020-01-19 15:35:13 +01:00
Fabio Manganiello c44de5e2d7 Grouped common CSS and JS includes into separate templates 2020-01-19 14:47:51 +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 02607bae97 Dumb Python won't convert perfectly finely formatted ISO dates unless I do some manual conversion 2020-01-12 14:05:58 +01:00
Fabio Manganiello b920927dab Added Travis-Ci integration (closes #104) 2020-01-12 13:53:46 +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 4c3140c9b5 Fixed docs 2020-01-09 23:40:59 +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 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 d8a7c9c6e0 Added Arduino over Firmata integration - closes #92 2020-01-05 00:46:46 +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 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 dc2b3689a2 Fixes 2019-12-30 19:04:13 +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 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 a23f5446da Added GPIO web panel 2019-12-22 18:10:30 +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 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 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 d38746d278 Moved imports for extra dependencies inside the methods where they are actually used 2019-12-01 23:35:05 +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 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 2cf9bf654d Removed unused imports from Snowboy backend 2019-11-25 20:27:52 +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 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 313a195831 Support for torrent direct download through magnet link in web panel 2019-09-29 17:48:30 +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 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 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 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 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 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 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 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 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 1ca7feb506 Small fix for the font size on mobile 2019-07-28 23:32:52 +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 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 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 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 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 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 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 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 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 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 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
Fabio Manganiello e82edc8338 Set metrics object through Vue.set 2019-07-02 15:02:44 +02:00
Fabio Manganiello be79d15faf Handle sensor event format correctly 2019-07-02 15:01:40 +02:00