Commit graph

2499 commits

Author SHA1 Message Date
Fabio Manganiello
ce42f5aada MIMEText doesn't accept the Name parameter 2020-09-05 01:25:12 +02:00
Fabio Manganiello
e9d4ed3911 Added more source fields to the RSS NewFeedEvent 2020-09-05 00:50:04 +02:00
Fabio Manganiello
2ceb3511b3 More robust websocket retry handler for Todoist 2020-09-04 22:59:23 +02:00
Fabio Manganiello
d27b23ec5a Bump version: 0.13.4 → 0.13.5 2020-09-03 17:17:47 +02:00
Fabio Manganiello
9402e4f65f Removed trailing column 2020-09-03 17:16:35 +02:00
Fabio Manganiello
a4c6028dc4 Fixed wrong code-block syntax 2020-09-03 14:32:51 +02:00
Fabio Manganiello
907bc0f75b Added rtorrent integration [closes #120] 2020-09-03 13:08:42 +02:00
Fabio Manganiello
d7806757c5 Polished mail integration 2020-09-02 01:34:18 +02:00
Fabio Manganiello
ca168828de Added events on IMAP flagged/starred messages and extended IMAP plugin with remaining methods [closes #146] 2020-09-02 00:07:08 +02:00
Fabio Manganiello
6c24783df7 Log full exceptions in case of failures in a procedure 2020-09-01 10:33:56 +02:00
Fabio Manganiello
681e9f1703 Added SMTP plugin [links to #146] 2020-09-01 01:52:22 +02:00
Fabio Manganiello
737c135996 More robust logic to pass procedures to the index.html template 2020-08-31 21:32:00 +02:00
Fabio Manganiello
edd2235cbc Removed old reference to __plugins__ in kodi.js - using inspect.get_config endpoint instead. 2020-08-31 18:31:15 +02:00
Fabio Manganiello
dc1b54961f Added inspect.get_config() method to get the configuration programmatically 2020-08-31 18:26:08 +02:00
Fabio Manganiello
3c3ee09d90 Fixed auto-generated docs indentation and code blocks 2020-08-31 17:39:42 +02:00
Fabio Manganiello
1681f80728 Added IMAP plugin and generic mail check backend [links to #146] 2020-08-31 15:33:03 +02:00
Fabio Manganiello
f1ab923bfe Option to reuse the MQTT configuration of the plugin if not provided on the backend 2020-08-27 17:39:22 +02:00
Fabio Manganiello
d7c3ad64f5 Use default MQTT settings for MQTT listeners if not provided 2020-08-27 17:16:33 +02:00
Fabio Manganiello
ca0c4e3089 Don't overwrite the client variable within the same scope 2020-08-27 16:59:35 +02:00
Fabio Manganiello
beceb39b0c Added client_id in MQTT integrations 2020-08-27 16:41:51 +02:00
Fabio Manganiello
9f1128e2c0 typo fix 2020-08-27 16:30:18 +02:00
Fabio Manganiello
e77e5bb3d8 Only expand paths if set 2020-08-27 16:29:21 +02:00
Fabio Manganiello
0d182820e8 expanduser for TLS files in MQTT listeners 2020-08-27 16:25:52 +02:00
Fabio Manganiello
f7df1d2f6e typo fix 2020-08-27 16:01:51 +02:00
Fabio Manganiello
cd8732dc8f Added tls_insecure flag to MQTT 2020-08-27 15:56:43 +02:00
Fabio Manganiello
b8917de52f TLS version in MQTT configuration parsed from string 2020-08-27 12:44:00 +02:00
Fabio Manganiello
aa631deb88 Fixed docs typo 2020-08-24 01:24:24 +02:00
Fabio Manganiello
2e6388f6f4 ReadTheDocs fixes 2020-08-24 01:14:40 +02:00
Fabio Manganiello
5d2e74eb97 LINT fixes for LCD plugins 2020-08-24 00:42:34 +02:00
Fabio Manganiello
af614480b8 Added LCD display integration (closes #145) 2020-08-23 20:00:08 +01:00
Fabio Manganiello
7a7c065754 Added missing docs 2020-08-23 00:49:51 +02:00
Fabio Manganiello
6bed284e8b Added DHT temperature/humidity sensor integration [closes #113] 2020-08-22 23:46:21 +01:00
Fabio Manganiello
289eebd6a0 Moved definition of workdir inside the constructor, otherwise readthedocs will fail for missing configuration file 2020-08-22 15:33:44 +02:00
Fabio Manganiello
43ef4bccdf LINT fixes 2020-08-22 14:31:00 +02:00
Fabio Manganiello
fa0a5805be LINT fixes 2020-08-22 14:25:31 +02:00
Fabio Manganiello
bf92d66be1 Bump version: 0.13.3 → 0.13.4 2020-08-22 14:08:14 +02:00
Fabio Manganiello
a9509fc959 Pass the repo reference to the Github event 2020-08-22 12:25:55 +02:00
Fabio Manganiello
2dc8fe9437 Added Github backend [closes #95] 2020-08-22 12:09:24 +02:00
Fabio Manganiello
a0d97c0f18 service_type and service_name are actually needed even if empty 2020-08-20 00:48:01 +02:00
Fabio Manganiello
d8f7b15111 Post ZeroconfServiceRemovedEvent also if the zeroconf_info object has already been deallocated 2020-08-20 00:40:02 +02:00
Fabio Manganiello
ddedcd647c The Zeroconf object might already be closed after unregister_service 2020-08-20 00:37:39 +02:00
Fabio Manganiello
63ad4bfdce Doc fixes 2020-08-20 00:35:06 +02:00
Fabio Manganiello
019bcbf90a Replaced values.unset in Twilio methods signature with None for JSON compatibility 2020-08-20 00:08:10 +02:00
Fabio Manganiello
403076e6ab Fixed method name 2020-08-19 23:56:23 +02:00
Fabio Manganiello
988601b10e Added Twilio integration [closes #132] 2020-08-19 23:30:26 +02:00
Fabio Manganiello
cbae8132ed Python 3.5 compatibility 2020-08-19 22:20:00 +02:00
Fabio Manganiello
5302d3143e Better reconnection logic for mopidy backend 2020-08-19 20:23:33 +02:00
Fabio Manganiello
4b86b8ef54 Fixed ndef submodules import 2020-08-17 17:16:53 +02:00
Fabio Manganiello
62e5d03931 Matching new ndef naming conventions 2020-08-17 17:10:28 +02:00
Fabio Manganiello
9c52d96c08 Bump version: 0.13.2 → 0.13.3 2020-08-16 02:01:41 +02:00
Fabio Manganiello
0659996c48 Added DBus integration [closes #141] 2020-08-16 01:57:30 +02:00
Fabio Manganiello
af2dbf899d Importing Zeroconf inside of the method to prevent Travic-CI from breaking because of module not found 2020-08-14 20:53:20 +02:00
Fabio Manganiello
20b095232d Support for extended information in zeroconf.discover_service 2020-08-14 15:52:24 +02:00
Fabio Manganiello
f35bacaae5 Bump version: 0.13.1 → 0.13.2 2020-08-14 02:02:29 +02:00
Fabio Manganiello
c057cd13fd python-zeroconf has introduced too many breaking changes - giving up. 2020-08-14 02:01:31 +02:00
Fabio Manganiello
b79fd4e25d Bump version: 0.13.0 → 0.13.1 2020-08-14 00:37:39 +02:00
Fabio Manganiello
7e8bef40cd Added Zeroconf integration [closes #105] 2020-08-14 00:36:39 +02:00
Fabio Manganiello
dc5afebd27 Bump version: 0.12.10 → 0.13.0 2020-08-12 00:59:04 +02:00
Fabio Manganiello
6b43a5e592 Added luma.oled display support 2020-08-11 14:48:14 +02:00
Fabio Manganiello
d3e52ba944 Backends should be started with daemon=True 2020-08-01 17:20:46 +02:00
Fabio Manganiello
65bac0ccc5 Fix for pychromecast.get_chromecasts new return type.
On newer versions of pychromecast get_chromecasts returns
a tuple (devices, browser_service) instead of a list. The
software should be robust enough with both older and newer
versions of pychromecast.
2020-07-25 01:35:06 +02:00
Fabio Manganiello
20e67ffc93 Bump version: 0.12.9 → 0.12.10 2020-07-20 00:20:19 +02:00
Fabio Manganiello
a6730d5252 Added generated CSS folder (prevents pyScss dependencies for binary builds) 2020-07-19 22:41:37 +02:00
Fabio Manganiello
590d416682 Google Translate API supports a maximum of 2000 characters per API call.
Therefore it's a good idea to split the input text/html.
2020-07-05 21:04:54 +02:00
Fabio Manganiello
adc94349c7 Missing commas 2020-07-04 00:31:24 +02:00
Fabio Manganiello
b716b1a0c1 More robust URL query for YouTube 2020-07-04 00:25:49 +02:00
Fabio Manganiello
93ac6c8af9 Regex format fix 2020-07-04 00:18:45 +02:00
Fabio Manganiello
03dc524f80 Fixed response type 2020-07-04 00:15:44 +02:00
Fabio Manganiello
c943acb9c2 Smarter logic for parsing YouTube URLs in Kodi 2020-07-04 00:12:16 +02:00
Fabio Manganiello
a4824a4e95 Google Cloud Translate API works through GOOGLE_APPLICATION_CREDENTIALS env variable 2020-07-02 02:24:54 +02:00
Fabio Manganiello
46515020cf Added Google Translate plugin 2020-07-02 02:07:57 +02:00
Fabio Manganiello
1e15bb5606 Changed favicon 2020-07-01 01:08:31 +02:00
Fabio Manganiello
b32232b46e Prevent a tight loop in HttpPoll if one of the requests fails 2020-07-01 00:53:23 +02:00
Fabio Manganiello
3174db5776 Always convert content to string before writing it to a file 2020-06-30 11:41:38 +02:00
Fabio Manganiello
11709641d7 Extended file plugin with more util methods 2020-06-29 23:53:11 +02:00
Fabio Manganiello
d560823887 Replaced deprecated options in PiCamera module 2020-06-27 13:55:18 +02:00
Fabio Manganiello
96716dc872 Support for pre-fetched HTML/Markdown content.
HTML output can be too large for the process called over the command
line. HTML data exchange now happens through an intermediate temporary
file.
2020-06-25 01:37:59 +02:00
Fabio Manganiello
f50ad767e0 Support for more arguments passed to the Mercury parser 2020-06-23 01:54:35 +02:00
Fabio Manganiello
a1c20a52da Defined get_procedures() method on inspect plugin 2020-06-17 22:31:07 +02:00
Fabio Manganiello
fb58c89911 More robust node_to_dict code in case of race conditions where some of the attributes required to generate id_on_network are not available 2020-06-11 14:50:41 +02:00
Fabio Manganiello
a18002dea0 The command class of a Z-Wave value can also be null: prevent the plugin from breaking in such case 2020-06-09 16:14:02 +02:00
Fabio Manganiello
9d6375f381 More robust logic in case of Tplink device not available 2020-06-08 19:43:08 +02:00
Fabio Manganiello
526bca847b Bump version: 0.12.8 → 0.12.9 2020-06-08 00:38:04 +02:00
Fabio Manganiello
0ced46058a Always set check_same_thread=False in case of SQLite engines.
Platypush is heavily multi-threaded, and it can happen that some
transactions are handled in different threads - and consistency
is managed by the application itself.
2020-06-08 00:27:41 +02:00
Fabio Manganiello
6ba92e7fdd Added missing doc line 2020-05-23 23:12:45 +02:00
Fabio Manganiello
82a9aa1232 Added clipboard backend 2020-05-23 23:11:42 +02:00
Fabio Manganiello
b5f0e2b4df Bump version: 0.12.7 → 0.12.8 2020-05-23 21:39:26 +02:00
Fabio Manganiello
3cdd9e8474 Added SSH plugin [closes #136] 2020-05-23 21:38:22 +02:00
Fabio Manganiello
f20cb4df5b No need to override background-color in main for dashboard 2020-05-23 12:26:45 +02:00
Fabio Manganiello
97343e97de background-image for dashboard CSS 2020-05-23 12:22:56 +02:00
Fabio Manganiello
1b47615100 More robust attribute checking before conversion, as the object can actually be either a ZWaveNode or a ZWaveController 2020-05-22 12:08:17 +02:00
Fabio Manganiello
98ced4b4e4 Don't push a ZwaveNetworkStoppedEvent directly to the event_queue - the object type is incompatible 2020-05-22 11:54:19 +02:00
Fabio Manganiello
d6b509e98a Replaced fullscreen auto logic with button toggle 2020-05-20 16:15:08 +02:00
Fabio Manganiello
82162c3c5e Apply fullscreen to document.documentElement instead of getting the body 2020-05-20 15:58:28 +02:00
Fabio Manganiello
7e0a91d839 Portable implementation of fullscreen JS methods 2020-05-20 15:47:17 +02:00
Fabio Manganiello
e44dfbc169 Added fullscreen support in webpanel and dashboard 2020-05-20 15:29:49 +02:00
Fabio Manganiello
d595688d55 Use the /total/country/<cc> endpoint instead of /total/dayone/country/<cc> 2020-05-17 16:52:37 +02:00
Fabio Manganiello
0c10825d2e Bump version: 0.12.6 → 0.12.7 2020-05-17 12:56:36 +02:00
Fabio Manganiello
51f99026ac The network object isn't always available on a ZWave event 2020-05-17 12:56:01 +02:00
Fabio Manganiello
aa66b81b7b Fixed webhook event management 2020-05-09 01:47:12 +02:00
Fabio Manganiello
80d5a6ad19 Support for multiple torrent sessions 2020-05-07 23:34:56 +02:00
Fabio Manganiello
26f6feebb7 Implemented retry+sleep mechanism in Switchbot plugin in case of errors
This should prevent race conditions in case of command timeout+quick
disconnection and retry that can result in race conditions and double
free corruptions.
2020-05-06 00:25:19 +02:00
Fabio Manganiello
99fee9ce20 Parse countries from the official country list 2020-05-04 13:15:17 +00:00
Fabio Manganiello
07299e49e7 Bump version: 0.12.5 → 0.12.6 2020-05-03 18:10:25 +02:00
Fabio Manganiello
d0ccd65214 Added Samsung smart TV web plugin 2020-05-03 17:21:16 +02:00
Fabio Manganiello
2f57ccf412 Added Samsung smart TV plugin 2020-05-03 00:57:13 +02:00
Fabio Manganiello
1cf93199d0 Adaptive dashboard widget height 2020-05-01 15:03:13 +02:00
Fabio Manganiello
1d24c878e6 Use both country and country_code on the event 2020-05-01 00:03:55 +02:00
Fabio Manganiello
a387b84623 Don't swallow the exception if something goes wrong in a Python hook 2020-04-30 23:55:28 +02:00
Fabio Manganiello
9d0f43707a Support for list of countries 2020-04-30 22:45:04 +02:00
Fabio Manganiello
77e302cd4b Using session.merge instead of session.add to handle insert/update logic 2020-04-30 00:59:33 +02:00
Fabio Manganiello
3bb4c4434c Added Covid-19 country stats plugin and backend/monitor 2020-04-30 00:44:34 +02:00
Fabio Manganiello
3c209a800b New popcorn time API URLs 2020-04-28 13:49:31 +02:00
Fabio Manganiello
42d29ca1f6 LINT fixes 2020-04-23 18:33:57 +02:00
Fabio Manganiello
8440320031 Don't swallow the stack trace in backend.http.request if a request fails 2020-04-22 23:46:05 +00:00
Fabio Manganiello
01ce9284a1 Bump version: 0.12.4 → 0.12.5 2020-04-12 22:56:33 +02:00
Fabio Manganiello
f7d644c32d get_procedures() can now return Python function objects as well.
This means that the JSON encoder must act accordingly and parse
the function object into an encodable string.
2020-04-12 22:56:12 +02:00
Fabio Manganiello
124269776d Support for procedure imports from scripts base module 2020-04-10 20:59:32 +02:00
Fabio Manganiello
25ea0ea77c Included scripts_dir parent dir on sys.path so scripts can import members through the "scripts" package 2020-04-10 00:40:46 +02:00
Fabio Manganiello
0cd28f7499 If the response contains errors in run() then raise a RuntimeError, otherwise return the output instead of the Response object 2020-04-10 00:06:36 +02:00
Fabio Manganiello
7b79e4b669 Support for multiple positional arguments on utils.run() 2020-04-09 23:50:08 +02:00
Fabio Manganiello
ca718d0748 Bump version: 0.12.3 → 0.12.4 2020-04-09 00:15:08 +02:00
Fabio Manganiello
d46385687f Support for event filter on functional hook 2020-04-09 00:09:36 +02:00
Fabio Manganiello
0dae03551f Implemented interface for custom Python scripts, procedures and hooks [closes #131] 2020-04-08 23:22:54 +02:00
Fabio Manganiello
b490344632 Fixed missing static_folder issue on settings page and JS document race condition 2020-03-29 13:47:22 +02:00
Fabio Manganiello
13c25f94d5 Better fix for the calendar widget font size 2020-03-24 17:23:48 +01:00
Fabio Manganiello
9e32f1fb42 Tweaked font-size for upcoming event and other events in calendar widget 2020-03-24 17:14:13 +01:00
Fabio Manganiello
a388e8dd83 Reduced font-size for calendar events to prevent overflow on smaller screens 2020-03-24 17:06:14 +01:00
Fabio Manganiello
03968928e7 Don't do QRcode plugin base imports, or the web app may fail if the dependencies are not installed 2020-03-24 10:29:22 +01:00
Fabio Manganiello
7ce5efaf2e Removed numpy and PIL top-level imports that could break the HTTP server if not installed on the system 2020-03-24 10:25:25 +01:00
Fabio Manganiello
4ece49bfe7 Added missing string format parameter 2020-03-24 09:11:07 +01:00
Fabio Manganiello
7af8fb581b A more robust logic to check whether the first dimension of the input tensor is None 2020-03-23 23:54:18 +01:00
Fabio Manganiello
30a5f7b297 Fixed docs typo 2020-03-23 01:25:35 +01:00
Fabio Manganiello
41ccf3e5dc Bump version: 0.12.2 → 0.12.3 2020-03-23 01:19:49 +01:00
Fabio Manganiello
0f099158cc Bump version: 0.12.1 → 0.12.2 2020-03-23 01:15:54 +01:00
Fabio Manganiello
375a8376dc Don't use Config.get on __init__, or docs build will fail because of missing config.yaml 2020-03-23 01:14:44 +01:00
Fabio Manganiello
f4dcf688f0 Set default values for metrics for regression and networks 2020-03-23 01:10:59 +01:00
Fabio Manganiello
50e372be36 Implemented extensive support for neural networks, images and directories [closes #121] 2020-03-23 01:00:25 +01:00
Fabio Manganiello
1f1fefca9d Tensorflow plugin implementation WIP [#121]
TODO: Extend neural network implementation to work
also with e.g. input from images, sounds or binary
2020-03-21 19:50:59 +01:00
Fabio Manganiello
d938017bf8 Added support for extra mplayer arguments for TTS plugins 2020-03-16 18:40:17 +01:00
Fabio Manganiello
f2b3000922 Handle numpy types in the JSON message encoder 2020-03-14 18:35:45 +01:00
Fabio Manganiello
e7084b5d6f Added CSV plugin 2020-03-13 01:29:43 +01:00
Fabio Manganiello
a130edb74f Made QR-code scan work also on picamera 2020-03-11 01:06:07 +01:00
Fabio Manganiello
2992d5f726 List of dependencies for qrcode plugin should also include numpy 2020-03-10 22:50:33 +01:00
Fabio Manganiello
141275ecdf Support for scanning QR-codes and barcodes through a camera plugin 2020-03-10 22:35:50 +01:00
Fabio Manganiello
c9db887505 Added QR code/barcode integration [closes #119] 2020-03-10 00:07:21 +01:00
Fabio Manganiello
c26d456109 Added Linode integration [closes #116] 2020-03-09 21:34:06 +01:00
Fabio Manganiello
096f84c865 Added OTP integration [closes #118] 2020-03-09 01:11:23 +01:00
Fabio Manganiello
fc7982378a The bluetooth BLE plugin must also implement get_measurement to work with the scanner backend 2020-03-08 23:50:23 +01:00
Fabio Manganiello
59e3f81202 Added bluetooth scanner backends [closes #112] 2020-03-08 23:37:57 +01:00
Fabio Manganiello
535b2ec083 Changed mpd filter to dict on the frontend as well 2020-03-08 13:07:35 +01:00
Fabio Manganiello
42c5bbe0e4 Fixed LINT warnings and changed MPD filter format (from list to dict) 2020-03-08 13:04:00 +01:00
Fabio Manganiello
ed02505dce Bump version: 0.12.0 → 0.12.1 2020-03-07 20:37:41 +01:00
Fabio Manganiello
642d5117a1 Added note about the license for PicoVoice Cheetah 2020-03-07 20:28:42 +01:00
Fabio Manganiello
ce0f3227ec Implemented PicoVoice speech-to-text integration [closes #130] 2020-03-07 20:21:32 +01:00
Fabio Manganiello
a5c08ed3e4 Added PicoVoice plugin with support for hotwords [see #130] 2020-03-07 02:00:35 +01:00
Fabio Manganiello
e04c6fb921 Extracted common logic for speech-to-text integrations into abstract STT plugin 2020-03-06 23:11:19 +01:00
Fabio Manganiello
7ed847b646 Removed __future__ annotations (it breaks readthedocs build) 2020-03-06 00:53:24 +01:00
Fabio Manganiello
b0339754b2 Implemented Mozilla DeepSpeech speech-to-text integration [closes #126] 2020-03-06 00:38:24 +01:00
Fabio Manganiello
fc949ed9f1 Skip base Response type 2020-03-05 23:19:26 +01:00
Fabio Manganiello
27f847eac6 Support for is_muted/toggle_muted on Google assistant 2020-03-05 18:13:44 +01:00
Fabio Manganiello
124d2e356d Support for mic muted/unmuted event in Google assistant 2020-03-05 18:03:05 +01:00
Fabio Manganiello
e66c02f3de Added documentation for response objects as well 2020-03-05 17:41:26 +01:00
Fabio Manganiello
5504048c22 Don't iterate on data if data is None 2020-02-26 11:33:50 +01:00
Fabio Manganiello
6e93c03438 Set success=True when we're able to retrieve data from the sensor 2020-02-26 11:27:34 +01:00
Fabio Manganiello
cb0dd900ab Don't overwrite the original byte read from serial 2020-02-26 11:22:52 +01:00
Fabio Manganiello
a9cb834499 Be more robust in case we receive non-Unicode characters on the serial port 2020-02-26 11:19:59 +01:00
Fabio Manganiello
52a13f0511 Implemented retry mechanism in sensor backend 2020-02-26 11:12:46 +01:00
Fabio Manganiello
76800e00b1 Use the right handlers for Zigbee network online/offline events 2020-02-25 18:38:44 +01:00
Fabio Manganiello
f74c44c7fb There can be many Zigbee property set events; don't trigger a full refresh on all of them and only update the impacted devices instead 2020-02-25 18:13:11 +01:00
Fabio Manganiello
87a51b391c Support for custom TTS engine for rendering assistant response (see #86) 2020-02-24 20:23:22 +01:00
Fabio Manganiello
40a29a8214 fire_event could also be called by an external web server or service with no access to the bus. Therefore don't fail hard if the bus is not available 2020-02-24 17:17:36 +01:00
Fabio Manganiello
ce66e0c855 Bump version: 0.11.5 → 0.12.0 2020-02-23 23:33:32 +01:00
Fabio Manganiello
fb17aafe53 Support for custom audio volume for alarms 2020-02-23 23:09:40 +01:00
Fabio Manganiello
2d3c61173d Added Zigbee web panel (closes #123) 2020-02-23 22:54:50 +01:00
Fabio Manganiello
0643b7fade Support for intervals in seconds on alarm add/set 2020-02-22 16:18:56 +01:00
Fabio Manganiello
f8f3d2e310 Show default node number instead of empty string if name is not set 2020-02-22 01:10:36 +01:00
Fabio Manganiello
424077fdbc Completed ZWave web panel (see #123) 2020-02-22 01:00:52 +01:00
Fabio Manganiello
a9dbda455f Support for default media player volume 2020-02-21 18:40:46 +01:00
Fabio Manganiello
70fe2459de _event_callbacks is a protected attribute of mpv.MPV 2020-02-21 18:29:40 +01:00
Fabio Manganiello
9ee81d7999 Removed header from documentation - pydoc can't handle headers in methods 2020-02-21 18:20:38 +01:00
Fabio Manganiello
98727c4f31 Added support for values in Z-Wave web panel (see #123) 2020-02-20 02:34:35 +01:00
Fabio Manganiello
a0ceb560b4 Implemented alarm/timer plugin (closes #111) 2020-02-17 19:37:22 +01:00
Fabio Manganiello
8248b5353f Added status action to MediaPlugin interface 2020-02-17 18:12:40 +01:00
Fabio Manganiello
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
b83f6539a5 Removed old config example 2020-02-16 01:52:31 +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
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
Fabio Manganiello
e2f7213697 Don't fail hard if it was not possible to get the ical content 2018-12-20 16:47:07 +01:00
Fabio Manganiello
b3ffb29726 Don't extend calendar events will null values 2018-12-20 16:40:14 +01:00
Fabio Manganiello
8d497b0be7 Fixed reference to libtorrent dependency as the pip URL is broken 2018-12-20 01:04:50 +01:00
Fabio Manganiello
a1f640ce0a Added support for config include files to Docker images too 2018-12-20 01:04:28 +01:00
Fabio Manganiello
725b3dd672 Included reference to the included files in Config 2018-12-19 23:39:41 +01:00
Fabio Manganiello
eec20ee109 Missed cast to str upon pidfile write 2018-12-19 21:24:39 +01:00
Fabio Manganiello
fb75dc323e Added pidfile option to the main 2018-12-19 21:15:06 +01:00
Fabio Manganiello
44d24b42d1 Force python3 on the Dockerfile CMD 2018-12-18 22:31:24 +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
6a9ddb9e53 Made config relative paths and include files expansion more robust 2018-12-19 09:19:58 +01:00
Fabio Manganiello
949d9cd619 Fixed platydock rm command 2018-12-19 02:22:10 +01:00
Fabio Manganiello
01f020c203 Version bump 0.9.2 -> 0.9.3 2018-12-19 02:08:57 +01:00
Fabio Manganiello
73d7441d26 Added platydock, a helper to manage Platypush instances as Docker containers 2018-12-19 02:08:13 +01:00
Fabio Manganiello
a226aad669 Added python-dateutil requirement 2018-12-19 00:09:21 +01:00
Fabio Manganiello
f9b23afbb6 Fixed typo on main.db 2018-12-18 22:20:33 +01:00
Fabio Manganiello
56b48a81b7 Reverted the new config file path expansion logic as it breaks include directives 2018-12-18 22:16:15 +01:00
Fabio Manganiello
12557702dd - cfgfile should expand the home directory ~
- Don't fail hard if failed to create logs directory
2018-12-18 18:46:07 +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
8fe4d77e3d Made requests parsing more robust against messages with target not set (e.g. messages received over HTTP API) 2018-12-18 14:59:10 +01:00
Fabio Manganiello
13463420d9 Made Redis bus/local bus choice more flexible 2018-12-18 12:21:55 +01:00
Fabio Manganiello
7586412ded Serial plugin extended with a general purpose read() method - to communicate for e.g. Espruino and compatible devices 2018-12-16 23:14:34 +01:00
Fabio Manganiello
28223cab30 Only import sounddevice when needed 2018-12-16 17:29:45 +01:00
Fabio Manganiello
abd88d0a71 recplay default blocksize should be the configured/default output blocksize 2018-12-16 17:23:26 +01:00
Fabio Manganiello
c054d04f2d Added configurable input and output device blocksize to sound device plugin 2018-12-16 17:11:05 +01:00
Fabio Manganiello
e049d5483e Added blocksize to sound.record 2018-12-16 16:58:33 +01:00
Fabio Manganiello
be43c3ac21 Changed default sound device to index 0 as 'default' is not present on all the systems 2018-12-16 16:34:40 +01:00
Fabio Manganiello
20a779bd8f Replaced if not references with if <var> is not None 2018-12-16 16:24:45 +01:00
Fabio Manganiello
f7576dcb7f Added support for audio pass-through to sound plugin 2018-12-16 16:15:45 +01:00
Fabio Manganiello
be98dcde6a Added sound device plugin 2018-12-15 01:18:48 +01:00
BlackLight
e89046f12a Added max_results to YouTube search 2018-12-12 23:03:17 +01:00
BlackLight
9b0a72269a typo 2018-12-12 22:52:51 +01:00
BlackLight
b7603ba166 Mapping YouTube API responses to the internal simpler format recognized by OMXPlayer plugin 2018-12-12 22:46:32 +01:00
BlackLight
679cad53b5 Added YouTube plugin that leverages the YouTube API; Replaced OMXPlayer search references to the old HTML parser withe new YouTube plugin 2018-12-12 22:33:41 +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
791c36f5df More tolerance on json.loads() in case the parsed value from the request context is not a string 2018-12-03 23:04:23 +01:00
Fabio Manganiello
4a148971b4 Allow non-string values to be passed through a request context as well 2018-12-03 22:52:25 +01: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
f6dcd00848 Version bump 0.9.1 -> 0.9.2 2018-12-01 19:44:41 +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
abbd8409ca Run event hook actions in another thread 2018-11-28 01:01:16 +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
c2be1cf6e8 Enforced cast to string for any object posted to the Redis bus 2018-11-20 14:18:58 +00:00
Fabio Manganiello
68dcdf8ccd Enforced cast to string for any object posted to the Redis bus 2018-11-20 14:14:59 +00:00
Fabio Manganiello
bb966f123f Added back and forward methods to Chromecast plugin 2018-11-13 23:23:14 +01:00
Fabio Manganiello
025309cae8 Fixed Chromecast media_controller methods 2018-11-13 23:17:51 +01:00
Fabio Manganiello
632da318b1 Expanded Chromecast plugin 2018-11-13 23:09:19 +01:00
Fabio Manganiello
6fcc3a2397 Support for YouTube media in Chromecast plugin 2018-11-13 20:20:55 +01:00
Fabio Manganiello
26f3842724 Added support for Plex to Chromecast 2018-11-13 01:29:24 +01:00
Fabio Manganiello
42053dcf3b Expanded Plex plugin 2018-11-12 23:23:21 +01:00
Fabio Manganiello
1459630661 Added Plex and Chromecast plugins 2018-11-12 16:50:20 +01:00
Fabio Manganiello
9a88f85cda Expanded config example 2018-11-11 12:17:14 +01: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
fc3f53f32b Retry logic for getting mpd status 2018-11-07 18:04:37 +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
cbfcb76c21 volup/voldown fix for mpd plugin 2018-11-04 01:35:33 +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
e2ff62f15d Refactored file plugin 2018-11-02 13:57:24 +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
bf52304758 Fixed ReadTheDocs 2018-11-01 19:42:43 +01:00
Fabio Manganiello
6bc976cf89 Fixed SSL support in websocket implementation 2018-11-01 17:28:54 +00:00
Fabio Manganiello
484d282a26 Updated wiki 2018-10-28 23:48:26 +01: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
4e0e4863a0 Don't modify Redis args directly when initializing the object in another plugin 2018-10-25 20:14:50 +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
0a7722d858 Wrap self.on_message in a try/except block 2018-10-23 14:20:29 +00:00
Fabio Manganiello
4c2302a534 Removed title from logging trace in RSS backend 2018-10-23 00:23:47 +02:00
Fabio Manganiello
276ee8fee9 Round download progress to two decimals 2018-10-22 19:14:41 +02:00
Fabio Manganiello
76b40c0c37 Managing torrent stop and remove as well 2018-10-22 19:12:06 +02:00
Fabio Manganiello
ab51c1d1bc Extended torrents plugin 2018-10-22 18:51:00 +02:00
Fabio Manganiello
7375fb74fc OMXPlayer to delegate torrent search and download to the torrent plugin 2018-10-22 18:26:11 +02:00
Fabio Manganiello
ce6baa453c Keeping track of multiple downloads in torrent plugin 2018-10-22 15:24:09 +00:00
Fabio Manganiello
9974583038 Added torrent plugin 2018-10-22 14:52:32 +00:00
Fabio Manganiello
4d592fff17 Support for multiple devices in AutoRemote plugin 2018-10-22 09:36:30 +00: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
db4330eeed Support for (output, errors) as a tuple returned from plugin actions 2018-10-20 18:07:00 +02:00
Fabio Manganiello
2dac094aea player_id should be optional in media.kodi.stop 2018-10-20 18:00:53 +02:00
Fabio Manganiello
fc7fa37010 ignore_errors parameter supported in shell plugin 2018-10-20 17:56:36 +02:00
Fabio Manganiello
4fce1dd2e1 More features on the Kodi plugin 2018-10-20 17:17:29 +02:00
Fabio Manganiello
5b5fdd0933 Kodi player plugin improved 2018-10-20 16:59:47 +02:00
Fabio Manganiello
e16b444b0b player_id selection implemented in Kodi 2018-10-20 16:40:12 +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
4f3c7f715f Expanded Kodi actions 2018-10-18 16:24:22 +02:00
Fabio Manganiello
b6a4432528 Added Kodi plugin 2018-10-18 16:14:39 +02:00
Fabio Manganiello
3458fb8a23 Added append action to file plugin 2018-10-17 09:02:22 +02:00
Fabio Manganiello
2eccd41420 Message skip message logged in debug mode to prevent log pollution 2018-10-16 10:26:15 +02:00
Fabio Manganiello
4d3d8ddd34 File utils moved to new file plugin 2018-10-16 09:01:22 +02:00
Fabio Manganiello
b14bb44c10 Added utils actions to handle files 2018-10-16 08:49:55 +02:00
Fabio Manganiello
475f6d3f6f Version bump 0.9 -> 0.9.1 2018-10-15 22:12:30 +02:00