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
Fabio Manganiello
23d106969f
Default timeout for API calls from 30 to 60 seconds
2019-07-02 14:56:43 +02:00
Fabio Manganiello
40fa640397
New sensors web panel WIP
2019-07-02 14:42:25 +02:00
Fabio Manganiello
54a3643605
Added name and value props to sensor component
2019-07-02 14:39:04 +02:00
Fabio Manganiello
43b01f7c0e
Fixed icon class
2019-07-02 14:34:05 +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
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
1964f74f19
New media webplugin WIP
2019-06-22 19:05:17 +02:00
Fabio Manganiello
2da6d7d866
New media webplugin WIP
2019-06-22 14:41:42 +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
ecd41a1f41
New media webplugin WIP
2019-06-18 18:14:48 +02:00
Fabio Manganiello
32efebe405
Fixed typos and warnings in snapcast backend
2019-06-16 21:59:31 +02:00
Fabio Manganiello
e5d7334662
New media webplugin WIP
2019-06-16 21:45:21 +02:00
Fabio Manganiello
5e2b927267
Explicitly inherit the height of parent panels container
2019-06-15 13:02:09 +02:00
Fabio Manganiello
7015c0df11
Explicitly inherit the height of parent panels container
2019-06-15 13:00:41 +02:00
Fabio Manganiello
496e692860
calc mixin shit
2019-06-15 12:50:14 +02:00
Fabio Manganiello
a25565a80d
Fill window.config object before including other js code
2019-06-15 12:01:13 +02:00
Fabio Manganiello
3a3637d3d7
Fixed calc mixin and introduced media handlers for webpanel media plugin
2019-06-15 00:51:48 +02:00
Fabio Manganiello
fc5ea429d2
Using cross-browser mixin for calc
2019-06-14 19:15:57 +02:00
Fabio Manganiello
359e6703e4
new font-awesome commits
2019-06-14 01:01:51 +02:00
Fabio Manganiello
9d4511577f
- Refactored webpanel style to use flex and dynamic element heights
...
instead of ugly fixed/absolute positioning.
- New media webpanel plugin WIP
2019-06-14 00:54:20 +02:00
Fabio Manganiello
076d766745
New TTS webpanel plugins
2019-06-11 11:53:15 +02:00
Fabio Manganiello
205903bc40
Removed old music.snapcast.js
2019-06-10 23:26:26 +02:00
Fabio Manganiello
91ef6f3ce2
Finalized new Snapcast webpanel plugin
2019-06-10 15:11:24 +02:00
Fabio Manganiello
95a9c22618
Added new Snapcast webpanel plugin
2019-06-10 00:55:23 +02:00
Fabio Manganiello
33d55dcd93
Fixed Pushbullet backend
2019-06-08 22:37:19 +02:00
Fabio Manganiello
6019ba9db6
Wrote new Pushbullet handler for webpanel
2019-06-08 17:16:47 +02:00
Fabio Manganiello
46836374b0
Removed old application.js
2019-06-08 13:38:57 +02:00
Fabio Manganiello
4bfd6baab2
Removed old assistant google web plugin
2019-06-08 13:38:18 +02:00
Fabio Manganiello
bb4cc80262
Added assistant.google plugin in new webpanel
2019-06-08 13:25:40 +02:00
Fabio Manganiello
41d8ae48e1
Removed old jQuery music.mpd plugin
2019-06-07 23:13:07 +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
0b6b29f043
Improved support for multiple modals and added ability to search for albums and artists on the fly from tracks in music.mpd - vue.js refactoring WIP
2019-06-07 00:43:39 +02:00
Fabio Manganiello
7df0cec14e
Implemented support for modals and music.mpd search and item info
2019-06-06 02:08:36 +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
d3ecb7b871
music.mpd vue.js refactoring WIP
2019-06-03 23:53:37 +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
0f3987aaf2
Reverted scrollbar style override
2019-05-30 02:19:20 +02:00
Fabio Manganiello
7a74b83c76
music.mpd plugin vue.js refactoring - WIP
2019-05-30 02:07:28 +02:00
Fabio Manganiello
444fe6331d
New support for notifications in webpanel in vue.js
2019-05-28 19:16:55 +02:00
Fabio Manganiello
e1c3951456
Added events and websocket support in webpanel refactoring and removed old light.hue templates and scripts
2019-05-28 19:16:55 +02:00
Fabio Manganiello
197a5805be
Made nav header fixed
2019-05-28 19:16:55 +02:00
Fabio Manganiello
01b111f436
Webpanel refactoring in progress
2019-05-28 19:16:55 +02:00
Fabio Manganiello
897338399f
Synchronize all lights toggles when scenes are selected
2019-05-28 19:16:55 +02:00
Fabio Manganiello
e72d4de581
vue.js refactor part 1 - prepared webpanel logic and migrated light.hue plugin
2019-05-28 19:16:55 +02:00
Fabio Manganiello
8b478ede45
vue.js migration commit - WIP
2019-05-28 19:16:55 +02:00
Fabio Manganiello
1ad86428c8
Added support for custom webhooks
2019-05-17 14:55:29 +00:00
Fabio Manganiello
9fc243c93d
Use startTime instead of endTime as a time indicator to identify new records
2019-03-29 10:14:46 +00:00
Fabio Manganiello
24d395ce49
Use endTime
2019-03-28 14:37:26 +01:00
Fabio Manganiello
c84a6047ed
Using modifiedTime instead of startTime to track new data points
2019-03-28 14:17:43 +01:00
Fabio Manganiello
c3b2212972
Storing last processed timestamp per fit metric instead of a single timestamp for all the metrics to prevent new data points from being masked from newer ones from other metrics
2019-03-28 02:36:16 +01:00
Fabio Manganiello
68f985d2c6
Copy websockets list before iterating over it to prevent race conditions upon list changed upon iteration
2019-03-27 02:25:06 +01:00
Fabio Manganiello
387ed23e86
No need for snapcast-settings-btn class on snapcast-host-container
2019-03-27 00:49:53 +01:00
Fabio Manganiello
67fd88950a
Fixed modal madness in Snapcast frontend
2019-03-27 00:41:19 +01:00
Fabio Manganiello
31108b21e5
Don't define Snapcast modal open elements on the highest level, or modals will pop up even when clicking on other elements than the name
2019-03-21 18:30:32 +01:00
Fabio Manganiello
92f1f3eea7
Wrap Google Fit checks in try-catch block to prevent the backend from crashing with no reload
2019-03-20 10:48:07 +00:00
Fabio Manganiello
7072a19829
Print timestamps in human readable format
2019-03-19 11:32:06 +00:00
Fabio Manganiello
eb7b9c066c
Logging info about processed Fit entries to debug why we don't always get all the new events
2019-03-19 11:29:53 +00:00
Fabio Manganiello
af97f7b6a5
Tentative fix for Google Fit data points timestamp tracking
2019-03-18 11:58:40 +00:00
Fabio Manganiello
9d36688a61
Don't fail hard if it's not possible yet to retrieve the mopidy status in the backend constructor
2019-03-17 02:06:56 +01:00
Fabio Manganiello
a1c31a9fb9
Better handling for last_timestamp reads from Google Fit backend
2019-03-17 00:31:32 +01:00
Fabio Manganiello
9153b1e9c4
Added __init__.py init backend.google
2019-03-16 19:36:46 +01:00
Fabio Manganiello
f201f039e9
Extended and normalized key names in GoogleFitEvent type
2019-03-16 19:28:47 +01:00
Fabio Manganiello
87d63d7cb3
Added Google Fit backend
2019-03-16 01:22:42 +01:00
Fabio Manganiello
022262eb78
Handle MQTT listeners by host with lists of topics, so we only need one listener thread per host
2019-03-07 23:03:12 +01:00
Fabio Manganiello
84099b2ab7
Added support for multiple listeners on multiple servers and topics for general-purpose messaging on the MQTT backend
2019-03-07 22:52:02 +01:00
Fabio Manganiello
38ebe87220
Get the device_id after initializing/creating the device
2019-03-07 20:11:32 +01:00
Fabio Manganiello
9324ad3f9b
Create a device if it doesn't exist
2019-03-07 20:05:40 +01:00
Fabio Manganiello
fb93aec3ec
Added empty __init__.py to plugins to let importlib correctly find the submodules
2019-03-06 02:21:26 +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
Fabio Manganiello
619c750f3b
Don't fail hard if status is not available
2019-03-03 12:42:31 +01:00
Fabio Manganiello
a9fb6a38dd
New API for firing events and registering/unregistering event handlers
...
both for plugins and backends
2019-02-28 01:21:25 +01:00
Fabio Manganiello
811af1bf9d
Removed conflict leftovers
2019-02-26 23:55:00 +01:00
Fabio Manganiello
17367f5b3e
Added camera plugin over cv2
2019-02-26 23:50:48 +01:00
Fabio Manganiello
150d95d0dc
Support for launching uWSGI directly from the HTTP backend
2019-02-25 10:52:48 +01:00
Fabio Manganiello
0104037ada
Dashboard background image added to static/resources
2019-02-24 20:10:58 +01:00
Fabio Manganiello
2adab13d50
Added favicon
2019-02-24 19:59:08 +01:00
Fabio Manganiello
8ef3aafb52
Added missing doc line in backend.http
2019-02-24 15:53:01 +01:00
Fabio Manganiello
8153d8476f
Added uWSGI optional dependency for HTTP backend
2019-02-24 12:35:26 +01:00
Fabio Manganiello
e3fcebe4b6
Made a separate uWSGI startup script for the webapp
2019-02-24 00:17:31 +01:00
Fabio Manganiello
c74b939660
Renamed app->application for the main Flask webapp to make sure that the default uwsgi configuration can pick it up
2019-02-24 00:11:35 +01:00
Fabio Manganiello
d5c31d938b
Run each message handling logic on the bus on a separate thread to make sure that messages don't queue up too much
2019-02-23 23:58:43 +01:00
Fabio Manganiello
0e794cd1b0
Refactored HTTP server to split the routes on separate files and keep the main Flask app object in a separate file as well so it can be easily wrapped by a WSGI instance
2019-02-23 21:19:00 +01:00
Fabio Manganiello
73383ab80f
Panel and modal close bindings should refer the target element in the event, not $(this)
2019-02-21 20:13:31 +01:00
Fabio Manganiello
6e1b6686c2
Revert "Running Flask webserver in another thread instead than another process"
...
This reverts commit 0a5c42fdfd
.
2019-02-21 16:15:06 +01:00
Fabio Manganiello
0a5c42fdfd
Running Flask webserver in another thread instead than another process
2019-02-21 14:33:41 +01:00
Fabio Manganiello
97e1dfacdf
Made VLC template symlink
2019-02-21 01:38:21 +01:00
Fabio Manganiello
fd18bd84ca
Don't download subtitles for magnet links (until the media file/metadata is ready at least)
2019-02-19 10:37:29 +01:00
Fabio Manganiello
151e2e56d9
typo
2019-02-19 01:05:44 +01:00
Fabio Manganiello
11af83f88f
Added symlink media.mpv.html -> media.html
2019-02-19 00:19:48 +01:00
Fabio Manganiello
a21a11d499
Only proceed with subtitles loading when the list of subs is not empty
2019-02-17 16:29:39 +01:00
Fabio Manganiello
7d1c9275f5
Make it 10 seconds when it comes to poll time
2019-02-16 20:21:04 +01:00
Fabio Manganiello
55f1a33d90
Keep a sleep between polls to the Snapcast servers
2019-02-16 20:17:15 +01:00
Fabio Manganiello
6ac62b0161
Reset the time-seek indicator also on the web panel
2019-02-13 18:01:56 +01:00
Fabio Manganiello
4503eb31ed
Clear track elapsed time display on stop event
2019-02-13 17:53:57 +01:00
Fabio Manganiello
a287a10bcc
Propagate a MusicStopEvent upon playback stop even when the context of the current track is not available
2019-02-13 17:38:58 +01:00
Fabio Manganiello
7c817ba0c6
Position is expressed in milliseconds on mopidy websocket, convert to seconds
2019-02-13 17:25:56 +01:00
Fabio Manganiello
0a81b43f1d
startStreaming should always return a map
2019-02-13 10:15:18 +01:00
Fabio Manganiello
09f5c92541
Passing url from the promise in the right way
2019-02-13 09:38:40 +01:00
Fabio Manganiello
34e2dffe99
Catching music stop events both on track_playback_ended and playback_state_changed
2019-02-13 00:58:40 +01:00
Fabio Manganiello
8a9c868f77
Bringing more consistency in music.mpd.js regardless of the backend
2019-02-13 00:50:58 +01:00
Fabio Manganiello
0697598a86
Fixed music.js widget as well for the new mopidy backend
2019-02-13 00:32:14 +01:00
Fabio Manganiello
3190d3c6c8
Fixing music.mpd.js both for mpd and mopidy backends
2019-02-13 00:27:36 +01:00
Fabio Manganiello
f0f6d43990
Using the right naming for length and elapsed variables
2019-02-12 23:59:13 +01:00
Fabio Manganiello
71c6ba2d34
More compatibility between TCP-based mpd and websocket-based mopidy backends when it comes to how the track time is reported
2019-02-12 23:48:18 +01:00
Fabio Manganiello
77a76370a5
Returning flat representation for artist and renamed 'name' attribute for consistency with the mpd backend
2019-02-12 23:24:16 +01:00
Fabio Manganiello
1c4edf93bf
Another typo
2019-02-12 23:19:36 +01:00
Fabio Manganiello
97855b1535
state might not always be provided in a music event
2019-02-12 23:11:37 +01:00
Fabio Manganiello
18d2c51b4e
Forgot an enumerate
2019-02-12 23:08:48 +01:00
Fabio Manganiello
e5c169a549
on_message requires two arguments
2019-02-12 23:00:16 +01:00
Fabio Manganiello
6024eddd2d
on_open requires ws as a parameter
2019-02-12 22:58:22 +01:00
Fabio Manganiello
c18515bd3c
Few more fixes on mopidy backend
2019-02-12 22:57:09 +01:00
Fabio Manganiello
ee3df8fe8c
Switched mopidy backend from websockets to websocket-client
2019-02-12 22:52:29 +01:00
Fabio Manganiello
b555777cc8
Use another event loop for the synchronous websocket communication method
2019-02-12 20:49:10 +01:00
Fabio Manganiello
73d7e9a3ef
Fixes on mopidy backend
2019-02-12 20:45:40 +01:00
Fabio Manganiello
148d25f1cb
Added mopidy backend functionalities
2019-02-12 20:34:17 +01:00
Fabio Manganiello
7b99842225
Added draft for mopidy backend over websocket
2019-02-12 17:29:24 +01:00
Fabio Manganiello
f68efc0d68
Attempt to support subtitles on Chromecast media too
2019-02-12 11:13:19 +01:00
Fabio Manganiello
5cbd0fdfe7
Added support for VTT subtitles and subtitles toggling both in local and browser media players
2019-02-12 01:30:55 +01:00
Fabio Manganiello
41c34b4bc5
Attempt to support subtitle tracks in web player
2019-02-11 18:46:25 +01:00
Fabio Manganiello
34f0264d5e
Subtitles support
...
- Added support for local and OpenSubtitles media subs
- Added management of media events in web panel
2019-02-11 00:55:20 +01:00
Fabio Manganiello
630850ee9a
Reset the connection to a Snapcast server if it starts failing
2019-02-10 11:08:04 +01:00
Fabio Manganiello
cd49f22d5c
Introduced floating panel with options on element click instead of the double-click-to-play logic on media elements
2019-02-09 01:53:17 +01:00
Fabio Manganiello
e2b0bf8462
More consistent management of media devices icons and added devices refresh button
2019-02-08 19:48:18 +01:00
Fabio Manganiello
b3f2974c4c
Support for streaming media to browser
2019-02-08 00:43:43 +01:00
Fabio Manganiello
9ec3365413
Support for media streaming over internal HTTP server
...
Dropped the additional node.js dependency of localstream and relied
instead on a built-in solution to stream files
2019-02-07 14:27:14 +01:00
Fabio Manganiello
d15b21ddfa
Added support for remote cast on the web media panel
2019-02-06 09:47:00 +01:00
Fabio Manganiello
d297b5cc42
Trying to make a more resiliant assistant error handling
2019-02-05 11:59:04 +01:00
Fabio Manganiello
caa48ad056
Better error handling on the assistant
2019-02-05 11:26:03 +01:00
Fabio Manganiello
63b423cf75
Refactored mplayer and omxplayer under the same media player
2019-02-02 00:06:28 +01:00
Fabio Manganiello
2d6dfc86ac
typo
2019-01-30 10:04:42 +01:00
Fabio Manganiello
2956a9ca63
Restart the assistant connection on error
2019-01-30 09:21:35 +01:00
Fabio Manganiello
7a80cd08ce
Handling dashboards widget configuration as a list instead of a hash to preserve the order of the widgets
2019-01-28 23:14:12 +01:00
Fabio Manganiello
e1920700ec
Handle backend stop/disconnection on MQTT
2019-01-18 04:10:27 +01:00
Fabio Manganiello
122978c6f0
Support for extra args/kwargs passed to light.hue actions
2019-01-19 23:23:58 +01:00
Fabio Manganiello
2b38f1b03f
Added alarm, timer and error event handlers on assistant backend
2019-01-19 01:55:32 +01:00
Fabio Manganiello
03bdf5c547
Implemented get_timeout/get_timeouts/get_interval/get_intervals util methods
2019-01-14 20:44:40 +01:00
Fabio Manganiello
f38b2db273
Fixed interaction with modal dialogs to prevent browser race conditions when touchscreen events are involved
2019-01-13 23:45:03 +01:00
Fabio Manganiello
2d8b2ba55a
Removed pp- prefix from the name of the spawned processes and threads
2019-01-13 20:41:15 +01:00
Fabio Manganiello
3587fa7cb4
Force music.mpd plugin reload when the mpd backend fails to get the state
2019-01-12 02:15:24 +01:00
Fabio Manganiello
78d44364cf
Casting data to number whenever possible on FeedUpdateEvent as well
2019-01-12 01:58:35 +01:00
Fabio Manganiello
ca855fce5d
Improved Adafruit IO data handling
2019-01-12 01:38:17 +01:00
Fabio Manganiello
1087dae197
Added Adafruit IO backend
2019-01-12 01:07:38 +01:00
Fabio Manganiello
fbf3600e91
Setting thread and process names properly through prctl
2019-01-10 23:45:13 +01:00
Fabio Manganiello
56c7258c74
Setting names for threads
2019-01-10 23:08:29 +01:00
Fabio Manganiello
0bbfaf4498
If the mpd frontend receives an empty PlaylistChangeEvent, trigger an initPlaylist to update the playlist
2019-01-10 22:27:44 +01:00
Fabio Manganiello
a349b45ba4
Removed get_plugin utils method from web server, it messes up with also with the reentrant locks as it runs in another process. Refactored Snapcast frontend to get the backend hosts asynchronously through a plugin method
2019-01-10 11:52:39 +01:00
Fabio Manganiello
c1b05226a9
Made the mpd backend a bit more resiliant
2019-01-10 01:28:12 +01:00
Fabio Manganiello
6150e07fc9
Prevent toggle button id clash because of Snapcast using the MAC address of a device as a client (and therefore the same client connected to multiple servers may lead to inconsistent behaviour)
2019-01-10 00:29:22 +01:00
Fabio Manganiello
89ea4798bf
Restored retry logic in mpd backend
2019-01-09 22:20:01 +01:00
Fabio Manganiello
156e2e8b5a
Don't go crazy with plugin reload logic in the mpd backend in case of corrupted received messages
2019-01-09 22:05:53 +01:00
Fabio Manganiello
464f84805f
Added empty __init__.py to lib module
2019-01-09 15:13:10 +01:00
Fabio Manganiello
43ff0d4e25
Added hooks on light.hue web panel tab to synchronize light statuses with LightStatusChangeEvent events
2019-01-09 15:08:16 +01:00
Fabio Manganiello
d50d92e99e
Added Philips Hue lights backend to monitor status changes to the lights
2019-01-09 09:21:48 +01:00
Fabio Manganiello
9ba7a68578
Fixed modal height and positioning on screen
2019-01-08 19:23:06 +01:00
Fabio Manganiello
80bd5b684c
Added support for setting/changing group streams on Snapcast
2019-01-08 17:43:20 +01:00
Fabio Manganiello
19eab381ae
Weird Jinja bug broke the web panel load when using JSON parse, had to refactor it a bit to fix it
2019-01-08 13:53:21 +01:00
Fabio Manganiello
d91e494940
Added group and host modals and settings to Snapcast UI
2019-01-08 12:54:33 +01:00
Fabio Manganiello
382866b1a4
Added content to Snapcast group modal
2019-01-08 10:13:13 +01:00
Fabio Manganiello
fd8c3bb846
Connected the wires between Snapcast backend and frontend
2019-01-08 01:47:16 +01:00
Fabio Manganiello
a346442246
Draft for Snapcast UI style
2019-01-07 16:50:51 +01:00
Fabio Manganiello
004868f526
Added skeleton UI for Snapcast plugin on web panel
2019-01-07 15:34:31 +01:00
Fabio Manganiello
efad5a2bd7
Added Snapcast backend
2019-01-06 19:19:30 +01:00
Fabio Manganiello
9328566235
Selecting the default light group tab on web panel load if configured
2019-01-02 21:24:07 +01:00
Fabio Manganiello
5b9c54748e
Do not propagate a null response message back to the bus to prevent backends from breaking
2019-01-02 09:29:27 +01:00
Fabio Manganiello
62045c2b5c
Support for multiple resource_dirs on the HTTP backend
...
It is now possible to map multiple static resource directories to the
Flask HTTP server
2018-12-30 18:40:03 +01:00
Fabio Manganiello
9e28379203
Prevent js errors upon null artist or album
2018-12-30 15:43:09 +01:00
Fabio Manganiello
01006046e0
Don't try to push a Pushbullet note body to the bus if it's not a valid JSON
2018-12-27 22:45:31 +01:00
Fabio Manganiello
54c3381ae3
- Added frames throttling support on Leap Motion backend
...
- Moved the Leap listener to another process to prevent it from hanging the other backends
- Added support for sound and mix frequency analysis
2018-12-27 20:24:51 +01:00
Fabio Manganiello
cff4563dae
Rewritten Pushbullet backend using pushbullet.py for better stability
2018-12-27 02:29:44 +01:00
Fabio Manganiello
c445763979
- Support for sound "release" (removal from active stream)
...
- Added `query_ports` method to MIDI plugin
2018-12-27 00:09:05 +01:00
Fabio Manganiello
3554968468
Support for multiple sounds on the same stream
2018-12-26 16:10:14 +01:00
Fabio Manganiello
f53d1c06dc
No need to be verbose upon Pushbullet websocket temporary disconnections
2018-12-24 14:33:27 +01:00
Fabio Manganiello
ef241b3769
More robust Pushbullet reconnection logic
2018-12-24 12:31:38 +01:00
Fabio Manganiello
b911d46315
Create a new event loop in the Pushbullet backend
2018-12-24 11:37:18 +01:00
Fabio Manganiello
6a48a53c0d
Typo
2018-12-24 11:30:10 +01:00
Fabio Manganiello
186ade8f18
Refactored Pushbullet backend to remove the dependency from websocket-client and rely only on websockets
2018-12-18 19:01:51 +01:00
Fabio Manganiello
a226aad669
Added python-dateutil requirement
2018-12-19 00:09:21 +01:00
Fabio Manganiello
c8f7eb30aa
Made Redis backend and plugin more robust.
...
- Redis arguments read either from the backend or the plugin
configuration as a fallback in case of partial conf
- send_message now falls back on the default Redis connection
configuration if *args and **kwargs are missing
2018-12-18 15:51:37 +01:00
Fabio Manganiello
eb439d227a
Wrapped HTTP requests loop in a try-except block to prevent it from breaking in case of temporary failures
2018-12-05 15:55:19 +00:00
Fabio Manganiello
9421602e81
Removed duplicate log trace
2018-12-02 23:47:49 +01:00
Fabio Manganiello
7cd1efe2c6
Option to pair a specific device to the Wiimote backend
2018-12-02 23:44:17 +01:00
Fabio Manganiello
f677c79f54
Made inactivity timeout on Wiimote configurable
2018-12-01 19:38:43 +01:00
Fabio Manganiello
199e9fdba1
Better management of inactivity timeout on Wiimote
2018-12-01 19:22:10 +01:00
Fabio Manganiello
66b6f0bc8b
Added Wiimote support docs; Added Wiimote connection/disconnection events
2018-12-01 18:55:13 +01:00
Fabio Manganiello
383a075f39
Handling Wiimote timeout on Wiimote backend
2018-12-01 18:43:18 +01:00
Fabio Manganiello
2b03276159
#46 : Added Wiimote support
2018-12-01 17:56:31 +01:00
Fabio Manganiello
6603f64757
Enforced cast to string for any object posted to the Redis bus
2018-11-20 14:24:14 +00:00
Fabio Manganiello
2d8078b8bb
Don't propagate the message from MQTT nor wait for a response if the message is null or its handler threw an exception
2018-11-10 01:16:32 +01:00
Fabio Manganiello
cda64865f3
Set the correct mimetype on the /execute endpoint
2018-11-09 23:43:47 +01:00
Fabio Manganiello
26ec213098
Make sure that the shitty MQTT backend doesn't break for no reason
2018-11-06 11:40:01 +01:00
Fabio Manganiello
56b87f3436
Support for default broker server configuration in MQTT plugin
2018-11-02 15:32:12 +00:00
Fabio Manganiello
788a2652c8
Support for TLS/SSL and user authentication on MQTT
2018-11-02 15:15:48 +00:00
Fabio Manganiello
c05fc9ee3f
Added logic to propagate events to the websockets backend
2018-11-02 10:14:06 +00:00
Fabio Manganiello
cd3aea5cd6
typo
2018-11-02 00:07:42 +01:00
Fabio Manganiello
f1e1ee92d3
bool compatibility fix
2018-11-02 00:06:39 +01:00
Fabio Manganiello
51440d43fd
Propagate SSL flag to the templates
2018-11-02 00:04:49 +01:00
Fabio Manganiello
e571d8ea41
Typo
2018-11-02 00:03:10 +01:00
Fabio Manganiello
a77a9c04b7
Missed SSL flag
2018-11-02 00:02:11 +01:00
Fabio Manganiello
3eed774d50
Added SSL to websockets js code as well
2018-11-02 00:00:10 +01:00
Fabio Manganiello
727b604bb4
Added SSL to HTTP backend websockets as well
2018-11-01 23:57:50 +01:00
Fabio Manganiello
a253e5f49e
Removed old line of code
2018-11-01 23:48:25 +01:00
Fabio Manganiello
667d5e8a45
HTTPS support on the web server
2018-11-01 23:43:02 +01:00
Fabio Manganiello
38a8cac9c6
Refactored SSL context logic as utils methods
2018-11-01 23:34:14 +01:00
Fabio Manganiello
6bc976cf89
Fixed SSL support in websocket implementation
2018-11-01 17:28:54 +00:00
Fabio Manganiello
b365e7d126
Keep-alive logic implemented for websocket backend
2018-10-27 01:09:09 +02:00
Fabio Manganiello
92a3759721
Added websocket backend and plugin
2018-10-26 21:55:49 +02:00
Fabio Manganiello
8635ed8268
Added support for MQTT backend to process responses on a topic named platypush_bus_mq/<device>/responses/<msg_id>
2018-10-26 13:33:23 +00:00
Fabio Manganiello
284e0638f8
Always define msg so the function doesn't fail on exception
...
Reverted the previous retry logic for backend - it didn't really work
This reverts commit 4e0e4863a0
.
This reverts commit 964c7b5cf0
.
This reverts commit 6ce348365f
.
2018-10-25 20:46:34 +02:00
Fabio Manganiello
964c7b5cf0
Making sure that Redis constructor only initializes the attributes without creating the object and performing a connection
2018-10-25 20:06:29 +02:00
Fabio Manganiello
6ce348365f
Refactored backends to be more robust by wrapping the core logic into a try-except logic with sleep and retry
2018-10-25 19:46:13 +02:00
Fabio Manganiello
4c2302a534
Removed title from logging trace in RSS backend
2018-10-23 00:23:47 +02:00
Fabio Manganiello
fec684210c
Wrapped MPD plugin reload logic to prevent the backend from crashing if the second initialization fails as well
2018-10-21 14:50:58 +02:00
Fabio Manganiello
ae7cd120d2
Wrapped the RSS parsing loop in a try-except block to prevent the backend from continuously crashing if there are encoding issues on the RSS titles
2018-10-21 14:47:52 +02:00
Fabio Manganiello
7adfb67c12
Fixed Kodi plugin
2018-10-20 19:27:15 +02:00
Fabio Manganiello
7490529ca2
Reverted bugged title decode
2018-10-20 14:49:21 +02:00
Fabio Manganiello
2fd7ba003b
Decoding title from RSS feeds
2018-10-19 23:48:04 +02:00
Fabio Manganiello
af00ac6c68
Fixed attribute name
2018-10-14 17:36:06 +02:00
Fabio Manganiello
a4e2db184d
Added tts.google web plugin
2018-10-14 17:17:19 +02:00
Fabio Manganiello
74d23262b7
Implemented TCP backend
2018-10-11 14:02:29 +00:00
Fabio Manganiello
f79de2e708
Reverted bus post logic for HTTP backend
2018-09-25 00:31:51 +02:00
Fabio Manganiello
65ec2458d8
MQTT backend should call on_message instead of posting directly to the bus
2018-09-24 23:21:02 +02:00
Fabio Manganiello
d215410a6a
More consistent flow for messages received by a backend
2018-09-24 23:13:44 +02:00
Fabio Manganiello
59d84c4fcb
- Calling on_message
on Redis backend to trigger the right logic
...
instead of `self.bus.post` directly
- For consistency `mset` now returns back the map of the set variables
- Redis backend enabled on tests
2018-09-24 22:07:13 +02:00
Fabio Manganiello
badb739a8c
Increased response queue read timeout to 60 seconds
2018-09-20 13:13:36 +00:00
Fabio Manganiello
6449504e26
Switched the bus to a Redis bus
2018-09-20 10:49:57 +00:00
Fabio Manganiello
661563d1f1
Added Redis bus
2018-09-20 09:41:27 +02:00
Fabio Manganiello
98d24b061a
Added joystick backend
2018-09-18 18:58:23 +02:00
Fabio Manganiello
2ee54b5220
Replaced fadeIn with show to make transitions less CPU heavy on RPi
2018-09-15 18:25:58 +02:00
Fabio Manganiello
63890f7670
Return of get_measurement should always be a dict
2018-09-06 03:14:11 +02:00
Fabio Manganiello
5b5e861f94
Implemented distance sensors backend
2018-09-06 03:02:16 +02:00
Fabio Manganiello
98a8874084
Added accelerometer sensor backend
2018-09-06 02:31:01 +02:00
Fabio Manganiello
53ba5f6628
Wrap camera stop and connection close in two distinct try-catch blocks
2018-09-05 15:29:14 +00:00
Fabio Manganiello
6e867e9fb2
Support for multiple thresholds for the same sensor
2018-08-25 12:29:20 +02:00
Fabio Manganiello
2df9c5a890
Fixed gpio css
2018-08-22 21:01:37 +02:00
Fabio Manganiello
a9b4c1b8bf
Fixed gpio ui
2018-08-22 20:22:34 +02:00
Fabio Manganiello
2c369cb86d
Added web interface for gpio plugin
2018-08-22 19:50:30 +02:00
Fabio Manganiello
09d7d98ae3
Retry logic for Mercury API
2018-08-19 21:52:01 +00:00
Fabio Manganiello
d2bd49b364
Sync changes on playback volume or state with events and web UI
2018-08-18 01:11:14 +02:00
Fabio Manganiello
822e0a1e25
Better fix for broken async variables and attributes after Python 3.7 migration
2018-08-07 22:00:11 +00:00
Fabio Manganiello
b023618950
Revert "In Python 3.7 async is a strict language keyword that can't be used for variables names - replaces occurrences with _async"
...
This reverts commit e625861edf
.
2018-08-07 21:52:02 +00:00
Fabio Manganiello
e625861edf
In Python 3.7 async is a strict language keyword that can't be used for variables names - replaces occurrences with _async
2018-08-07 21:26:57 +00:00
Fabio Manganiello
ec38ecbaf3
More pylint fixes
2018-07-30 23:18:01 +02:00
Fabio Manganiello
81803a364d
Fixed some pylint warnings
2018-07-30 22:08:06 +02:00
Fabio Manganiello
61e211ee07
Added Kafka plugin
2018-07-28 01:55:19 +02:00
Fabio Manganiello
1ec0bd40d9
Updated docstrings
2018-07-23 02:11:16 +02:00
Fabio Manganiello
0b4cfec8e7
More robust HTTP backend in case Redis wasn't configured
2018-07-20 11:13:49 +02:00
Fabio Manganiello
5bc7319933
Optimized serial plugin
2018-07-17 23:47:13 +02:00
Fabio Manganiello
b9c77b15f8
Fixed docstring
2018-07-16 22:12:02 +02:00
Fabio Manganiello
42fa8360f3
Only propagate the values above/below threshold in case of a sensor threshold crossing, excluding the sensors that haven't crossed the threshold
2018-07-15 17:28:17 +02:00
Fabio Manganiello
c81534875a
Get Redis object on each interaction in case the backend wasn't ready before
2018-07-08 22:12:30 +02:00
Fabio Manganiello
e1ead3c25f
s/_token/token/
2018-07-08 22:00:28 +02:00
Fabio Manganiello
2647bd3881
Implemented token verification over HTTP calls.
...
The token can be provided either:
* GET parameter (``?token=abc``)
* JSON payload request (``{..your_request.., "_token":"abc"})
* HTTP header (``X-Token: abc``)
* Basic HTTP auth (any username works, password: token)
2018-07-08 21:36:58 +02:00
Fabio Manganiello
4ebdda80f9
More robust support for Redis configuration in web socket server
2018-07-08 12:24:33 +02:00
Fabio Manganiello
b443df7947
Parametrized the HTTP backend Redis object by using the same configuration used on the Redis backend
2018-07-08 12:13:43 +02:00
Fabio Manganiello
88d9f9d3ac
Stability fixes
2018-07-06 03:38:14 +02:00
Fabio Manganiello
81a81312e3
Basic support for token authentication on request level
2018-07-05 09:15:53 +02:00
Fabio Manganiello
7ad0724f0e
while True loop for recording
2018-07-01 19:35:23 +02:00
Fabio Manganiello
6ba71b52e7
Improved camera.pi logic
2018-06-29 11:25:18 +02:00
Fabio Manganiello
57baa0c64a
Try to decode the message event if it's not a Platypush message
2018-06-29 11:09:28 +02:00
Fabio Manganiello
3872276234
Better way to handle plugins->backends communication through Redis
2018-06-29 10:21:19 +02:00
Fabio Manganiello
4163a414bf
Caching switch.tplink devices and supporting lookup by alias
2018-06-26 22:59:33 +02:00
Fabio Manganiello
65f9610cce
Added switch.tplink web widget
2018-06-26 22:14:11 +02:00
Fabio Manganiello
94ffaf2099
Commented out optional requirements that break RTD build
2018-06-26 01:06:23 +02:00
Fabio Manganiello
e6fdcaa068
Make sure that the Redis thread gets the stop event propagated when the application terminates
2018-06-26 00:57:26 +02:00
Fabio Manganiello
8e16f31603
fixed regex
2018-06-26 00:46:13 +02:00
Fabio Manganiello
7398107570
Completed documentation for backends
2018-06-26 00:36:01 +02:00
Fabio Manganiello
8a0ca64e4d
Merge branch 'master' into docs
2018-06-26 00:17:28 +02:00
Fabio Manganiello
28862d743d
Adding backends documentation
2018-06-26 00:16:39 +02:00
Fabio Manganiello
0939cdedf8
Added utility to scan for messages on the ZeroBorg infrared sensor
2018-06-26 00:16:04 +02:00
Fabio Manganiello
cb30a0418f
Don't play icon animation to prevent the browser on a tiny RPi to freeze
2018-06-25 20:09:45 +02:00
Fabio Manganiello
49333d892e
Remove and then re-add the skycons icon to make sure that the refresh happens
2018-06-24 14:35:36 +02:00
Fabio Manganiello
fd792cb089
Added support for weather icons on the dashboard
2018-06-23 01:34:46 +02:00
Fabio Manganiello
a4273f5619
Older versions of the assistant SDK don't have the ON_RENDER_RESPONSE event - check if they have it defined before testing the event type
2018-06-21 01:29:04 +02:00
Fabio Manganiello
8708d53236
Show assistant response text on web clients
2018-06-21 00:22:26 +02:00
Fabio Manganiello
f73adc83bc
- Support for assistant response text as a ResponseEvent
...
- Don't trigger a ConversationEndEvent if the assistant needs to follow up on the previous interaction
2018-06-20 19:21:32 +02:00
Fabio Manganiello
5f50b5c4f4
Support for color animations via web interface too
2018-06-19 00:37:33 +02:00
Fabio Manganiello
2d6994c057
send_message over Redis for OMXPlayer plugin
2018-06-14 21:13:01 +02:00
Fabio Manganiello
b7181085f3
Cover both the cases where the Redis backend is not configured and where it's None
2018-06-14 20:44:06 +02:00
Fabio Manganiello
bd18d1cbc1
Using Redis backend as a fallback for send_message if a backend does not implement its own send_message
2018-06-14 20:42:57 +02:00
Fabio Manganiello
81d29928b0
Pi Camera backend version 1.0, now properly controllable
2018-06-14 12:37:14 +02:00
Fabio Manganiello
2b73f71803
Improved logging traces names for backends and plugins
2018-06-14 02:19:55 +02:00
Fabio Manganiello
793b4df12d
Pi Camera backend version 0.something
2018-06-14 02:14:08 +02:00
Fabio Manganiello
85512424ae
Better events orchestration on camera.pi backend
2018-06-14 00:44:50 +02:00
Fabio Manganiello
bb43facee5
typo #2
2018-06-14 00:37:38 +02:00
Fabio Manganiello
e9fc35b39d
typo
2018-06-14 00:36:07 +02:00
Fabio Manganiello
29a5cfa9c2
Refactored camera.pi backend. Support for start/stop recording control via plugin action. Introduced support for taking pictures too
2018-06-14 00:34:30 +02:00
Fabio Manganiello
2e08be2886
Clean up the iframe src on timeout expire
2018-06-13 20:44:24 +02:00
Fabio Manganiello
5a1e77c174
Added iframe modal on dashboard with support for dynamic events to temporarily/permanently display a custom web page on the connected browsers
2018-06-13 20:40:49 +02:00
Fabio Manganiello
d89b03a697
Optional 'zoom' parameter added to the map page to override Google Maps auto-zoom (needed if the page is embedded in an iframe)
2018-06-13 18:10:58 +00:00
Fabio Manganiello
e0ff431894
(Forgot to fix humidity sensor reads)
2018-06-12 20:31:58 +02:00
Fabio Manganiello
64ee7e3e59
Fixed the way the FE widget parses the sensor changes after the structural change to SensorDataChangeEvent
2018-06-12 20:30:23 +02:00
Fabio Manganiello
e216eb4792
Added maps page
2018-06-12 15:33:04 +00:00
Fabio Manganiello
464ff1ff57
A more robust way to handle JSON serialization/deserialization on MQTT backend
2018-06-12 10:33:30 +02:00
Fabio Manganiello
b329580ff0
json decode msg
2018-06-12 09:28:15 +02:00
Fabio Manganiello
8c208c0028
Use the Redis backend to dispatch messages to the core bus if available
2018-06-12 09:20:22 +02:00
Fabio Manganiello
7ab85b4cfa
Symlinked serial sensor web interface to MCP3008 sensor template
2018-06-12 01:03:29 +02:00
Fabio Manganiello
77d954f14e
Simplified MCP3008 sensor backend by letting it extend SensorBackend
2018-06-12 00:36:43 +02:00
Fabio Manganiello
c410bd8926
s/sensors/data/g
2018-06-12 00:23:47 +02:00
Fabio Manganiello
f137595ba0
Removed the serial backend, as it's now being replaced by the more specific (and reusable) sensor.serial backend
2018-06-12 00:01:18 +02:00
Fabio Manganiello
0e3873eaf3
Removed light sensor backend. As most of them are analog sensors, they can't communicate directly with the Raspberry - instead a plugin like serial (e.g. Arduino) or MCP3008 should act as a proxy
2018-06-12 00:00:15 +02:00
Fabio Manganiello
33a507f047
Simplified SensorBackend implementations
2018-06-11 23:49:37 +02:00
Fabio Manganiello
933940c695
Attribute name fix
2018-06-11 22:12:25 +02:00
Fabio Manganiello
0905981c58
Refactoring sensor backend and added SensorSerialBackend
2018-06-11 21:07:54 +02:00
Fabio Manganiello
40293a3d30
calendar-next-event-container width 50% -> 70%
2018-06-10 17:20:05 +02:00
Fabio Manganiello
c6054f4ac9
Typos
2018-06-08 17:17:12 +02:00
Fabio Manganiello
6247488450
Fixed other logging issues
2018-06-08 17:10:11 +02:00
Fabio Manganiello
d7bc17778e
Forgot import logging
2018-06-08 16:55:06 +02:00
Fabio Manganiello
2bb6ed6867
Declared logger attribute in HttpRequest as it won't be available to the subclasses otherwise
2018-06-08 16:54:15 +02:00
Fabio Manganiello
f0bb2a20b0
Typo
2018-06-08 16:41:31 +02:00
Fabio Manganiello
0756da3861
Fixed logger references
2018-06-08 16:37:59 +02:00
Fabio Manganiello
9a43b6cf51
Fixed logger references
2018-06-07 09:08:32 +02:00
Fabio Manganiello
4da74b1096
Refactored logging submodule
2018-06-06 20:09:23 +02:00
Fabio Manganiello
9984b75895
Added midi backend to support events from MIDI sources
2018-06-06 02:26:28 +02:00
Fabio Manganiello
8534a738d2
Refresh calendar each 15 minutes
2018-06-04 01:01:27 +00:00
Fabio Manganiello
bc3e100217
New general-purpose plugin for managing multiple calendar + support for ICal format
2018-05-30 15:59:10 +02:00
Fabio Manganiello
3fe70dd184
Implemented MQTT backend and plugin, see issue #56
2018-05-27 12:21:41 +02:00
Fabio Manganiello
c73905d35d
More robust handling of card removed events
2018-05-27 11:47:57 +02:00
Fabio Manganiello
b04a355cc0
Pass also ATR and reader to SmartCardRemovedEvent
2018-05-27 11:25:29 +02:00
Fabio Manganiello
9801fe26fc
Generating SmartCardRemoveEvent as well when a scard is removed
2018-05-27 11:21:47 +02:00
Fabio Manganiello
8a6dcdbf5f
Generating SmartCardRemoveEvent as well when a scard is removed
2018-05-27 11:11:05 +02:00
Fabio Manganiello
755eb83093
Added support for smart card events
2018-05-27 10:47:58 +02:00
Fabio Manganiello
c1caa182be
Handling assistant no_response events
2018-05-25 18:26:02 +02:00
Fabio Manganiello
4f75b765b1
Added assistant conversation timeout event
2018-05-25 18:18:16 +02:00
Fabio Manganiello
306faff4af
Default tolerance for hand palm motion on Leap should be zero
2018-05-23 19:48:59 +02:00
Fabio Manganiello
57722fce2a
Added support for Leap Motion device events
2018-05-23 17:07:15 +02:00
Fabio Manganiello
f4da6ebb1b
Redis plugin added and Redis backend made more robust to work also with single-quoted JSON-like strings returned by the Redis lib
2018-05-22 14:44:17 +00:00
Fabio Manganiello
18efdb1c70
Make sure the summary is always there
2018-05-21 09:47:50 +02:00
Fabio Manganiello
0accbfa66e
Logging traces on RSS parse
2018-05-21 09:27:13 +02:00
Fabio Manganiello
4643c10e11
Added Redis backend, issue #55
2018-05-14 20:09:25 +02:00
Fabio Manganiello
01c5bbadcd
Type should actually always be there
2018-05-13 11:49:42 +02:00
Fabio Manganiello
5e3b41c3ad
Made the Pushbullet backend more resilient in case of rogue messages with no type specified
2018-05-13 11:39:59 +02:00
Fabio Manganiello
d75326bbe8
Added Switchbot web plugin
2018-05-08 17:07:01 +02:00
Fabio Manganiello
b94764436d
Added WeMo switch plugin for web panel
2018-05-08 09:59:43 +02:00
Fabio Manganiello
bd761d420e
RSS digests are now optional
2018-05-07 19:44:34 +02:00
Fabio Manganiello
a3b83e8c57
Fixed sensors position
2018-05-07 19:21:58 +02:00
Fabio Manganiello
44596a6cfb
Improved style for temp/humidity sensors on the widget
2018-05-07 19:16:25 +02:00
Fabio Manganiello
20a9224ab5
Included support for temperature/humidity display on weather widget from sensor events
2018-05-07 18:55:50 +02:00
Fabio Manganiello
e4269a8d5d
Skip RSS items if published_parsed is not defined
2018-05-07 18:33:44 +02:00
Fabio Manganiello
f322f71447
- News widget max items is now configurable
...
- Update the news list whenever the loop over the current list is done
2018-05-07 18:16:30 +02:00
Fabio Manganiello
1b1016fba2
Added background blurred image if width < height
2018-05-07 17:18:01 +02:00
Fabio Manganiello
37c6e25ac3
Finally got a proper scaling for carousel widget pictures
2018-05-07 14:50:08 +02:00
Fabio Manganiello
e671a1294c
Reset min-width when cloning the element
2018-05-07 09:57:35 +02:00
Fabio Manganiello
19268f66a8
border-radius fix
2018-05-07 09:56:31 +02:00
Fabio Manganiello
af11358a76
Image carousel widget improvements
2018-05-07 09:54:30 +02:00
Fabio Manganiello
2483c6d612
Simplified websockets keep-alive logic. Just wait on recv() and clean up the websocket in case of a ConnectionClosed exception
2018-05-06 11:38:24 +02:00
Fabio Manganiello
177a359e4a
Only do article fade-in without fade-out+fade-in dance
2018-05-06 00:42:46 +02:00
Fabio Manganiello
31f2cbf8b1
Added __init__.py
2018-05-06 00:14:42 +02:00
Fabio Manganiello
88c5bc16f5
- Added rss-news dashboard widget
...
- Added summary field to the RSS entry
- Added support for custom dashboard backgrounds
- UX fixes + font change
2018-05-05 23:59:43 +02:00
Fabio Manganiello
ac958f98da
Added images carousel web widget
2018-05-05 04:37:22 +02:00
Fabio Manganiello
e1e4d824ad
- Added web widget for Google Calendar integration
...
- UX improvements on the dashboard
2018-05-05 00:57:41 +02:00
Fabio Manganiello
f6306c6015
Added Google Calendar plugin
2018-05-04 19:20:23 +02:00
Fabio Manganiello
2f8c74c8e3
- Added Pushbullet JS logic to show mirror notifications on web FE
...
- Added JS and CSS files for dashboard and widgets
2018-05-04 17:25:12 +02:00
Fabio Manganiello
d83c2c903f
- Added support for /dashboard page with customizable widgets under the web server
...
- Introduced Redis to pass messages between the Flask process and the
main application. It now syncs messages with the bus and connected websockets
- Added support to programmatically modify dashboard widgets through POST request like Dashing
- Added weather forecast plugin
2018-05-04 03:24:35 +02:00
Fabio Manganiello
a67b301cd6
s/albumartist/album/g
2018-05-03 02:17:31 +02:00
Fabio Manganiello
dca41ea86e
A more robust logic for spotting new RSS items
2018-05-01 10:13:41 +02:00
Fabio Manganiello
d12ebe8810
Bold font for sensor values
2018-04-30 10:20:12 +02:00
Fabio Manganiello
79bfed3a1d
FE fixes on the sensors panel
2018-04-30 10:04:37 +02:00
Fabio Manganiello
b4bd1cb7bb
Added web UI for MCP3008 analog sensors values
2018-04-30 09:40:44 +02:00
Fabio Manganiello
b8cba8ec0c
Forgot an assignment
2018-04-30 01:43:23 +02:00
Fabio Manganiello
c0ef9e2373
poll_seconds should not have a default value
2018-04-29 23:58:33 +02:00
Fabio Manganiello
bd8d4649c5
Added MCP3008 backend
2018-04-29 23:51:53 +02:00
Fabio Manganiello
cbe676a29f
Get the JSON/string output out of the Response object
2018-04-29 16:28:01 +02:00
Fabio Manganiello
cddd740666
Removed reference to self.device in backend.serial
2018-04-29 16:26:12 +02:00
Fabio Manganiello
4f19cd1324
Removed old reference to serial.Serial
2018-04-29 16:17:09 +02:00
Fabio Manganiello
a907c9ad63
Refactored serial, the entry point for querying serial devices should be the serial plugin, the backend should only be a client. Also, if the serial output is a JSON, parse it
2018-04-29 16:14:46 +02:00
Fabio Manganiello
514eb3d4e4
No need for a comma there
2018-04-29 12:32:25 +02:00
Fabio Manganiello
68c52fe102
- Importing Flask.request as http_request to prevent name clashes with
...
SQLAlchemy's request module
- All SQLAlchemy engine and connection setup done within get_new_items
to prevent different threads from creating and using the db instance
- Added check_same_thread to sqlite connection line to prevent
different-thread exceptions when the Flask main thread does some cleanup
2018-04-28 19:11:14 +02:00
Fabio Manganiello
63b3d196e8
Video icons fixes
2018-04-26 15:29:10 +02:00
Fabio Manganiello
797d6a0fe8
Added an icon to the video results to show the type
2018-04-26 15:23:10 +02:00
Fabio Manganiello
acd06c2193
Implemented OMXPlayer file search and unified all searches under one method
2018-04-25 00:13:17 +02:00
Fabio Manganiello
dd254b65cb
Implemented YouTube videos search and controls web FE
2018-04-24 14:36:05 +02:00
Fabio Manganiello
4d45284131
Style fixes
2018-04-24 09:17:09 +02:00
Fabio Manganiello
1bda7b8346
Handlers & buttons
2018-04-24 01:30:04 +02:00
Fabio Manganiello
27398030e4
Fixed form name in CSS
2018-04-24 01:26:00 +02:00
Fabio Manganiello
e310ef0a04
Finalized video.omxplayer FE plugin
2018-04-24 01:23:06 +02:00
Fabio Manganiello
b5b61f0442
Wrong extension..
2018-04-24 01:05:37 +02:00
Fabio Manganiello
ebed6adf57
Added video.omxplayer frontend plugin
2018-04-24 01:03:50 +02:00
Fabio Manganiello
53f8f88bac
Added inotify files and paths monitoring backend
2018-04-23 16:32:35 +02:00
Fabio Manganiello
a58fa23173
Websocket client-side timeout: 5 -> 30 seconds
2018-04-18 10:13:53 +02:00
Fabio Manganiello
02e951bd57
- Added hidden plugins configuration for plugins that shouldn't be shown
...
on the web panel as tabs
- Added support for popup notifications on the web panel
- Added voice assistant interactive notifications to the web panel
- Added new playing music notifications to the web panel
2018-04-17 23:10:49 +02:00
Fabio Manganiello
fcdc4d1af8
Reload the MPD plugin in case of any errors during the status retrieval
2018-04-17 16:43:39 +02:00
Fabio Manganiello
15a233a927
Keep reloading the MPD plugin in the MPD backend if the plugin crashed or keeps being null
2018-04-17 09:27:41 +02:00
Fabio Manganiello
40d1b7481a
Added TTS web plugin
2018-04-16 14:38:13 +02:00
Fabio Manganiello
607ec2812c
Run get_plugin at every iteration of the mpd backend in case the plugin lost the connection and has been reloaded
2018-04-16 09:38:34 +02:00
Fabio Manganiello
1a01b336b7
Brought server side ping timeout to 60 seconds
2018-04-15 22:36:45 +02:00
Fabio Manganiello
400943b74b
Cleaner management of MPD search filters on the frontend
2018-04-15 10:03:34 +02:00
Fabio Manganiello
73c74654d1
- Better MPD filter management - you can now pass filters as arrays like
...
['artist', 'Led Zeppelin', 'title', 'Stairway To Heaven'] instead of
relying on one single type-filter pair
- Improved condition matching - don't skip the last condition token if
there are still event tokens to add
2018-04-14 23:58:48 +02:00
Fabio Manganiello
e83b21ad33
No outline on the ZeroBorg div when focused
2018-04-13 23:45:29 +02:00
Fabio Manganiello
0cfd67be51
Changed behaviour on playlist track click. Click twice to play instace of long pressing to prevent tracks from playing while scrolling the pane
2018-04-12 20:07:28 +02:00
Fabio Manganiello
cf2b362947
Support for robot control through keyboard
2018-04-12 18:42:01 +02:00
Fabio Manganiello
de7a8067cb
Better filtering of music results
2018-04-12 14:28:20 +02:00
Fabio Manganiello
abdc5a5ed0
Inverted search priority order
2018-04-12 14:22:24 +02:00
Fabio Manganiello
b400597a1b
Refresh the status as well upon successful search results play/add
2018-04-12 13:53:04 +02:00
Fabio Manganiello
decadee00a
Implemented music search from web panel
2018-04-12 13:04:56 +02:00
Fabio Manganiello
f3d725c890
Making the websocket reconnect client-side logic a bit more consistent
2018-04-10 19:49:37 +02:00
Fabio Manganiello
10bf54f961
A more consistent a bug-free handling of websocket reconnection cycles
2018-04-10 15:56:00 +02:00
Fabio Manganiello
4efbcc50dd
Server-side websocket timeout: 3 -> 5 seconds
2018-04-10 00:10:03 +02:00
Fabio Manganiello
ef1843fdbc
s/1 second/3 seconds/
2018-04-09 23:58:54 +02:00
Fabio Manganiello
cb6894b6f8
s/5 seconds/1 second/
2018-04-09 23:56:43 +02:00
Fabio Manganiello
c81e969097
Reverted 10 msec wait to prevent sys resources flooding on retries
2018-04-09 23:26:14 +02:00
Fabio Manganiello
ce5db9a9c6
Reconnect to the websocket immediately in case of normal closure
2018-04-09 23:21:19 +02:00
Fabio Manganiello
d380e0f398
Keep trying to connect in case the websocket goes down
2018-04-09 23:15:15 +02:00
Fabio Manganiello
75e958bb38
Added auto pilot and stop controls to ZeroBorg web UI
2018-04-09 18:12:53 +02:00
Fabio Manganiello
cb44f864cc
Added ZeroBorg plugin web UI for motors control
2018-04-09 15:45:14 +02:00
Fabio Manganiello
4bd69d1d68
Making the header a bit more proportioned
2018-04-09 10:22:07 +02:00
Fabio Manganiello
fe2930dfdc
Increased font size for datetime div
2018-04-09 10:20:32 +02:00
Fabio Manganiello
fa4ed7c95c
light.hue.on/off wants an array
2018-04-09 01:53:25 +02:00
Fabio Manganiello
a3fbce1082
Support for global and individual color and power switches on Philips Hue interface
2018-04-09 01:24:02 +02:00
Fabio Manganiello
2bf4ff136b
Exposing serial data functionally through a plugin
2018-04-08 18:16:24 +02:00
Fabio Manganiello
8ae22726ed
Added serial device backend
2018-04-07 03:08:52 +02:00
Fabio Manganiello
2be2677963
Added light sensor backend
2018-04-06 17:19:08 +02:00
Fabio Manganiello
10a78a1f21
Frontend plugin for Philips Hue
2018-03-27 23:13:47 +02:00
Fabio Manganiello
7dd3bb9915
Always call stop_playback even when there is no user request
2018-03-26 00:32:03 +02:00
Fabio Manganiello
1f2b5432b3
Extended Pi camera options
2018-03-24 14:43:18 +01:00
Fabio Manganiello
b5567c289f
- Added Pi camera stream over TCP backend
...
- More consistent event handling for the pushtotalk assistant
- Added general GPIO module
2018-03-24 03:05:46 +01:00
Fabio Manganiello
a14d6fe652
- Stop assistant playback only if there was a user request. This
...
prevents a PortAudio write on input-only stream error in the Assistant
SDK, see https://github.com/googlesamples/assistant-sdk-python/issues/185
- Make sure that user_request is always defined before returning it
- Use assistant.google.pushtotalk as a fallback if assistant.google is
not configured/available
2018-03-21 23:21:41 +01:00
Fabio Manganiello
d5f73023ea
Support for custom hotword detection through Snowboy
2018-03-20 23:34:36 +01:00
Fabio Manganiello
6309f5301e
- Power offsets now passed through conf instead of source code
...
- More robust handling of temporary sensor failures
2018-03-17 17:16:20 +01:00
Fabio Manganiello
8b733fb859
- Added IR sensor backend
...
- Fixed default power offsets
- Changed threshold distance for ultrasound sensor
- Fixed power multiplier coefficient
2018-03-04 17:55:48 +01:00
Fabio Manganiello
e8891f0c12
Filter implementation for music.mpd
2018-02-09 20:54:02 +01:00
Fabio Manganiello
0d2a1e5932
onopen logging message
2018-02-07 22:52:16 +01:00
Fabio Manganiello
b675f631e9
- Websocket ping interval 1 -> 5 seconds
...
- JS client websocket reconnect logic
2018-02-07 22:14:38 +01:00
Fabio Manganiello
c47d910465
Removed comma
2018-02-05 10:35:24 +01:00
Fabio Manganiello
40efb3f9c7
Support for selecting and playing tracks and playlists in web interface
2018-02-05 09:45:35 +01:00
Fabio Manganiello
1cab75757b
- Support for playlist update events handling on MPD
...
- Support for playlist updates on the web interface
- Support for selecting and playing tracks in the web interface
2018-02-05 00:55:19 +01:00
Fabio Manganiello
9cf9135eae
Making the mpd interface fit in a smaller screen without overflows
2018-02-01 01:12:47 +01:00
Fabio Manganiello
de2e50fefa
Implemented support for track random seek
2018-01-31 10:35:14 +01:00
Fabio Manganiello
968b71e946
- Implemented support for shuffle, random and set volume on the UI
...
- Reduced the websocket ping poll frequency to 1 second
2018-01-31 01:32:07 +01:00
Fabio Manganiello
28bc4c748e
UI improvements + support for MPD playlists and folders
2018-01-30 00:54:46 +01:00
Fabio Manganiello
fc608317fd
Give some breath to the websocket ping loop
2018-01-29 21:21:40 +01:00
Fabio Manganiello
07219bef89
Player style fixes
2018-01-29 21:18:31 +01:00
Fabio Manganiello
90f49b0964
Player style fixes
2018-01-29 21:15:57 +01:00
Fabio Manganiello
22e4a44fdb
Fixed js glitch
2018-01-29 17:09:53 +01:00
Fabio Manganiello
75fac37984
Fixed tests
2018-01-29 16:34:00 +01:00
Fabio Manganiello
0ff5adc4c1
Removed swap file
2018-01-29 16:29:36 +01:00
Fabio Manganiello
ae3ee8ada5
Music player styles
2018-01-29 16:28:32 +01:00
Fabio Manganiello
6ad7f85e76
A more clever way to get the static dirs
2018-01-29 15:08:29 +01:00
Fabio Manganiello
6ff1552063
Fixed websocket
2018-01-29 14:46:31 +01:00
Fabio Manganiello
72af7adb46
#51 first web panel iteration
2018-01-29 13:47:21 +01:00
Fabio Manganiello
615573f932
Changed format for HTTP backend requests to something more consistent
2018-01-28 14:49:59 +01:00
Fabio Manganiello
55eb689121
Support for RSS digest generation either in HTML or PDF format
2018-01-28 02:01:54 +01:00
Fabio Manganiello
91dd975413
mkdir_p replaced with os.makedirs
2018-01-27 13:54:15 +01:00
Fabio Manganiello
22b3f8e9b9
Removed redundant variable
2018-01-27 04:46:28 +01:00
Fabio Manganiello
14afbcad3a
Support for RSS feeds update events, solves #48
2018-01-27 04:32:44 +01:00
Fabio Manganiello
632255d2dc
typo
2018-01-15 01:43:35 +01:00
Fabio Manganiello
4fa7a08006
Added mpd backend
2018-01-13 02:52:06 +01:00
Fabio Manganiello
76f7bbc529
Refactored HTTP request plugin and fixed bug on the plugin name
2018-01-12 15:18:06 +01:00
Fabio Manganiello
b1f42c22ae
Added Booking.com endpoints automation
2018-01-11 19:31:44 +01:00
Fabio Manganiello
19cfafb2c7
Making the HTTP poll events work
2018-01-10 03:14:27 +01:00
Fabio Manganiello
d0759765b2
Removed booking module
2018-01-10 00:20:48 +01:00
Fabio Manganiello
2ea06f7708
Making JSON HTTP poll requests work
2018-01-09 18:44:45 +01:00
Fabio Manganiello
c1ab3f5a14
google-assistant-library now requires device_model_id
2018-01-09 14:16:09 +01:00
Fabio Manganiello
b074e03d45
- Support for workdir
...
- Prepared draft for HttpPoll backend
2018-01-09 01:27:19 +01:00
Fabio Manganiello
bad5ff339f
Latest push received in the last 5 seconds instead of 2
2018-01-07 13:18:01 +01:00
Fabio Manganiello
694d7ca62d
Support for PushBullet events on notifications, #36
2018-01-07 00:58:03 +01:00
Fabio Manganiello
1581685f62
use_reloader=False on Flask to prevent the platypush daemon to be spawned twice
2018-01-04 17:34:25 +01:00
Fabio Manganiello
39f986a88d
Fixed HTTP backend
2018-01-04 17:20:35 +01:00
Fabio Manganiello
20b07fb02f
Made an HTTP backend, #27
2018-01-04 02:45:23 +01:00
Fabio Manganiello
c201d725b7
Google Assistant plugin to programmatically start/stop conversation
2017-12-26 15:06:59 +01:00
Fabio Manganiello
75410ead2d
Added __init__.py
2017-12-24 13:20:00 +01:00
Fabio Manganiello
6928e440bc
Support for Flic button events
2017-12-24 13:15:37 +01:00
Fabio Manganiello
18830232a4
Don't trigger the default Assistant response if the phrase matched an internal rule. Also, backends should be easily accessible through a context module (more context variables will be added there)
2017-12-24 02:35:49 +01:00
Fabio Manganiello
7b97a5b229
- #30 Implemented Google Assistant backend
...
- #21 Implemented events management
2017-12-24 01:10:48 +01:00
Fabio Manganiello
1ea8badd59
Assistant v.0.1
2017-12-22 10:43:43 +01:00
Fabio Manganiello
3a9afd1fed
import error
2017-12-22 10:21:31 +01:00
Fabio Manganiello
017c53fb50
Added Google Assistant draft backend
2017-12-22 10:18:04 +01:00
Fabio Manganiello
97adb1a191
* Better documentation for the local backend
...
* Remove the fifos at the beginning of the test
2017-12-22 02:52:56 +01:00
Fabio Manganiello
3dfcf0ec97
Added tests
2017-12-22 02:11:56 +01:00
Fabio Manganiello
4b819d5460
Another major refactoring. Among the other things, reintroduced local backend, made requests and responses working in every case, and properly handling stop events
2017-12-22 00:49:03 +01:00
Fabio Manganiello
bd5c80175f
- Major refactoring.
...
- More consistent naming for many methods, plus added a more extensive doc.
- Refactored the entry points for the daemon and the pusher into two
classes, easier to encapsulate and wrap into tests.
- Removed the local backend - managing the concurrency of two processes
reading and writing on the same socket at the same time was too much,
and its utility outside of the tests (which can have mock backends as
well) is quite modest.
- Managing stop events on the bus. Still some work to do tho.
- Fixed several bugs.
2017-12-20 20:25:08 +01:00
Fabio Manganiello
21381e7c0f
[ #23 ] Request/Response ID chaining fixes
...
[#17 ] Response wait and response timeout implementation on pusher side
2017-12-18 22:40:56 +01:00
Fabio Manganiello
18a5902ac4
Locking requests and responses with ids
2017-12-18 03:09:38 +01:00
Fabio Manganiello
4a04e51da7
Major refactoring #2
2017-12-18 01:10:51 +01:00
Fabio Manganiello
339e7b73a5
Major refactoring.
...
Solves, among the others, #2 , #18 and #22
2017-12-17 16:15:44 +01:00
Fabio Manganiello
cb423dab03
Removed short circuit on the response
2017-12-16 07:01:25 +01:00
Fabio Manganiello
8c89a10710
Simplified backend interface, fixed some bugs with response management
2017-12-16 04:56:43 +01:00
Fabio Manganiello
ea3eef379a
No reference to self in static method
2017-12-14 01:58:42 +01:00
Fabio Manganiello
ee5b8e21a0
* If we get a push tickle on PushBullet, get that latest push
...
* Fixed device_id attribute name clash
2017-12-13 23:55:38 +01:00
Fabio Manganiello
462dc2f1c9
* Sending responses back on the backend channel
...
* Version bump
2017-12-13 04:14:46 +01:00
Fabio Manganiello
491c2cd571
* More consistent management of responses
...
* Better per-plugin/per-backend logging management
2017-12-13 03:37:28 +01:00
Fabio Manganiello
bf49fb8af3
#11 Kafka topics are now in the format topic.device_id so messages aren't broadcast to all the listeners of the same topic
2017-12-13 01:07:46 +01:00
Fabio Manganiello
c62a1a2bd3
Initialize the local fifo only when the backend is run
2017-12-13 01:04:04 +01:00
Fabio Manganiello
898a4ffdef
Syntax error
2017-12-12 20:16:00 +01:00
Fabio Manganiello
f7202fd205
* PushbulletBackend.send_msg method refactored and removed pushbullet.py dependency
...
* Management of optional dependencies moved to setup.py
2017-12-12 20:14:02 +01:00
Fabio Manganiello
4b0706380e
Consistent logging info
2017-12-12 19:26:23 +01:00
Fabio Manganiello
6c2ea3767c
s/runbullet/platypush/g
2017-12-11 20:30:57 +01:00