Commit graph

539 commits

Author SHA1 Message Date
Fabio Manganiello
a6339de159 Assigning plugins[plugin_name] inside of the synchronized block 2018-08-22 02:32:53 +02:00
Fabio Manganiello
4c6b38a6e2 Double lock check to make get_plugin thread-safe 2018-08-22 02:11:51 +02:00
Fabio Manganiello
105d5bb2fc Lock to prevent race conditions where multiple initializations of a plugin can occur 2018-08-22 02:04:16 +02:00
Fabio Manganiello
e5d67c9393 Being more robust against multiple concurrent plugin initializations with a lock 2018-08-21 09:11:01 +02:00
Fabio Manganiello
09d7d98ae3 Retry logic for Mercury API 2018-08-19 21:52:01 +00:00
Fabio Manganiello
d2bd49b364 Sync changes on playback volume or state with events and web UI 2018-08-18 01:11:14 +02:00
Fabio Manganiello
fc1e15504d Implemented Hue lights toggle command 2018-08-16 19:24:20 +02:00
Fabio Manganiello
f2d077354c Typo fix 2018-08-16 01:26:10 +02:00
Fabio Manganiello
0e2ead6826 Default to configured lights if no lights/groups args are passed to Hue delta actions 2018-08-16 01:23:22 +02:00
Fabio Manganiello
a41e804ff9 Implemented delta_bri, delta_sat and delta_hue methods to change light
properties by deltas (from -100% to +100%)
2018-08-16 01:13:43 +02:00
Fabio Manganiello
822e0a1e25 Better fix for broken async variables and attributes after Python 3.7 migration 2018-08-07 22:00:11 +00:00
Fabio Manganiello
ee5e4dff92 Revert "In Python 3.7 async is a strict language keyword that can't be used for variables names - replaces occurrences with _async"
This reverts commit f0577733b6.
2018-08-07 21:52:07 +00:00
Fabio Manganiello
b023618950 Revert "In Python 3.7 async is a strict language keyword that can't be used for variables names - replaces occurrences with _async"
This reverts commit e625861edf.
2018-08-07 21:52:02 +00:00
Fabio Manganiello
f0577733b6 In Python 3.7 async is a strict language keyword that can't be used for variables names - replaces occurrences with _async 2018-08-07 21:28:06 +00:00
Fabio Manganiello
e625861edf In Python 3.7 async is a strict language keyword that can't be used for variables names - replaces occurrences with _async 2018-08-07 21:26:57 +00:00
Fabio Manganiello
bbdf11b9ce Added shuffle method to music.mpd 2018-08-06 22:44:02 +02:00
Fabio Manganiello
ec38ecbaf3 More pylint fixes 2018-07-30 23:18:01 +02:00
Fabio Manganiello
81803a364d Fixed some pylint warnings 2018-07-30 22:08:06 +02:00
Fabio Manganiello
a0ac30e9b6 Version bump 0.8 -> 0.9 2018-07-29 14:35:52 +02:00
Fabio Manganiello
6ebab5de25 Animation thread wrapped in a try-except to prevent the thread from exiting in case of temporary errors 2018-07-28 14:05:19 +02:00
Fabio Manganiello
61e211ee07 Added Kafka plugin 2018-07-28 01:55:19 +02:00
Fabio Manganiello
d0fea0c9c6 All the arguments to send_location_data are actually required 2018-07-25 12:34:16 +00:00
Fabio Manganiello
e4fce17b7b Added elevation parameter to the Adafruit send_location_data method 2018-07-25 12:31:50 +00:00
Fabio Manganiello
8846af6a94 Added send_location_data method to Adafruit IO plugin 2018-07-25 12:08:49 +00:00
Fabio Manganiello
0dafa16958 Added get_elevation_from_latlng method to Google Maps plugin 2018-07-25 12:01:27 +00:00
Fabio Manganiello
423fc492cf Guard the start of the data throttler thread with a lock to prevent multiple launches 2018-07-25 03:04:00 +02:00
Fabio Manganiello
cd52128e44 Reverted batch instead of mean value 2018-07-25 02:30:58 +02:00
Fabio Manganiello
5d8cc403dc Handling Adafruit throttling exceptions with a sleep before retrying 2018-07-25 02:26:11 +02:00
Fabio Manganiello
b777bbcfa8 Reset the timer as soon as you start processing the batch 2018-07-25 02:21:38 +02:00
Fabio Manganiello
6dc86635a4 Send the whole batch of values in the throttler thread instead of getting the mean 2018-07-25 02:18:20 +02:00
Fabio Manganiello
db98e6e05a Added throttle support to Adafruit IO plugin 2018-07-25 01:53:56 +02:00
Fabio Manganiello
3ab77e32f4 Doc fixes 2018-07-24 15:01:01 +00:00
Fabio Manganiello
79834a43a5 Added __init__.py for Adafruit folder 2018-07-24 09:17:09 +02:00
Fabio Manganiello
826e0c7204 Added Adafruit IO plugin 2018-07-24 09:06:05 +02:00
Fabio Manganiello
d95b07f09b Added plugin to manage system clipboard 2018-07-24 00:35:28 +02:00
Fabio Manganiello
32838efa36 Added IFTTT plugin 2018-07-23 02:49:53 +02:00
Fabio Manganiello
1ec0bd40d9 Updated docstrings 2018-07-23 02:11:16 +02:00
Fabio Manganiello
3775327aea Updated variable plugin documentation 2018-07-20 19:19:59 +02:00
Fabio Manganiello
26a57c9d6f Preventing inconsistent reads from the serial port by making sure that only one reader can read at the time 2018-07-20 15:54:31 +02:00
Fabio Manganiello
0b4cfec8e7 More robust HTTP backend in case Redis wasn't configured 2018-07-20 11:13:49 +02:00
Fabio Manganiello
bc895dd984 If the http.request plugin gets a proper JSON message as a response, then extract the Platypush message out of the original response 2018-07-19 20:07:15 +02:00
Fabio Manganiello
72543c26a9 Added logger plugin 2018-07-19 00:03:19 +02:00
Fabio Manganiello
6508ef29a1 Don't overwrite the output variable 2018-07-18 20:23:15 +02:00
Fabio Manganiello
c4d3e6b467 Graceful sleep between failed serial read attempts 2018-07-17 23:51:30 +02:00
Fabio Manganiello
5bc7319933 Optimized serial plugin 2018-07-17 23:47:13 +02:00
Fabio Manganiello
95d86829aa Plugin action decorators can now be inherited from parent classes 2018-07-17 01:23:12 +02:00
Fabio Manganiello
35c5e2d8f7 Serial plugin now extends the general sensor plugin class 2018-07-17 00:59:02 +02:00
Fabio Manganiello
86754534ae Fixed omxplayer plugin doc 2018-07-16 23:17:00 +02:00
Fabio Manganiello
72d490456f Fixed docstring 2018-07-16 22:58:56 +02:00
Fabio Manganiello
2888cb3a4b Propagate the docstring of the wrapped function when using an @action annotation 2018-07-16 22:56:07 +02:00
Fabio Manganiello
b9c77b15f8 Fixed docstring 2018-07-16 22:12:02 +02:00
Fabio Manganiello
cba40744fb No need to commit without opening a transaction first 2018-07-15 20:33:09 +02:00
Fabio Manganiello
2fda066e39 - Support for Platypush main configuration db, where plugins and backends can store their data
- Support for permanent cross-process storage of session variables through SQLite db
- Support for db.select with table+filter instead of raw SQL query
2018-07-15 20:12:23 +02:00
Fabio Manganiello
7114d8bcaa Implemented update and delete method for the db plugin and ON DUPLICATE UPDATE logic for insert 2018-07-15 19:31:11 +02:00
Fabio Manganiello
42fa8360f3 Only propagate the values above/below threshold in case of a sensor threshold crossing, excluding the sensors that haven't crossed the threshold 2018-07-15 17:28:17 +02:00
Fabio Manganiello
b3e3621c5a Removed unneeded imports 2018-07-15 17:28:17 +02:00
Fabio Manganiello
67ebe10c60 typo 2018-07-15 02:57:12 +02:00
Fabio Manganiello
a2898f63c3 - Unwrap the response in the decorator if we got a Response object from the decorated plugin
- No need for @action wrappers around omxplayer event handlers
2018-07-15 02:03:24 +02:00
Fabio Manganiello
b94ec36d0f Added documentation to events 2018-07-09 22:38:08 +02:00
Fabio Manganiello
0288f7ee1b Propagate the token in procedures and event hooks to make sure that the inner requests can be executed 2018-07-09 14:51:20 +00:00
Fabio Manganiello
c81534875a Get Redis object on each interaction in case the backend wasn't ready before 2018-07-08 22:12:30 +02:00
Fabio Manganiello
e1ead3c25f s/_token/token/ 2018-07-08 22:00:28 +02:00
Fabio Manganiello
2647bd3881 Implemented token verification over HTTP calls.
The token can be provided either:

* GET parameter (``?token=abc``)
* JSON payload request (``{..your_request.., "_token":"abc"})
* HTTP header (``X-Token: abc``)
* Basic HTTP auth (any username works, password: token)
2018-07-08 21:36:58 +02:00
Fabio Manganiello
4ebdda80f9 More robust support for Redis configuration in web socket server 2018-07-08 12:24:33 +02:00
Fabio Manganiello
b443df7947 Parametrized the HTTP backend Redis object by using the same configuration used on the Redis backend 2018-07-08 12:13:43 +02:00
Fabio Manganiello
88d9f9d3ac Stability fixes 2018-07-06 03:38:14 +02:00
Fabio Manganiello
85cdd8e5af Removed old Response reference 2018-07-06 03:35:47 +02:00
Fabio Manganiello
6cf0f39a03 Added call to parent constructor in db plugin 2018-07-06 03:03:09 +02:00
Fabio Manganiello
cfda6e019c Don't wrap events in a Response object twice 2018-07-06 02:55:36 +02:00
Fabio Manganiello
b8665b7fbb Added another @action decorator 2018-07-06 02:41:43 +02:00
Fabio Manganiello
c0b1b70e4e Added call to parent constructor in the remaining plugins 2018-07-06 02:37:47 +02:00
Fabio Manganiello
eb229a6fbe Added call to parent constructor in media.ctrl 2018-07-06 02:37:47 +02:00
Fabio Manganiello
d0e7b96ed4 Fixed missed self on some of the new constructors 2018-07-06 02:34:12 +02:00
Fabio Manganiello
a4c7b06e4c Forgot an @action annotation 2018-07-06 02:27:44 +02:00
Fabio Manganiello
b5fb6ecf93 Added call to parent constructor in lastfm plugin 2018-07-06 02:21:38 +02:00
Fabio Manganiello
66d78c8615 [#61] Plugins actions refactoring
- Using `@action` annotation to indicate methods that are allowed to be
executed as actions

- The output and errors of an action are automatically wrapped into a
`Response` object without any response build required on the plugin side
2018-07-06 02:08:38 +02:00
Fabio Manganiello
81a81312e3 Basic support for token authentication on request level 2018-07-05 09:15:53 +02:00
Fabio Manganiello
7ad0724f0e while True loop for recording 2018-07-01 19:35:23 +02:00
Fabio Manganiello
6ba71b52e7 Improved camera.pi logic 2018-06-29 11:25:18 +02:00
Fabio Manganiello
57baa0c64a Try to decode the message event if it's not a Platypush message 2018-06-29 11:09:28 +02:00
Fabio Manganiello
3872276234 Better way to handle plugins->backends communication through Redis 2018-06-29 10:21:19 +02:00
Fabio Manganiello
f3bdeaf418 Fixed Spotify URIs conversion 2018-06-27 08:56:25 +02:00
Fabio Manganiello
b55c070e46 Fixed missed dependencies for RTD build 2018-06-26 23:19:35 +02:00
Fabio Manganiello
4163a414bf Caching switch.tplink devices and supporting lookup by alias 2018-06-26 22:59:33 +02:00
Fabio Manganiello
65f9610cce Added switch.tplink web widget 2018-06-26 22:14:11 +02:00
Fabio Manganiello
0f3895ad41 Added plugin to control a TP-Link HS100 and similar smart plugs/switches 2018-06-26 19:10:53 +02:00
Fabio Manganiello
94ffaf2099 Commented out optional requirements that break RTD build 2018-06-26 01:06:23 +02:00
Fabio Manganiello
e6fdcaa068 Make sure that the Redis thread gets the stop event propagated when the application terminates 2018-06-26 00:57:26 +02:00
Fabio Manganiello
8e16f31603 fixed regex 2018-06-26 00:46:13 +02:00
Fabio Manganiello
7398107570 Completed documentation for backends 2018-06-26 00:36:01 +02:00
Fabio Manganiello
8a0ca64e4d Merge branch 'master' into docs 2018-06-26 00:17:28 +02:00
Fabio Manganiello
28862d743d Adding backends documentation 2018-06-26 00:16:39 +02:00
Fabio Manganiello
0939cdedf8 Added utility to scan for messages on the ZeroBorg infrared sensor 2018-06-26 00:16:04 +02:00
Fabio Manganiello
85c7faf21b Merge branch 'master' into docs 2018-06-25 20:25:10 +02:00
Fabio Manganiello
cb30a0418f Don't play icon animation to prevent the browser on a tiny RPi to freeze 2018-06-25 20:09:45 +02:00
Fabio Manganiello
b876f17f81 Completed documentation for plugins 2018-06-25 19:57:43 +02:00
Fabio Manganiello
1cbef67f2c Merge branch 'master' into docs 2018-06-25 00:49:51 +02:00
Fabio Manganiello
ad1c87b2be Adding more plugins documentation 2018-06-25 00:49:45 +02:00
Fabio Manganiello
49333d892e Remove and then re-add the skycons icon to make sure that the refresh happens 2018-06-24 14:35:36 +02:00
Fabio Manganiello
135212efcb Merge branch 'master' into docs 2018-06-23 13:26:20 +02:00