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
8d203723da
Added -a option for platydock to attach to the instance after booting it up
2020-02-03 16:57:40 +01:00
Fabio Manganiello
96bdefdaf3
Use Debian Buster image instead of Alpine for docker images
2020-02-03 16:50:51 +01:00
Fabio Manganiello
20feedaf07
Use --no-cache-dir for pip installations in Dockerfile
2020-02-03 15:06:16 +00: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
410fad3e18
Bump version: 0.11.4 → 0.11.5
2020-01-20 22:38:36 +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
6ad997a239
Bump version: 0.11.3 → 0.11.4
2020-01-20 22:28:00 +01:00
Fabio Manganiello
f91fd00067
Removed old comment note for esp.file_download
2020-01-20 15:41:24 +01:00
Fabio Manganiello
b484fcf9ed
- New implementation of esp.file_get that also works with binary files
...
- New communication protocol for downloaded chunks based on queues
instead of events.
2020-01-20 15:39:23 +01:00
Fabio Manganiello
4b56431e2a
Added proper support for ESP file upload/download ( closes #110 )
2020-01-20 11:47:10 +01:00
Fabio Manganiello
b7d9917d1d
Cleaned up unused variables
2020-01-20 08:54:59 +01:00
Fabio Manganiello
f38121d176
Always pause/resume speech detection on backend level
2020-01-19 16:32:41 +01:00
Fabio Manganiello
6c797b0ad9
Implemented support for assistant pause/resume conversation ( closes #109 )
2020-01-19 16:21:29 +01:00
Fabio Manganiello
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
5ae57e3aaf
Added action to retrieve temperature and pressure from a DHT11/DHT22 sensor on ESP plugin
2020-01-18 20:15:31 +01:00
Fabio Manganiello
4e45c1d0bc
Removed font-awesome full submodule clone. Use the CDN-provided all.css file instead.
...
It won't work if the webapp runs on a device not connected to the internet,
but it saves a lot of installation space.
2020-01-18 19:59:02 +01:00
Fabio Manganiello
2598e2fb30
Replace the \r\n sequence with \n in the processed response
2020-01-18 18:26:23 +01:00
Fabio Manganiello
2f63a861cb
Fixed ESP plugin extra args formatting
2020-01-18 18:11:35 +01:00
Fabio Manganiello
c3c88b23fe
Added ESP8266/ESP32 integration ( closes #108 )
2020-01-17 21:16:14 +01:00
Fabio Manganiello
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
f5b010c15c
Added nmap integration ( closes #99 )
2020-01-11 18:51:54 +01:00
Fabio Manganiello
1e342cc8a5
New interface for implementing backends.
...
Backends that simply poll for changes and wait some time
between checks can just implement a `loop()` method and,
optionally, `__enter__` and `__exit__` methods, so they
can perform initialization/cleanup logic within a context
manager.
2020-01-11 18:13:25 +01:00
Fabio Manganiello
a7ca779870
Argument of int() can't be nullable
2020-01-11 16:24:35 +01:00
Fabio Manganiello
3b2ca4d70c
Added Foursquare backend
2020-01-11 16:11:35 +01:00
Fabio Manganiello
3daf39e3e0
Stop polluting Pushbullet messages with StopEvent JSON whenever the backend stops.
2020-01-11 12:31:32 +01:00
Fabio Manganiello
b0a5f1e272
Added Foursquare integration - closes #94
2020-01-10 22:51:07 +01:00
Fabio Manganiello
ddbe76646b
Throw an assert error (no reload/retry mechanism) instead of a runtime error when a method is called outside of the registered plugin actions
2020-01-10 00:07:40 +01:00
Fabio Manganiello
4c3140c9b5
Fixed docs
2020-01-09 23:40:59 +01:00
Fabio Manganiello
f2de1015a8
Fixed doc URL
2020-01-09 22:24:15 +01:00
Fabio Manganiello
e709908d7e
Added Google Drive plugin - closes #91
2020-01-09 22:07:03 +01:00
Fabio Manganiello
40e65d882f
Support for while/break/continue/return statemnts - closes #107
2020-01-09 10:28:02 +01:00
Fabio Manganiello
35cefcc9f5
Improved consistency and robustness of sensors backend
2020-01-08 22:58:24 +01:00
Fabio Manganiello
9d592fe370
Added battery sensor backend
2020-01-08 14:55:58 +01:00
Fabio Manganiello
6738ff832a
get_data/get_measurement/close should be implemented in a base SensorPlugin
...
class, not specifically in GpioSensorPlugin
2020-01-08 00:20:00 +01:00
Fabio Manganiello
aa6bf5379a
Added process management actions
2020-01-08 00:07:15 +01:00
Fabio Manganiello
c53dfab246
Added pid_exists action
2020-01-07 23:03:30 +01:00
Fabio Manganiello
8fe34d541b
Added system monitor integration - closes #98
2020-01-07 22:44:59 +01:00
Fabio Manganiello
3e2a9c0401
Skip torrent status responses with no url.
2020-01-07 09:59:45 +01:00
Fabio Manganiello
9134a231b3
success=true will always be in the response: deal with it
2020-01-07 09:46:26 +01:00
Fabio Manganiello
3271759fba
Added Pi-hole integration - closes #100
2020-01-06 19:22:04 +01:00
Fabio Manganiello
e880f00498
Added Graphite integration - closes #96
2020-01-06 15:24:52 +01:00
Fabio Manganiello
d73df1454e
Added TCP and UDP plugins - closes #106
2020-01-05 20:52:42 +01:00
Fabio Manganiello
bcd05ecf4a
Added CUPS plugin - closes #93
2020-01-05 19:25:20 +01:00
Fabio Manganiello
a9fdbe7812
Fixed code-block format
2020-01-05 13:11:44 +01:00
Fabio Manganiello
084b5ba807
Stop also board iterators on close
2020-01-05 13:02:41 +01:00
Fabio Manganiello
d8a7c9c6e0
Added Arduino over Firmata integration - closes #92
2020-01-05 00:46:46 +01:00
Fabio Manganiello
cc424c6e7a
Bump version: 0.11.2 → 0.11.3
2020-01-03 16:31:00 +01:00
Fabio Manganiello
8aadd5569e
Added Trello backend: closes #90
2020-01-03 16:28:49 +01:00
Fabio Manganiello
1de3296c85
Support for group events and lists of authorized chat_ids
2020-01-01 23:28:21 +01:00
Fabio Manganiello
846d5ff2eb
Support for underscores and minuses in Telegram command names
2020-01-01 22:33:57 +01:00
Fabio Manganiello
77ff88360b
music.mpd.play should add the resource at the beginning of the
...
current tracklist and play it, not clear the whole tracklist.
2020-01-01 21:16:27 +01:00
Fabio Manganiello
135cfc606c
Added the right handler for location events
2020-01-01 21:06:51 +01:00
Fabio Manganiello
de429a5b7d
Extended Telegram integration
2020-01-01 20:59:22 +01:00
Fabio Manganiello
fd5abc748f
Added missing docs
2020-01-01 17:55:19 +01:00
Fabio Manganiello
753694a865
Added Telegram integration
2020-01-01 15:40:42 +01:00
Fabio Manganiello
49a7ee643e
- Added Buienradar integration
...
- Refactored weather plugin/backend as Darksky plugin/backend
2019-12-31 08:51:19 +01:00
Fabio Manganiello
9eed1014eb
Added keyboard/mouse plugin
2019-12-30 21:39:56 +01:00
Fabio Manganiello
dc2b3689a2
Fixes
2019-12-30 19:04:13 +01:00
Fabio Manganiello
952a8f2faf
Added generation for events docs
2019-12-30 18:50:01 +01:00
Fabio Manganiello
9d961a265f
Generated missing docs
2019-12-30 10:16:55 +01:00
Fabio Manganiello
bc7c248f72
Added Google Pub/Sub integration
2019-12-30 09:33:26 +01:00
Fabio Manganiello
8f2eb1c4e0
Reimplemented workers as threads instead of processes
2019-12-29 23:18:58 +01:00
Fabio Manganiello
931ab9d673
Removed debug print
2019-12-29 16:55:50 +01:00
Fabio Manganiello
ba6c890a42
Refactored and improved camera plugin
2019-12-29 16:28:07 +01:00
Fabio Manganiello
663be43f06
Added ping plugin and backend
2019-12-27 23:26:39 +01:00
Fabio Manganiello
ce2b3ae849
LINT fixes
2019-12-27 19:22:48 +01:00
Fabio Manganiello
5ba18ea7d5
Added Trello integration
2019-12-27 19:18:56 +01:00
Fabio Manganiello
f0999c7375
Added is_streaming method to camera.pi
2019-12-27 17:10:36 +01:00
Fabio Manganiello
fb2ff7d1d6
Improved management of PiCamera start/stop streaming events
2019-12-27 16:56:07 +01:00
Fabio Manganiello
b880a02ef6
Fixed websocket on_error handler signature
2019-12-25 20:43:20 +01:00
Fabio Manganiello
29789461d7
Added Todoist integration
2019-12-25 20:33:26 +01:00
Fabio Manganiello
7ecb27463c
Added missing '@'
2019-12-24 14:04:23 +01:00
Fabio Manganiello
ba31d4f4c9
Fixed parameter access
2019-12-24 14:00:06 +01:00
Fabio Manganiello
2edb3f0944
Added button for refreshing available cameras
2019-12-24 13:52:14 +01:00
Fabio Manganiello
ef58cc9e32
Support for username/password in camera URLs if authentication is required
2019-12-24 13:52:14 +01:00
Fabio Manganiello
5d5e8b54ae
Other typing adjustments for dumb Python 3.5 compatibility
2019-12-23 21:49:16 +01:00
Fabio Manganiello
36835a1706
Fixed Python 3.5 compatibility for Zeroborg plugin
2019-12-23 21:40:30 +01:00
Fabio Manganiello
ff9e1c71a7
Prevent race condition on self._drive_thread = None
2019-12-23 18:48:01 +01:00
Fabio Manganiello
7f440a9160
s/or/and/
2019-12-23 18:43:59 +01:00
Fabio Manganiello
d5c2ae961a
Reset the mode if GPIO.getmode() returns None for any reason
2019-12-23 18:40:39 +01:00
Fabio Manganiello
9ffa04c666
Removed auto mode from Zeroborg plugin
2019-12-23 17:57:35 +01:00
Fabio Manganiello
50a7746bf0
Refactored ZeroBorg plugin
2019-12-23 00:36:53 +01:00
Fabio Manganiello
7a7acbe6b9
Support for Zeroborg events
2019-12-22 23:54:45 +01:00
Fabio Manganiello
b36a8095ab
Sleep for (default: 0.1 seconds) between reads when distance sensor runs in
...
continuous mode to prevent excessive CPU load
2019-12-22 19:56:43 +01:00
Fabio Manganiello
17d233b55d
Fixed __exit__ arguments list in GpioSensorDistance
2019-12-22 19:40:41 +01:00
Fabio Manganiello
470f4a8fc9
Added disable_web_clients_notification on Event for events
...
generated with high throughput that shouldn't be propagated
to the connected websockets.
2019-12-22 19:38:01 +01:00
Fabio Manganiello
d6515ed991
Added support for continuous checks on distance sensor and DistanceSensorEvent
2019-12-22 19:09:02 +01:00
Fabio Manganiello
9c4f917b53
LINT fixes
2019-12-22 18:18:41 +01:00
Fabio Manganiello
55d3f379d4
LINT fixes
2019-12-22 18:14:42 +01:00
Fabio Manganiello
a23f5446da
Added GPIO web panel
2019-12-22 18:10:30 +01:00
Fabio Manganiello
d33494419a
Added cleanup action on GPIO plugin
2019-12-21 23:36:09 +01:00
Fabio Manganiello
bdfe48fe32
Refactored integration between ZeroBorg and distance sensor plugin
2019-12-21 13:09:44 +01:00
Fabio Manganiello
58b0b48393
Added gpio.cleanup at the end of get_measurement in distance sensor plugin
2019-12-20 21:40:57 +01:00
Fabio Manganiello
4090570278
GpioSensorDistancePlugin should extend GpioPlugin
2019-12-20 21:24:52 +01:00
Fabio Manganiello
f0751cb37d
Fixed typo
2019-12-20 18:56:00 +01:00
Fabio Manganiello
1077dbcf71
Added mode (BOARD/BCM) parameter to GPIO plugins
2019-12-20 18:27:52 +01:00
Fabio Manganiello
93a3c72d4e
Added camera.android.ipcam web panel
2019-12-18 01:00:56 +01:00
Fabio Manganiello
416c9ceb93
Fixed picamera mjpeg stream
2019-12-17 22:44:15 +01:00
Fabio Manganiello
634aeec58d
Refactored camera.pi endpoints
2019-12-17 21:51:55 +01:00
Fabio Manganiello
17af488b32
Using an io memory buffer to write the streamed images instead of a
...
physical file to improve streaming performance
2019-12-17 21:32:56 +01:00
Fabio Manganiello
60d5e7a0f6
Response cast fix
2019-12-17 20:00:08 +01:00
Fabio Manganiello
fb744dbc74
Added picamera streaming route and web panel tab
2019-12-17 19:54:38 +01:00
Fabio Manganiello
bce4c7c51e
Support for static list of devices in switch.tplink plugin to reduce scanning time and prevent stupid "communication protocol errors" on scan
2019-12-17 10:56:00 +01:00
Fabio Manganiello
66d00ee428
Added Android IPCam support
2019-12-17 00:56:28 +01:00
Fabio Manganiello
0cef9c6070
No need to explicitly specify request_queue and response_queue on Worker derived classes
2019-12-15 19:55:14 +01:00
Fabio Manganiello
d1ea69262a
Prevent active wait on the list of workers
2019-12-15 19:50:47 +01:00
Fabio Manganiello
6082eb62d5
- Added support for device scanning in switch.wemo plugin
...
- Added generic interface for workers to run jobs in parallel
2019-12-15 19:42:48 +01:00
Fabio Manganiello
5481990834
Using scan_timeout value in switch.switchbot plugin when discovering a device characteristics
2019-12-14 15:57:00 +01:00
Fabio Manganiello
4d361b59a3
Bump version: 0.11.1 → 0.11.2
2019-12-13 09:35:43 +00:00
Fabio Manganiello
af24f36519
- Added bluetooth LTE plugin
...
- Switchbot plugin rewritten as an implementation of bluetooth BLE
see #89
2019-12-13 02:08:43 +01:00
Fabio Manganiello
e1ed7f681c
Added bluetooth OBEX file browser service (see #89 )
2019-12-12 00:11:27 +01:00
Fabio Manganiello
5d2d7d55af
Added bluetooth OBEX file receiver service (see #89 )
2019-12-11 22:22:56 +01:00
Fabio Manganiello
8c41110145
Added bluetooth plugin (see #89 )
2019-12-11 18:05:17 +01:00
Fabio Manganiello
2c8993e67d
LINT fixes
2019-12-09 19:22:38 +01:00
Fabio Manganiello
f8a709fe98
Improved Pushbullet plugin
2019-12-09 11:00:31 +00:00
Fabio Manganiello
09caa66317
Return immediately in _parse_records if tag.ndef is null
2019-12-08 21:25:39 +01:00
Fabio Manganiello
d498c21518
Implemented Node-RED backend, solves #88
2019-12-08 19:02:08 +01:00
Fabio Manganiello
a6488e15fe
Don't treat the execute tab as a special tab in the web panel,
...
otherwise configurations with enabled_plugins/disabled_plugins
won't work with it
2019-12-08 17:33:21 +01:00
Fabio Manganiello
be5c5d365c
Added execute tab to webpanel
2019-12-08 16:25:03 +01:00
Fabio Manganiello
f378fa8832
MPV.Event.IDLE should also be treated as a player stop event
2019-12-07 17:16:48 +01:00
Fabio Manganiello
d6f251989c
Added missing __init__.py
2019-12-05 00:46:05 +01:00
Fabio Manganiello
e3d44b56dd
Added Join plugin to control remote Android devices
2019-12-05 00:42:29 +01:00
Fabio Manganiello
0f0f8f8a94
LINT fixes
2019-12-05 00:42:29 +01:00
Fabio Manganiello
08119add97
Optimized WeMo plugin
2019-12-05 00:42:29 +01:00
Fabio Manganiello
fc360e3e43
Bump version: 0.11.0 → 0.11.1
2019-12-04 12:28:01 +00:00
Fabio Manganiello
50168e00c5
Bump version: 0.10.9 → 0.11.0
2019-12-04 12:17:17 +00:00
Fabio Manganiello
c34c8586f4
Fixed KeyError
2019-12-04 09:32:56 +01:00
Fabio Manganiello
10ab1751d8
Return only the first element, not in an array, if status() was called with only one device
2019-12-04 09:29:29 +01:00
Fabio Manganiello
25894d3c00
Only return the first element of status()
2019-12-04 09:28:08 +01:00
Fabio Manganiello
69e702ed0c
Let switch.wemo on/off/toggle methods always call status() for returned value for consistency with the frontend and other switch plugins
2019-12-04 09:24:34 +01:00
Fabio Manganiello
675b690929
switches should not be considered as a special token in the Config object
2019-12-04 02:58:45 +01:00
Fabio Manganiello
fea39b1306
Added id to switch.wemo.status for compatibility with the frontend
2019-12-04 02:50:22 +01:00
Fabio Manganiello
b4dbb0c5a6
Overridden status method in switch.wemo
2019-12-04 02:39:11 +01:00
Fabio Manganiello
2e4e847857
Migrated WeMo Switch plugin to raw HTTP requests. ouimeaux was heavy and broken
2019-12-04 02:09:49 +01:00
Fabio Manganiello
55dd7b0d53
Don't generate a startup script in docker - instead add /app to PYTHONPATH
2019-12-02 09:17:04 +01:00
Fabio Manganiello
5f54eaa108
Only python setup.py web_build is needed in Docker
2019-12-02 01:18:17 +01:00
Fabio Manganiello
a1f3ff3ae5
Forgotten newlines
2019-12-02 01:13:57 +01:00
Fabio Manganiello
e9df6768f9
Use a startup script to launch platypush from the /app folder in docker
2019-12-02 01:12:10 +01:00
Fabio Manganiello
93a5ffc755
git clone in Dockerfile must be recursive
2019-12-02 01:03:33 +01:00
Fabio Manganiello
93bb71bef7
Fixed extra newline
2019-12-02 00:59:25 +01:00
Fabio Manganiello
e751325886
libffi-dev, libjpeg-turbo-dev and zlib-dev are also required to build some of the recommended dependencies
2019-12-02 00:56:22 +01:00
Fabio Manganiello
f08be1f3c1
The generated command should all be on one line
2019-12-02 00:51:56 +01:00
Fabio Manganiello
3a347496d3
Fixed git clone && cd dance in generated Dockerfile
2019-12-02 00:49:19 +01:00
Fabio Manganiello
909695e070
git clones to /app/platypush
2019-12-02 00:43:37 +01:00
Fabio Manganiello
47f7a36e6e
Prevent pending continuation line in generated Dockerfile
2019-12-02 00:41:48 +01:00
Fabio Manganiello
de3bb48493
mkdir -p /app in generated Dockerfile
2019-12-02 00:37:34 +01:00
Fabio Manganiello
3ac9ecbd8f
Do git clone and explicit pip install -r requirements.txt in platydock to make sure that all the recommended dependencies are installed
2019-12-02 00:34:32 +01:00
Fabio Manganiello
fbe4f9494c
No need to run pip install pyScss in setup.py if it's not available
2019-12-02 00:24:28 +01:00
Fabio Manganiello
346b1be924
Filter out in get_plugins the special configuration fields not associated with plugins
2019-12-01 23:53:14 +01:00
Fabio Manganiello
d38746d278
Moved imports for extra dependencies inside the methods where they are actually used
2019-12-01 23:35:05 +01:00
Fabio Manganiello
f8d3ea5197
Refactored platydock and platyvenv
2019-12-01 22:27:54 +01:00
Fabio Manganiello
c5284c7183
Bump version: 0.10.8 → 0.10.9
2019-12-01 19:55:10 +01:00
Fabio Manganiello
f537a7785a
typo
2019-12-01 18:23:50 +01:00
Fabio Manganiello
e3476ee634
Bump version: 0.10.7 → 0.10.8
2019-12-01 17:47:53 +01:00
Fabio Manganiello
92533c8303
Added special utils.get_context action to get current context
2019-12-01 17:43:10 +01:00
Fabio Manganiello
a18452ab2e
Made procedure.[sync|async].name second argument optional
...
A procedure will be sync if [sync|async] is not specified
2019-12-01 16:48:57 +01:00
Fabio Manganiello
f281411b2e
Set the light property before the any_on/all_on check on the group
2019-12-01 16:33:48 +01:00
Fabio Manganiello
3bbb6cf053
Include dev version of vue.js if available in the HTTP static/js
...
folder, otherwise include the minified version
2019-12-01 16:33:48 +01:00
Fabio Manganiello
abbfe517de
Don't override matches_condition in ResponseEvent to run stop_conversation. Use the flag play_response=False on plugin level to bypass the response instead
2019-11-26 15:52:30 +01:00
Fabio Manganiello
2b8ba2b956
Support for specifying external audio player on Alexa plugin
2019-11-26 11:19:15 +01:00
Fabio Manganiello
d5f0d476c0
#86 : Support for play_response flag on Google pushtotalk plugin
2019-11-26 00:32:27 +01:00
Fabio Manganiello
9b04570e49
Assistant event refactor: always explicitly pass the assistant object.
...
Also added match_condition override for ResponseEvent to capture the
assistant response text, when available, and prevent the default
response - it should solve #86 .
2019-11-26 00:16:32 +01:00
Fabio Manganiello
0ddfce3dce
PEP fixes
2019-11-26 00:04:17 +01:00
Fabio Manganiello
75c6abf249
Pass the assistant object on the Alexa events
2019-11-25 23:16:33 +01:00
Fabio Manganiello
077d787d42
Added input audio device support to Alexa plugin
2019-11-25 23:05:01 +01:00
Fabio Manganiello
2cf9bf654d
Removed unused imports from Snowboy backend
2019-11-25 20:27:52 +01:00
Fabio Manganiello
1661428417
#80 : kwargs on start_conversation for extra parameters
2019-11-25 00:06:48 +01:00
Fabio Manganiello
ef8fd044fd
#80 : Extended Alexa/Echo plugin
2019-11-24 23:57:32 +01:00
Fabio Manganiello
deb28cf005
#80 : Support for Alexa/Echo assistant
2019-11-24 23:46:14 +01:00
Fabio Manganiello
f98a440200
Support for explicit enabled_plugins/disabled_plugins on webpanel index
2019-11-22 00:00:14 +01:00
Fabio Manganiello
f04f42caef
Refactored and simplified Snapcast backend. Moreover the "grace sleep"
...
should happen in any case of errors, not only on disconnect errors,
to prevent a tight loop of retries.
2019-11-05 18:11:04 +01:00
Fabio Manganiello
6aa13a10cb
Initialize the animation groups map only if groups was specified
2019-11-03 14:45:03 +01:00
Fabio Manganiello
c4f4d61851
Bump version: 0.10.6 → 0.10.7
2019-10-21 01:30:57 +02:00
Fabio Manganiello
9914d4ef0b
Handling CSS and fonts properly in RSSUpdates digests
2019-10-13 12:43:18 +02:00
Fabio Manganiello
4c72646759
typo
2019-10-08 10:24:48 +00:00
Fabio Manganiello
ca41f6b8cf
Torrent download from web panel should be asynchronous
2019-10-08 10:14:45 +00:00
Fabio Manganiello
99d17b666c
Only set up listen ports for libtorrent if it's a new session
2019-10-08 10:06:33 +00:00
Fabio Manganiello
f23afa3c53
Better management for font styles in http.webpage.simplify
2019-10-05 23:54:26 +02:00
Fabio Manganiello
89c2555753
Improved font in http.webpage.simplify for HTML and PDF output
2019-10-05 22:48:07 +02:00
Fabio Manganiello
09991b2e8a
Use a filesystem FIFO for YouTube media content instead of playing the *.googlevideo.com URL directly
...
Google Video URLs now return 403 if played directly. Let youtube-dl
handle the heavylifting and use a FIFO to stream the media
2019-09-30 18:06:30 +02:00
Fabio Manganiello
f69a7e422b
[ #84 ] Completed Dropbox support
2019-09-30 00:04:48 +02:00
Fabio Manganiello
313a195831
Support for torrent direct download through magnet link in web panel
2019-09-29 17:48:30 +02:00
Fabio Manganiello
fd10b2260c
Changed PopcornTime endpoints
2019-09-29 10:31:00 +02:00
Fabio Manganiello
faa55daccf
Smarter cron management with croniter
2019-09-28 01:34:27 +02:00
Fabio Manganiello
bcb47909c9
Reverted seconds support in cronjobs
2019-09-27 15:00:00 +02:00
Fabio Manganiello
87d14134f8
Increased cron check frequency to support seconds granularity
2019-09-27 14:51:53 +02:00
Fabio Manganiello
bcd3bf7911
Support for seconds in cron expressions
2019-09-27 14:47:27 +02:00
Fabio Manganiello
48e4aeb3dc
Added machine learning plugin based on OpenCV cv2.dnn module
2019-09-27 11:46:50 +02:00
Fabio Manganiello
6aa52f0522
typo
2019-09-27 10:35:16 +02:00
Fabio Manganiello
a17dba3ec6
LINT warnings fix
2019-09-26 19:23:38 +02:00
Fabio Manganiello
168b1b0e5a
Finalized camera.ir.mlx90640 web interface
2019-09-26 18:33:44 +02:00
Fabio Manganiello
d7dc74beed
Added web plugin for mlx90640 infrared camera
2019-09-26 11:15:18 +02:00
Fabio Manganiello
c6384b3b65
Expand rawrgb_path to support relative paths and user prefix
2019-09-25 16:02:35 +02:00
Fabio Manganiello
755c8b52ec
Extended features of MLX90640 infrared camera plugin
2019-09-25 15:36:56 +02:00
Fabio Manganiello
d1d842ae95
Added MLX90640 infrared camera plugin
2019-09-25 10:40:57 +02:00
Fabio Manganiello
d96a218c56
LINT warnings fix
2019-09-24 23:21:19 +02:00
Fabio Manganiello
876a07d2c8
Keep measurements in a loop until we get a valid data point
2019-09-24 10:00:56 +02:00
Fabio Manganiello
0fe255436e
Don't fail hard if the seconds key is not in the map
2019-09-24 01:20:14 +02:00
Fabio Manganiello
d21fd64100
Added motion_events_per_sec measurement
2019-09-24 01:17:13 +02:00
Fabio Manganiello
ff1fe3058b
Don't fail hard in case of temporary sensor glitches
2019-09-24 01:01:06 +02:00
Fabio Manganiello
d6de1189e5
Simplified motion sensor interface by removing unneeded absolute vector
2019-09-24 00:13:02 +02:00
Fabio Manganiello
3da6c41f21
Shorter default poll_seconds (0.01) for better motion sensitivity
2019-09-24 00:10:17 +02:00
Fabio Manganiello
63d222d2ee
Slot enum mapping fix
2019-09-23 23:48:26 +02:00
Fabio Manganiello
f76e45dda9
Backend name typo
2019-09-23 23:34:46 +02:00
Fabio Manganiello
7e92f59d44
Added PWM3901 optical motion/flow sensor plugin
2019-09-23 23:28:33 +02:00
Fabio Manganiello
a580cc93eb
Added draft for Dropbox plugin
2019-09-13 10:18:54 +00:00
Fabio Manganiello
a43508a743
Do not import cv2 in camera.__init__ unless we specify a video_type that needs to be expanded. Otherwise we introduce the OpenCV dependency also for the camera.pi plugin
2019-09-10 00:21:11 +02:00
Fabio Manganiello
e9c7104242
Keep track of the newly inserted token records in media.local.search, or we can experience UniqueConstraint violations upon session commit because of duplicate records
2019-09-02 23:05:16 +02:00
Fabio Manganiello
1dca11c0be
HTTP headers should always be an argument of the Request object
2019-09-02 01:17:52 +02:00
Fabio Manganiello
e673b3e0c7
search_* methods can't be static
2019-09-02 01:12:43 +02:00
Fabio Manganiello
86d38b421a
Added headers in torrent API requests
2019-09-02 01:10:22 +02:00
Fabio Manganiello
7bf4284f7b
Typo in keyword name
2019-09-02 01:00:38 +02:00
Fabio Manganiello
7bbaaba767
Refactored torrents plugin
2019-09-02 00:53:09 +02:00
Fabio Manganiello
b9360cf2c5
camera.close() should be in a finally block to make sure that we don't
...
run out of resources because of failed camera initializations
2019-08-25 16:51:10 +02:00
Fabio Manganiello
69a03fa025
Do wait_recording until the client disconnects
2019-08-17 00:27:19 +02:00
Fabio Manganiello
b599c622c4
_get_camera should first verify both that camera is not null and not
...
closed before returning the cached object
2019-08-16 19:15:00 +02:00
Fabio Manganiello
5ca8ee594f
If a for loop argument returns a native Python iterable then expand that iterable
2019-08-16 19:04:15 +02:00
Fabio Manganiello
3c675b296f
Don't propagate the exception if stop_preview failed
2019-08-16 18:49:15 +02:00
Fabio Manganiello
6465a6f282
Added start/stop preview camera actions
2019-08-16 18:38:04 +02:00
Fabio Manganiello
c93af07333
Close camera preview after taking a picture or a sequence
2019-08-16 18:30:49 +02:00
Fabio Manganiello
284ec129d9
Lint fixes
2019-08-16 18:18:55 +02:00
Fabio Manganiello
7fd5f5c4f8
Proper synchronization with client connections and stop_streaming condition in the streaming thread
2019-08-16 17:49:15 +02:00
Fabio Manganiello
190ab15a76
Fixed camera.pi plugin
2019-08-16 12:24:42 +02:00
Fabio Manganiello
b153d212e3
New picamera plugin
2019-08-16 11:11:45 +02:00
Fabio Manganiello
59d976d681
Start ranging only with one setting (to get more accurate measurements once the sensor has warmed up) and configure it only at sensor startup
2019-08-15 15:20:49 +02:00
Fabio Manganiello
dccd3fd3d4
Don't open the device and leave it open on each measurement, or the backend will fail with 'Too many open files' at some point
2019-08-15 13:06:31 +02:00
Fabio Manganiello
8396c82d56
Typo in import name
2019-08-15 00:35:17 +02:00
Fabio Manganiello
b15dff0a24
Class name typo
2019-08-15 00:30:42 +02:00
Fabio Manganiello
e60660b0e6
Added plugin and backend for VL53L1X laser ranger/distance sensor
2019-08-15 00:26:25 +02:00
Fabio Manganiello
8462f474f7
Skip tolerance check whether if the new or the old value are not numeric
2019-08-14 22:49:18 +02:00
Fabio Manganiello
4a34fcd7fd
More robust sensor tolerance measurement in case of non-numeric sensor data
2019-08-14 22:45:50 +02:00
Fabio Manganiello
e7448d90d6
Trigger a ConversationStartedEvent before initializing the assistant object
2019-08-14 21:46:31 +02:00
Fabio Manganiello
df5f17eb0e
Fixed wrong plugin name
2019-08-14 21:38:52 +02:00
Fabio Manganiello
19dc96ff1c
Added LTR559 sensor plugin and backend
2019-08-14 21:27:25 +02:00
Fabio Manganiello
80f969cfce
The BME280 sensor also supports altitude
2019-08-14 21:03:27 +02:00
Fabio Manganiello
8bf5076334
FIX we should return device from _get_device
2019-08-14 20:52:27 +02:00
Fabio Manganiello
693b38ef51
Cache the BME280 object instead of initializing it on each get_measurement call
...
The BME280 needs some warmup time before picking up the results.
2019-08-14 20:50:14 +02:00
Fabio Manganiello
e0351421ad
Better management of sensor tolerance in SensorBackend
2019-08-14 20:39:21 +02:00
Fabio Manganiello
851635bc15
typo on serial plugin name
2019-08-14 20:03:34 +02:00
Fabio Manganiello
8bfe875483
We don't need to fail hard in backend.http if the backend is configured
...
to run the web server externally but without spawning uswgi directly
(e.g. if nginx takes care of spawning and wrapping the uwsgi instance)
2019-08-14 20:02:13 +02:00
Fabio Manganiello
757e0ff9bf
Refactored SensorBackend and derived classes and added BME280 sensor
...
plugin and backend
2019-08-14 19:49:19 +02:00
Fabio Manganiello
e79430cdc4
Implemented tolerance threshold for lat/long/alt in GPS backend
2019-08-13 22:25:28 +02:00
Fabio Manganiello
228e656da8
Only import cv2 in the methods that require it (prevents camera.pi
...
and other camera derived plugins from failing if OpenCV is not installed)
2019-08-07 09:43:40 +02:00
Fabio Manganiello
fa9b816d06
Return the parsed raw YouTube URL only if available, otherwise the original URL
2019-08-04 17:36:06 +02:00
Fabio Manganiello
aebeadbcf7
args can be either a list or a tuple - treat accordingly
2019-08-04 17:17:09 +02:00
Fabio Manganiello
3a5a731bd2
pause and then play omxplayer in the play handler to make sure that all the proper events are generated upon play
2019-08-04 16:50:38 +02:00
Fabio Manganiello
39b0c3b741
Added GPS backend
2019-08-03 02:06:06 +02:00
Fabio Manganiello
c9dc1aac44
_last_read should always contain the full output of the plugin, not
...
the filtered output
2019-08-01 23:41:46 +02:00
Fabio Manganiello
a3271f0522
Only return the sensor data whose value has changed on the envirophat
...
backend
2019-08-01 23:33:36 +02:00
Fabio Manganiello
f06a851b61
Accelerometer and magnometer reads should be dict not set
2019-08-01 23:23:19 +02:00
Fabio Manganiello
675f899b5f
FIX: get_measurement should return a dict not a set
2019-08-01 23:17:04 +02:00
Fabio Manganiello
72d1b3cd2a
Filter out only selected sensors on the enviropHAT backend
2019-08-01 22:47:34 +02:00
Fabio Manganiello
bdadd2061c
Added EnviropHAT support
2019-08-01 22:40:41 +02:00
Fabio Manganiello
dcb4a36959
Replaced os.environ['HOME'] with os.path.expanduser('~') (Windows compatibility)
...
Solves #74
2019-07-29 00:03:01 +02:00
Fabio Manganiello
1ca7feb506
Small fix for the font size on mobile
2019-07-28 23:32:52 +02:00
Fabio Manganiello
0ab70cdbae
Kodi Application.SetVolume() expects an integer or a string, not a float
2019-07-25 23:54:32 +02:00
Fabio Manganiello
f5dbfe08bd
Bump version: 0.10.5 → 0.10.6
2019-07-25 18:40:05 +02:00
Fabio Manganiello
1f2f293778
Redirect mercury-parser.js stderr to stdout. Moreover, if an error occurs while parsing a link from an RSS feed we should report the link that raised the error, not the URL of the parent feed
2019-07-25 16:34:00 +00:00
Fabio Manganiello
44e27e6c62
Log the link we are trying to parse (useful for debugging parsing issues)
2019-07-25 18:23:28 +02:00
Fabio Manganiello
83db3f770c
Don't generate HTML/CSS wrapper for the content unless the output is a
...
destination file (HTML/PDF).
2019-07-25 18:08:30 +02:00
Fabio Manganiello
34433a363b
Call sound.stop_recording upon audio stream stop so we won't have hanging streams with no clients connected
2019-07-25 14:01:09 +02:00
Fabio Manganiello
beef06fad2
Log exception and parser output if it returns invalid JSON
2019-07-24 23:31:27 +00:00
Fabio Manganiello
d64c519660
Bump version: 0.10.4 → 0.10.5
2019-07-25 01:15:38 +02:00
Fabio Manganiello
6aaa2fa1ea
extract_content is supposed to be a boolean
2019-07-25 01:09:16 +02:00
Fabio Manganiello
5293f5b203
#73 : Implemented wrapper plugin for the new Node.js mercury-parser.
...
As the Mercury reader web API is deprecated, and the only available
implementation is the open source mercury-parser, node, npm and
@postlight/mercury-parser have to be added as dependencies for the
http.webpage plugin (or at least for the `simplify` action).
2019-07-24 19:02:53 +02:00
Fabio Manganiello
43ca3a6f94
Added support for streaming audio from an input source over HTTP
2019-07-23 18:22:00 +02:00
Fabio Manganiello
426f064459
"Remember me" options on session should leave the cookie for a longer
...
time (e.g. one year), it should be browser-session-only otherwise
2019-07-23 00:31:17 +02:00
Fabio Manganiello
a16fc65d37
Try to load the dev version of vue.js if available
2019-07-19 20:00:39 +02:00
Fabio Manganiello
57712b3693
Be more robust in case of Mercury API failures while parsing RSS feeds. TODO: the Mercury API has now been retired and replaced by a library, that however is only available for Node.js. Figure out how to wrap the new library in Python 3
2019-07-19 15:00:06 +00:00
Fabio Manganiello
f12c6db34f
Added camera web panel
2019-07-19 15:20:48 +02:00
Fabio Manganiello
5c3d32d05d
Fixed undefined reference
2019-07-19 13:50:01 +02:00
Fabio Manganiello
f86e2eb5a7
Implemented settings page and finalized multi-user support
2019-07-19 00:50:52 +02:00
Fabio Manganiello
cd9bdbb1c8
Fixed undefined reference
2019-07-17 14:57:50 +02:00
Fabio Manganiello
ca030b06e0
Added support (not working yet) for custom Google device actions and events
2019-07-17 14:56:04 +02:00
Fabio Manganiello
008fce70fa
Replaced references to in pydoc with format, as doesn't seem to work in RTD
2019-07-16 23:00:20 +02:00
Fabio Manganiello
a60e89806f
Fixed undefined reference
2019-07-16 22:43:27 +02:00
Fabio Manganiello
cc61032bec
Fixes for readthedocs build
2019-07-16 22:38:42 +02:00
Fabio Manganiello
95b5820783
Fixes for readthedocs build
2019-07-16 22:29:23 +02:00
Fabio Manganiello
9c4646bed5
Fixed documentation and added missing docs to the index
2019-07-16 20:28:00 +02:00
Fabio Manganiello
96c9d5460a
Log the underlying error cause too if get_plugin fails
2019-07-16 16:51:27 +02:00
Fabio Manganiello
4e8235a649
More robust logic to handle temporary database connection errors through retry mechanism
2019-07-16 16:40:56 +02:00
Fabio Manganiello
1c1ecc18df
Support for multi-users and authentication for HTTP pages
2019-07-15 14:12:00 +02:00
Fabio Manganiello
674c164fc1
Fixed pylint warnings
2019-07-13 22:36:45 +02:00
Fabio Manganiello
0826dd53a6
FIX: LifoQueue.get is blocking. Check if the queue is empty instead
2019-07-13 22:22:44 +02:00
Fabio Manganiello
55cd937a51
Made OMXPlayer plugin more resiliant in the case where the player has already terminated
2019-07-13 22:12:56 +02:00
Fabio Manganiello
0b05d7d8de
pylint warnings fixed
2019-07-13 18:25:42 +02:00
Fabio Manganiello
07dbe57641
pylint warnings fixed
2019-07-13 15:49:38 +02:00
Fabio Manganiello
8b2c6d333e
Lint warnings fixed
2019-07-13 14:22:43 +02:00
Fabio Manganiello
3c3496b19a
Revert "The active-glow animation takes too much CPU on music.mpd"
...
This reverts commit 4c3cd2fcf2
.
2019-07-13 12:27:43 +02:00
Fabio Manganiello
7666e8cb51
Including vue.min.js instead of vue.js
2019-07-13 12:25:02 +02:00
Fabio Manganiello
3479033170
Version bump 0.10.3 -> 0.10.4
2019-07-12 23:57:06 +02:00
Fabio Manganiello
654c61ec51
Standardized omxplayer returned attributes and volume management
2019-07-12 20:12:59 +02:00
Fabio Manganiello
50313580fd
Catch PortAudio exception in case of race conditions on closed streams and re-initialize the assistant object when they occur
2019-07-12 18:19:32 +02:00
Fabio Manganiello
bb3a39acb9
Better synchronization mechanism between push-to-talk and platypush when an event is matched and no assistant playback should follow up
2019-07-12 18:11:14 +02:00
Fabio Manganiello
2999e47a0f
Run the hotword detected sound in another thread, or it's likely to mess up with the timing of the hotword-assistant interaction
2019-07-12 17:44:59 +02:00
Fabio Manganiello
fe96940744
detect_sound should support relative and ~ paths
2019-07-12 14:55:14 +02:00
Fabio Manganiello
8d660f27d4
Support for multiple hotwords, configurations and assistant languages in Snowboy backend
2019-07-12 14:53:12 +02:00
Fabio Manganiello
6769707580
Stop assistant interaction if a phrase match is found
2019-07-12 09:37:37 +02:00
Fabio Manganiello
b63843a130
Fixed assistant event constructor with new Google plugins structure
2019-07-12 01:45:27 +02:00
Fabio Manganiello
6848a2a0c1
Version bump 0.10.2 -> 0.10.3
2019-07-12 00:59:03 +02:00
Fabio Manganiello
402baee48e
typo
2019-07-12 00:56:18 +02:00
Fabio Manganiello
5766367402
Rewritten snowboy and Google push-to-talk plugins to make them a better replacement for the deprecated google-assistant-library
2019-07-11 22:54:33 +02:00
Fabio Manganiello
792c24700c
Refactored requirements to only include mandatory ones and added style reference to assistant in dashboard.html
2019-07-10 12:18:53 +02:00
Fabio Manganiello
f086d30e71
Version bump 0.10.1 -> 0.10.2
2019-07-09 02:14:52 +02:00
Fabio Manganiello
fc296a1417
Version bump 0.10 -> 0.10.1
2019-07-09 02:01:01 +02:00
Fabio Manganiello
24d3810e44
Added NFC backend
2019-07-09 01:44:31 +02:00
Fabio Manganiello
0a97bb2345
Better style for webpanel switches
2019-07-08 15:21:13 +02:00
Fabio Manganiello
b50a52acf2
Sort articles in descending order when querying from RSS news web widget
2019-07-08 09:26:38 +02:00
Fabio Manganiello
4c3cd2fcf2
The active-glow animation takes too much CPU on music.mpd
2019-07-08 00:58:02 +02:00
Fabio Manganiello
c19251c6a1
Always reset carousel image width to auto before re-adjusting the size
2019-07-08 00:16:43 +02:00
Fabio Manganiello
b2c31fcec6
Dashboard style improvements
2019-07-07 23:50:35 +02:00
Fabio Manganiello
42e5673192
Increased font size for widgets
2019-07-07 20:47:44 +02:00
Fabio Manganiello
851c0f8583
Version bump 0.10 -> 0.10
2019-07-07 20:19:25 +02:00
Fabio Manganiello
09165ca0ff
Dashboard rewritten in vue.js
2019-07-07 20:11:32 +02:00
Fabio Manganiello
8006f3688c
Removed old gpio scripts
2019-07-02 16:27:13 +02:00
Fabio Manganiello
1e39d3a8d2
Return obj even when the metrics are undefined, or we will set this.metrics to undefined
2019-07-02 16:12:24 +02:00
Fabio Manganiello
75f7fbd67a
Don't perform reads on the serial plugin when refreshing
2019-07-02 16:04:06 +02:00
Fabio Manganiello
0dac122db5
Style for the new sensors web plugin
2019-07-02 15:38:09 +02:00
Fabio Manganiello
fb4af87967
Style for the new sensors web plugin
2019-07-02 15:23:41 +02:00
Fabio Manganiello
9c44d047ac
Vue.set to set metrics object, array assignment won't be picked up by Vue listeners
2019-07-02 15:08:32 +02:00
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
17de2a194c
Removed comment
2019-06-24 01:04:52 +02:00
Fabio Manganiello
9305f86d0c
New media webplugin WIP
2019-06-24 01:01:08 +02:00
Fabio Manganiello
ba800ef8e2
Normalized all local players so that they handle events and return statuses in the same format
2019-06-23 02:16:20 +02:00
Fabio Manganiello
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
3bd9bec660
MIME type utils method now compatible with multiple version of python-magic
2019-06-21 13:40:45 +02:00
Fabio Manganiello
4cd2e6949f
New media webplugin WIP
2019-06-21 02:13:14 +02:00
Fabio Manganiello
9805ed0479
Merge branch 'master' into vuejs
2019-06-18 18:31:11 +02:00
Fabio Manganiello
f108157a8a
Fixed inconsistencies/warnings in calendar plugins
2019-06-18 18:30:43 +02:00
Fabio Manganiello
ecd41a1f41
New media webplugin WIP
2019-06-18 18:14:48 +02:00
Fabio Manganiello
32efebe405
Fixed typos and warnings in snapcast backend
2019-06-16 21:59:31 +02:00
Fabio Manganiello
df355fb954
Fixed typos and warnings in snapcast backend
2019-06-16 21:54:03 +02:00
Fabio Manganiello
3bbbd5edaa
new font-awesome commits
2019-06-16 21:47:36 +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
5041d8bec2
whiteline PEP fix
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
f053aa455d
PEP fixes for light.hue plugin and new methods xy and ct added
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
7ea65cf90e
One more url fix
2019-04-24 23:57:11 +02:00
Fabio Manganiello
5ed4b10de3
Fixed torrent search URLs
2019-04-24 23:53:20 +02:00
Fabio Manganiello
d2f4ec44c3
Support for searching all the torrent categories in parallel if no categories is provided
2019-04-24 23:45:57 +02:00
Fabio Manganiello
2bcc22e0fc
Refactored torrent search
2019-04-24 23:25:25 +02:00
Fabio Manganiello
9f3f6c9caa
Log URL being parsed
2019-04-13 08:17:45 +00:00
Fabio Manganiello
3dd47260d6
Raise runtime error if mercury API responds with empty response
2019-04-13 08:15:08 +00:00
Fabio Manganiello
8553a8eeb5
typo
2019-04-13 08:10:35 +00:00
Fabio Manganiello
72f179cb7e
typo
2019-04-13 08:08:20 +00:00
Fabio Manganiello
1ea6041dfa
Log response from Mercury API
2019-04-13 08:06:40 +00:00
Fabio Manganiello
611e5f2160
Set default title with timestamp if no title is provided by the Instapaper API
2019-04-13 08:03:42 +00:00
Fabio Manganiello
c55deab6cb
Support for authentication in HTTP plugin methods
2019-04-11 16:21:39 +02:00
Fabio Manganiello
12fefaa220
Improved generated pdf font size and family
2019-03-30 14:08:04 +01:00
Fabio Manganiello
24ec35e5b3
Increased font size in generated pdf
2019-03-30 12:41:02 +01:00
Fabio Manganiello
3ca6e75634
Added font style to generated pdf
2019-03-30 12:25:19 +01:00
Fabio Manganiello
9fc243c93d
Use startTime instead of endTime as a time indicator to identify new records
2019-03-29 10:14:46 +00:00
Fabio Manganiello
b8e9adadbe
Added plugin to parse web pages
2019-03-29 03:57:19 +01: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
20b0c09a0c
Removed workaround that doesn't work
2019-03-20 18:37:49 +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
eb40024c53
Only initalize credentials map in Google plugins if some scopes are required
2019-03-18 01:06:10 +01:00
Fabio Manganiello
710694e8d7
Added altitude to LatLongUpdateEvent
2019-03-18 00:17:11 +01:00
Fabio Manganiello
8b89166e30
Fixed typo in SSL variable name
2019-03-18 00:16:54 +01:00
Fabio Manganiello
cbe4d8cd78
Delete recording thread item from map only if the thread has actually stopped
2019-03-17 22:55:36 +01:00
Fabio Manganiello
81a200bd4e
Make sure that device_id is in _is_recording and hasn't been removed by another thread before checking it
2019-03-17 02:16:43 +01:00
Fabio Manganiello
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
f95f52df19
Few fixes in camera plugin
2019-03-17 02:06:47 +01:00
Fabio Manganiello
9ed4ad6d85
Set workaround environment variable before importing OpenCV
2019-03-17 01:56:05 +01:00
Fabio Manganiello
9f008aa954
typo
2019-03-17 01:41:00 +01:00
Fabio Manganiello
7fb53ead59
Always cast environment variable values to string
2019-03-17 01:39:24 +01:00
Fabio Manganiello
2f1cea99fa
Support for environment variables passed through main config
2019-03-17 01:34:42 +01:00
Fabio Manganiello
3af30075e3
Temporarily workaround for OpenCV >= 3.4.2 bug that doesn't properly release the video device
2019-03-17 01:26:06 +01:00
Fabio Manganiello
5942a7cd84
Removed unused imports
2019-03-17 00:56:32 +01:00
Fabio Manganiello
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
55c0896b31
Refactored Google plugins with support multiple scopes and a simpler API and added Google Fit plugin
2019-03-14 01:12:39 +01:00
Fabio Manganiello
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
f6221a798a
Don't add disable_logging to the string representation of the Response object unless it's set
2019-03-06 02:23:06 +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
dcb0555571
Returing the best option for torrents based on max peers/seeds and
...
returning more metadata info on torrent.search
2019-03-05 00:10:06 +01:00
Fabio Manganiello
619c750f3b
Don't fail hard if status is not available
2019-03-03 12:42:31 +01:00
Fabio Manganiello
771da4528b
Reverted the revert
2019-02-28 18:57:22 +01:00
Fabio Manganiello
f2bd309478
Regex fix
2019-02-28 18:30:52 +01:00
Fabio Manganiello
12fd582d70
typo
2019-02-28 18:22:50 +01:00
Fabio Manganiello
1b9094a36b
Some hysterical guy has Spotify has decided to change the playlists URI
...
format again in the last couple of months with no notice nor
back-compatibility plan. Normalizing playlist URIs in the new (or
old-old?) format while innerly cursing at the incompetency of Spotify
2019-02-28 16:36:11 +01:00
Fabio Manganiello
65d6e5a5f6
Support for video_type in camera plugin
2019-02-28 01:55:12 +01:00
Fabio Manganiello
2af47372b0
Added docstring to EventGenerator class
2019-02-28 01:28:51 +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
29b8d0827b
Added basic support for camera events in the camera plugin
2019-02-27 20:12:40 +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
06564b043e
Version bump 0.9.5 -> 0.9.6
2019-02-24 19:04:07 +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
749436c452
Clean up running VLC instance on stop and new media play
2019-02-21 19:24:47 +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
6222747730
typo
2019-02-21 01:49:43 +01:00
Fabio Manganiello
97e1dfacdf
Made VLC template symlink
2019-02-21 01:38:21 +01:00
Fabio Manganiello
8b08f146a0
Typo on method name
2019-02-21 01:34:09 +01:00
Fabio Manganiello
f9765b4fed
Support for extra arguments passed to VLC
2019-02-21 01:28:51 +01:00
Fabio Manganiello
9e7f84644b
Support for default fullscreen and default volume in VLC
2019-02-21 00:09:02 +01:00
Fabio Manganiello
c4cd93a6da
Added VLC plugin
2019-02-20 17:17:30 +01:00
Fabio Manganiello
b5315032c3
Leverage youtube-dl standard media plugin instead of the mpv internal one
2019-02-19 13:40:18 +01:00
Fabio Manganiello
185aff6be3
Fixed support for subtitles in torrent files and better synchronization between mpv and torrent
2019-02-19 13:13:17 +01:00
Fabio Manganiello
377c963994
Better to react only on mpv shutdown not end_of_file
2019-02-19 11:12:57 +01:00
Fabio Manganiello
dcec3329d4
Trying to fix nasty race condition SHUTDOWN->START_FILE that triggers a spurious MediaStopEvent
2019-02-19 11:09:22 +01:00
Fabio Manganiello
10fa7c1ab1
Trying to fix nasty race condition SHUTDOWN->START_FILE that triggers a spurious MediaStopEvent
2019-02-19 11:08:57 +01:00
Fabio Manganiello
47b92480ff
Trying to fix nasty race condition SHUTDOWN->START_FILE that triggers a spurious MediaStopEvent
2019-02-19 11:06:02 +01:00
Fabio Manganiello
c0513cade9
Handle quick playback 'rebounces' in mpv
2019-02-19 10:56:05 +01:00
Fabio Manganiello
0336427386
mpv received events logged on info instead of debug
2019-02-19 10:47:10 +01:00
Fabio Manganiello
bcb60ed218
Minimum torrent download size before streaming: 10->15 MB
2019-02-19 10:42:51 +01:00
Fabio Manganiello
bc81f9bed6
Only propagate MediaStopEvent on mpv shutdown, not end-of-file
2019-02-19 10:41:40 +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
f71e534860
Added mpv to the supported media plugins on media.webtorrent
2019-02-19 10:31:17 +01:00
Fabio Manganiello
88600dab90
typo
2019-02-19 01:09:53 +01:00
Fabio Manganiello
151e2e56d9
typo
2019-02-19 01:05:44 +01:00
Fabio Manganiello
8f8b28912c
typo
2019-02-19 01:02:07 +01:00
Fabio Manganiello
376dda616b
Propagate environment variables if set to mpv player before playing
2019-02-19 00:58:26 +01:00
Fabio Manganiello
8a6be8b540
Use synchronize_session=fetch when synchronizing records on deletion
2019-02-19 00:32:54 +01:00
Fabio Manganiello
11af83f88f
Added symlink media.mpv.html -> media.html
2019-02-19 00:19:48 +01:00
Fabio Manganiello
de0b92f5ef
Added mpv media plugin
2019-02-19 00:15:03 +01:00
Fabio Manganiello
a549627516
Added draft for media.mpv plugin
2019-02-18 01:17:21 +01:00
Fabio Manganiello
9a565061c4
Refactoring of media.search in a more scalable way. Also faster search
...
with workers in parallel by media type
2019-02-18 00:26:46 +01:00
Fabio Manganiello
c7f0783615
Unique constraint on MediaFile.path
2019-02-17 17:17:20 +01:00
Fabio Manganiello
497d7770c6
Better way to group by media path
2019-02-17 17:16:25 +01:00
Fabio Manganiello
d03d69e6c0
Forgot an equal sign
2019-02-17 16:31:04 +01:00
Fabio Manganiello
2213455eff
Fixed setup.py error on filter use as a keyword
2019-02-17 16:30:43 +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
4076cd3518
Sync removed directories in the media index
2019-02-17 16:04:46 +01:00
Fabio Manganiello
b204d477ac
Added LocalMediaSearcher class to index local files and provide faster results to media.search when the index is available
2019-02-17 02:37:23 +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
2d2db499be
Running recording in a separate thread so it doesn't block the receiving backend and added playback/recording start/pause/stop events
2019-02-15 19:23:01 +01:00
Fabio Manganiello
f8e5515640
Make a copy of the procedure arguments before expanding the values from the context, or we'll permanently overwrite the procedure arguments with expanded values
2019-02-15 11:45:16 +01:00
Fabio Manganiello
1103e417e1
Managing optional arguments properly on _exec
2019-02-13 23:50:40 +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
32cdab5530
Always handle at least one retry on mpd plugin _exec method, the TCP connection to a mopidy server can really be shaky
2019-02-13 17:35:18 +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
27e4ea5b5b
Support for both enabled and disabled flags on plugin level
2019-02-13 15:14:35 +01:00
Fabio Manganiello
0a81b43f1d
startStreaming should always return a map
2019-02-13 10:15:18 +01:00
Fabio Manganiello
8227427834
webtorrent timeout 20 -> 120 seconds
2019-02-13 09:46:51 +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
434bc8a5eb
Reset bridge connection upon failure
2019-02-08 19:59:25 +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
077bb0686b
Don't break if no data is received from the Snapcast server
2019-02-07 09:05:27 +01:00
Fabio Manganiello
affaee6ab7
Forgot to override the default port when specified in media.start_streaming
2019-02-06 17:49:20 +01:00
Fabio Manganiello
86dc7f240a
typo
2019-02-06 15:15:10 +01:00
Fabio Manganiello
880a394d74
Synchronize with the streaming process to make sure that we start playing only when the streaming service is ready
2019-02-06 15:12:55 +01:00
Fabio Manganiello
97d2e734ee
Moved import magic statement to the get_mime_type function so Travis won't break
2019-02-06 13:22:58 +01:00
Fabio Manganiello
10e45123c4
Fixed localstream executable
2019-02-06 13:17:03 +01:00
Fabio Manganiello
687e9e32f9
Forgot an import os line
2019-02-06 11:55:21 +01:00
Fabio Manganiello
6713ce0f03
Implemented support for casting local media through the localstream script
2019-02-06 11:51:44 +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
8a75979f72
Expose output_dir and media_file on TorrentCompletedDownloadEvent
2019-02-05 17:18:55 +01:00
Fabio Manganiello
f4dd4e0eb5
typo
2019-02-05 17:09:40 +01:00
Fabio Manganiello
8c8e913242
Don't pass duplicate arguments from download to play
2019-02-05 16:34:48 +01:00
Fabio Manganiello
ba48e52fb1
Update self.chromecasts on each get_chromecasts() call
2019-01-20 15:16:16 +01:00
Fabio Manganiello
3c0ed443a2
Support for download-only option in webtorrent plugin
2019-01-20 15:10:14 +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
96ee21dc0e
More consistent naming for Kodi and Chromecast media methods
2019-02-05 11:02:31 +01:00
Fabio Manganiello
e2dbdcd66a
Parsing the right state attributes out of the Chromecast status
2019-02-05 10:02:27 +01:00
Fabio Manganiello
9add8890cd
Support for complete Chromecasts status
2019-02-05 09:49:50 +01:00
Fabio Manganiello
dc2a686d23
Support for casting torrents to Chromecast
2019-02-05 02:30:20 +01:00
Fabio Manganiello
3798414f22
Wait for the media file to be ready before failing
2019-02-05 00:52:14 +01:00
Fabio Manganiello
52d0ba442b
Refactored webtorrent plugin and synchronization with the player
...
The WebTorrent plugin now uses the `download -o <download_dir> -p <port>` options.
Improved interaction both with the webtorrent executable and the player
executable, and triggering the right events upon state changes, as well
as free support for torrent streaming through the webtorrent executable.
2019-02-05 00:15:36 +01:00
Fabio Manganiello
9506813dc2
Only propagate a MediaStopEvent when the awaited player actually stops
2019-02-04 09:27:12 +01:00
Fabio Manganiello
05abc86b90
Handling webtorrent instance stop from mplayer interface
2019-02-04 01:55:14 +01:00
Fabio Manganiello
286eb431f0
Refactored torrent module
2019-02-04 01:01:39 +01:00
Fabio Manganiello
a4f80d4622
Added media.webtorrent plugin
2019-02-03 17:43:30 +01:00
Fabio Manganiello
4b7730d4cf
Added status method to mplayer plugin
2019-02-02 17:55:29 +01:00
Fabio Manganiello
9ebb265458
Only copy the environment to the mplayer executable if it's set, and don't copy the whole environment from platypush
2019-02-02 17:32:56 +01:00
Fabio Manganiello
c18650c964
quit method implemented as part of the media interface
2019-02-02 17:12:22 +01:00
Fabio Manganiello
ed4b7e1da9
mplayer step_property volume doesn't really work as intended
2019-02-02 16:36:47 +01:00
Fabio Manganiello
3a5d7c7cba
MPlayer has a quite weird way of handling the volume
2019-02-02 16:28:55 +01:00
Fabio Manganiello
535c4bbc17
Added set_volume action to mplayer plugin
2019-02-02 16:11:31 +01:00
Fabio Manganiello
d0a288b423
Don't start the mplayer pipe with shell=True
2019-02-02 16:06:56 +01:00
Fabio Manganiello
7068530eb0
Strip the file:// part out of the resource name
2019-02-02 15:58:18 +01:00
Fabio Manganiello
36725f7136
typo
2019-02-02 15:54:44 +01:00
Fabio Manganiello
1713c0c940
Propagate enviornment variables to the player executable
2019-02-02 15:51:12 +01:00
Fabio Manganiello
63b423cf75
Refactored mplayer and omxplayer under the same media player
2019-02-02 00:06:28 +01:00
Fabio Manganiello
56b6e6a899
More optimized check against supported extensions
2019-01-20 10:01:07 +01:00
Fabio Manganiello
297d1114e7
Implemented generic media plugin and made MPlayer extend it (TODO: omxplayer and vlc)
2019-01-20 08:50:05 +01:00
Fabio Manganiello
d59044fa2d
Added MPlayer plugin
2019-02-01 09:34:50 +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
05a1713b92
Make sure that extra arguments on the Spotify URI are discarded during the URI parse
2019-01-30 09:08:29 +01:00
Fabio Manganiello
ee0040fba6
More robust Spotify URI parsing that discards optional arguments (e.g. si=) passed to the URL
2019-01-30 09:04:18 +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
339d1eb132
Better way to log the impacted plugin and action in case of uncaught exceptions in requests
2019-01-27 17:51:07 +01:00
Fabio Manganiello
947fc8f583
Better handling of Hue bridge first-time pairing
2019-01-27 17:26:15 +01:00
Fabio Manganiello
235ddc6c2d
More robust logging system and options to disable stdout/stderr logging capture
2019-01-27 00:53:30 +01:00
Fabio Manganiello
e1920700ec
Handle backend stop/disconnection on MQTT
2019-01-18 04:10:27 +01:00
Fabio Manganiello
1f4efbb427
Better handling for the lights blink animation for groups
2019-01-20 00:42:07 +01:00
Fabio Manganiello
d1b9fef740
Passing socket_timeout=transition_seconds attribute to _get_redis
2019-01-20 00:36:07 +01:00
Fabio Manganiello
c7decd81f2
Lazy inizialitation for the Redis object in light.hue to prevent race conditions on start/stop animation
2019-01-20 00:29:58 +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
0e6f8bbb0b
typo
2019-01-14 19:54:59 +01:00
Fabio Manganiello
ca24243449
As python-mpd2 doesn't seem to be quite thread-safe, the mpd plugin entry-point has now got a reentrant lock
2019-01-14 19:52:54 +01:00
Fabio Manganiello
d96ffe4d9f
typo
2019-01-13 23:47:35 +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
740063c23b
Clear the timeout handler from the map once the execution is terminated
2019-01-13 22:58:18 +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
e5d1dd3791
Version bump 0.9.4 -> 0.9.5
2019-01-13 20:12:12 +01:00
Fabio Manganiello
db4e68e247
Do exception logging at Request level and discard duplicate exception messages between retries
2019-01-13 20:09:25 +01:00
Fabio Manganiello
8ea0519954
Support for set/clear timeout/interval utils actions and error handling refactor
...
- Added set/cler timeout/interval actions in the utils plugin to
dynamically set or stop timed actions from your custom logic
- Actions error handling refactoring. If a Response is processed with
some errors, then just log the error and return it to the caller,
without raising an exception. If instead the action execution raised an
uncaught exception, then handle the retries properly and return errors
as a list with the output from all the retries, without being too
verbose with the returning and logging the whole stack trace multiple
times.
2019-01-13 19:29:08 +01:00
Fabio Manganiello
2a52eb770b
Renamed value variable in expand_value_from_context to _value to prevent common name clashes with attributes named 'value' in the context
2019-01-12 22:43:01 +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
bb8a21ed13
Revert "Sort Adafruit IO received data by timestamp"
...
This reverts commit 2739dda266
.
2019-01-12 02:08:04 +01:00
Fabio Manganiello
2739dda266
Sort Adafruit IO received data by timestamp
2019-01-12 02:06:38 +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
d63ad91b2a
Implemented receive_next and receive_previous wrappers in Adafruit IO and rationalized returned types
2019-01-12 01:52:39 +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
212cfb63c4
Lazy initialization of WeMo environment
2019-01-11 19:58:43 +01:00
Fabio Manganiello
33fd226fa1
Don't throw the exception if a certain Snapcast host is not reachable
2019-01-11 11:50:37 +01:00
Fabio Manganiello
29be2945cc
Log trace before attempting a Snapcast connection
2019-01-11 11:46:13 +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
a190184b0c
Using an auxiliary map to keep track of the playing hosts to prevent errors when the items are removed by the worker threads while iterating them
2019-01-10 18:14:41 +01:00
Fabio Manganiello
2c8099e7ae
Apply stream name filtering logic also to HTTP streams
2019-01-10 18:01:24 +01:00
Fabio Manganiello
f156e9c199
Refactored plugin so that errors are properly returned up the stack, client connections are lazy and re-initialized upon error
2019-01-10 17:51:33 +01:00
Fabio Manganiello
8759dafa0e
Let plugin fail if unable to retrieve the status, so it can rely on the automatic reload mechanism instead of swallowing the error
2019-01-10 17:28:49 +01:00
Fabio Manganiello
abe80db47e
Changed default for exclude_local from True to False
2019-01-10 17:25:25 +01:00
Fabio Manganiello
c619d89fa4
Added method to programmatically get the list of active Snapcast connections
2019-01-10 17:22:52 +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
544979e7ff
- Added position
argument to music.mpd.add
...
- Added RSS feed parser plugin
2019-01-09 18:43:13 +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
7c02c70663
Version bump 0.9.3 -> 0.9.4
2019-01-08 19:24:17 +01:00
Fabio Manganiello
9ba7a68578
Fixed modal height and positioning on screen
2019-01-08 19:23:06 +01:00
Fabio Manganiello
3c385a601f
Exposing backend hosts and ports as both lists and JSON on Snapcast plugin
2019-01-08 18:24:59 +01:00
Fabio Manganiello
80bd5b684c
Added support for setting/changing group streams on Snapcast
2019-01-08 17:43:20 +01:00
Fabio Manganiello
35292968ed
Made get_plugin lock reentrant
2019-01-08 16:33:57 +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
7aefe4e520
More resilient logic in case actions in a procedure return null responses
2019-01-07 00:07:45 +01:00
Fabio Manganiello
bbc3a9e82a
Fixed Snapcast status method
2019-01-06 23:46:52 +01:00
Fabio Manganiello
461362f792
mset signature now compatible both with redis-py < 3.0 and >= 3.0
2019-01-06 23:46:18 +01:00
Fabio Manganiello
efad5a2bd7
Added Snapcast backend
2019-01-06 19:19:30 +01:00
Fabio Manganiello
2fba3109b3
Wrapped sample response in codeblock
2019-01-06 12:56:30 +01:00
Fabio Manganiello
e97ce5d676
Added Snapcast plugin
2019-01-06 02:19:56 +01:00
Fabio Manganiello
cb13098c4f
Moved initial print statement inside start method to make sure that it's properly caught by the logging configuration
2019-01-03 13:09:12 +00:00
Fabio Manganiello
240abb627d
Fix old Spotify playlists URI format
2019-01-03 10:37:16 +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
5a1169d8b8
Wrapped stdout and stderr under the same application logger
2019-01-02 11:38:21 +00: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
09c1598829
More flexible management for included config files paths
2018-12-30 20:18:55 +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
699fa92c5e
Added HomeSeer plugin
2018-12-28 09:55:09 +01:00
Fabio Manganiello
f9f43964a2
Support for stream names
2018-12-28 00:30:25 +01:00
Fabio Manganiello
fae45d8ca3
Returning only the real part of the FFT
2018-12-27 22:47:44 +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
2e82651dbf
Expressed triangular wave as a function of the associated sawtooth-shape wave
2018-12-27 17:33:05 +01:00
Fabio Manganiello
debf9a017b
Sound plugin moved back to __init__ for sake of better readthedocs generation
2018-12-27 17:26:16 +01:00
Fabio Manganiello
cff4563dae
Rewritten Pushbullet backend using pushbullet.py for better stability
2018-12-27 02:29:44 +01:00
Fabio Manganiello
56ff58d06b
Better sound release logic
2018-12-27 01:10:45 +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
f2d2315610
Extended Sound class docstring
2018-12-26 23:16:37 +01:00
Fabio Manganiello
3598d7fcd5
Support for multiple sound waves (triangular, square and sawtooth)
2018-12-26 23:14:52 +01:00
Fabio Manganiello
3b681bbf57
Added played files/notes in stream in query_streams
2018-12-26 16:58:41 +01:00
Fabio Manganiello
3554968468
Support for multiple sounds on the same stream
2018-12-26 16:10:14 +01:00
Fabio Manganiello
c2544524e1
Added missing docstring line
2018-12-25 19:26:59 +01:00
Fabio Manganiello
2fb5e5abc6
Support for mixes of multiple sounds
2018-12-25 19:26:08 +01:00
Fabio Manganiello
d89184358a
Support for playback control for individual sound streams
2018-12-25 17:31:20 +01:00
Fabio Manganiello
3baf0b1589
Initial support for playing multiple sounds to the same stream
2018-12-24 18:58:44 +01:00
Fabio Manganiello
3d2636b09c
Further split between sound and core modules
2018-12-24 17:15:29 +01:00
Fabio Manganiello
65465e3a18
- Refactored the class sound out of the plugin module
...
- More robust stream naming and index assignment logic
2018-12-24 17:12:11 +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
755df6284a
Added missing reference to completed_callback_event
2018-12-23 23:43:12 +01:00
Fabio Manganiello
c2cf0b5f74
Support for polyphonic synthetic sounds in sound plugin
2018-12-23 23:29:52 +01:00
Fabio Manganiello
7a5657778e
Basic support for synth sounds in sound plugin
2018-12-22 01:47:52 +01:00
Fabio Manganiello
00dacc456c
A more robust logic for getting the default sound devices
2018-12-21 16:52:52 +01:00