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
Fabio Manganiello
af00ac6c68
Fixed attribute name
2018-10-14 17:36:06 +02:00
Fabio Manganiello
a4e2db184d
Added tts.google web plugin
2018-10-14 17:17:19 +02:00
Fabio Manganiello
b6fcdf75f4
Make sure that we set the credential files environment variable
2018-10-14 10:45:25 +02:00
Fabio Manganiello
c640093139
Added Google-based TTS plugin
2018-10-14 10:29:02 +02:00
Fabio Manganiello
db89c39ed8
Made AutoRemote notification text optional
2018-10-12 00:41:23 +02:00
Fabio Manganiello
eab2ba2075
Added send_notification to AutoRemote
2018-10-11 23:35:29 +02:00
Fabio Manganiello
2d7040225c
Added AutoRemote plugin
2018-10-11 14:52:28 +00:00
Fabio Manganiello
74d23262b7
Implemented TCP backend
2018-10-11 14:02:29 +00:00
Fabio Manganiello
15b65c4896
Added utils plugin
2018-10-10 01:00:30 +02:00
Fabio Manganiello
68aaf9cd61
Message timestamp refactored
2018-10-08 13:30:00 +00:00
Fabio Manganiello
948f3dc37d
Implemented timestamp mark on messages to trigger message expiration logic in case something stays on the bus for longer than a minute
2018-10-08 10:35:59 +00:00
Fabio Manganiello
c10e882dd0
Make decode safe against null values
2018-10-06 23:37:26 +02:00
Fabio Manganiello
8497cd3863
More consistent naming
2018-10-06 23:30:11 +02:00
Fabio Manganiello
0b053bb46d
Expanding procedure arguments from context
2018-10-05 09:38:38 +02:00
Fabio Manganiello
1404d59865
Fixed response encoding
2018-10-04 10:22:23 +02:00
Fabio Manganiello
fbce006772
Fixed send_note pushbullet method
2018-10-01 15:06:26 +02:00
Fabio Manganiello
d419419487
Fix for if statements
2018-09-27 02:20:25 +02:00
Fabio Manganiello
570ef6f109
Replaced EventAction with Procedure to allow more flexibility in event hooks and cronjobs
2018-09-27 01:52:35 +02:00
Fabio Manganiello
38fdb8be08
Implemented support for else statements in if(s)
2018-09-27 01:09:00 +02:00
Fabio Manganiello
7ec6221a7f
Implemented nested if(s), solves #53
2018-09-26 22:31:27 +02:00
Fabio Manganiello
b88f7fcecc
Added play_if_paused_or_stopped method to mpd plugin
2018-09-25 19:40:00 +02:00
Fabio Manganiello
13c1895295
Support for runtime arguments on procedures
2018-09-25 19:20:34 +02:00
Fabio Manganiello
38f61298f8
Support for bulk mpd add
2018-09-25 09:42:46 +02:00
Fabio Manganiello
f79de2e708
Reverted bus post logic for HTTP backend
2018-09-25 00:31:51 +02:00
Fabio Manganiello
88d2fbd366
Response can't be null
2018-09-25 00:26:06 +02:00
Fabio Manganiello
d78e66df7c
Don't return status() over video stop, as the process should already be dead and playback status call will fail
2018-09-25 00:19:53 +02:00
Fabio Manganiello
65ec2458d8
MQTT backend should call on_message instead of posting directly to the bus
2018-09-24 23:21:02 +02:00
Fabio Manganiello
d215410a6a
More consistent flow for messages received by a backend
2018-09-24 23:13:44 +02:00
Fabio Manganiello
59d84c4fcb
- Calling on_message
on Redis backend to trigger the right logic
...
instead of `self.bus.post` directly
- For consistency `mset` now returns back the map of the set variables
- Redis backend enabled on tests
2018-09-24 22:07:13 +02:00
Fabio Manganiello
a4f075a4c1
Added support for ApplicationStartedEvent and ApplicationStoppedEvent
2018-09-24 09:18:46 +00:00
Fabio Manganiello
badb739a8c
Increased response queue read timeout to 60 seconds
2018-09-20 13:13:36 +00:00
Fabio Manganiello
44962dd919
Removed timeout from get_plugin lock; Added Redis server to tests configuration
2018-09-20 10:59:18 +00:00
Fabio Manganiello
6449504e26
Switched the bus to a Redis bus
2018-09-20 10:49:57 +00:00
Fabio Manganiello
661563d1f1
Added Redis bus
2018-09-20 09:41:27 +02:00
Fabio Manganiello
6bbae19d39
Lock timeout and reset in case a plugin takes too long to initialize or the lock is incorrectly marked as locked in multiprocess context
2018-09-18 20:25:31 +02:00
Fabio Manganiello
db5d3e6e3f
Prevent the plugin from being initialized again within the lock scope if another thread had it initialized in the meantime
2018-09-18 19:19:41 +02:00
Fabio Manganiello
98d24b061a
Added joystick backend
2018-09-18 18:58:23 +02:00
Fabio Manganiello
1d50e91b27
Removed unneeded lock acquire
2018-09-16 23:45:25 +02:00
Fabio Manganiello
2ee54b5220
Replaced fadeIn with show to make transitions less CPU heavy on RPi
2018-09-15 18:25:58 +02:00
Fabio Manganiello
5762c51019
Added support for Redis-stored variables in variables plugin
2018-09-06 09:31:31 +02:00
Fabio Manganiello
cccb48c533
Implemented mget and mset actions for Redis plugin
2018-09-06 03:38:10 +02:00
Fabio Manganiello
63890f7670
Return of get_measurement should always be a dict
2018-09-06 03:14:11 +02:00
Fabio Manganiello
5b5e861f94
Implemented distance sensors backend
2018-09-06 03:02:16 +02:00
Fabio Manganiello
5d1fd3a02f
Precision parameter added to accelerometer plugin
2018-09-06 02:47:47 +02:00
Fabio Manganiello
98a8874084
Added accelerometer sensor backend
2018-09-06 02:31:01 +02:00
Fabio Manganiello
692d33a071
Added empty __init__.py to lib module
2018-09-06 02:23:54 +02:00
Fabio Manganiello
96157a31bf
Return the accelerometer position in degrees between -90 and 90
2018-09-06 02:18:08 +02:00
Fabio Manganiello
b3f20ca0de
Added accelerometer sensors plugin
2018-09-06 02:11:41 +02:00
Fabio Manganiello
53ba5f6628
Wrap camera stop and connection close in two distinct try-catch blocks
2018-09-05 15:29:14 +00:00
Fabio Manganiello
5cfbd75250
Prevent RuntimeError on lock release if lock acquisition failed
2018-09-05 02:26:55 +02:00
Fabio Manganiello
3b8c580611
Revert "serial.write should have a blocking wait if the serial port is busy"
...
This reverts commit 0537d1fcac
.
2018-09-05 02:04:10 +02:00
Fabio Manganiello
0537d1fcac
serial.write should have a blocking wait if the serial port is busy
2018-09-05 01:59:55 +02:00
Fabio Manganiello
938526d521
Added write action to the serial plugin
2018-09-04 22:54:14 +02:00
Fabio Manganiello
6e867e9fb2
Support for multiple thresholds for the same sensor
2018-08-25 12:29:20 +02:00
Fabio Manganiello
2df9c5a890
Fixed gpio css
2018-08-22 21:01:37 +02:00
Fabio Manganiello
a9b4c1b8bf
Fixed gpio ui
2018-08-22 20:22:34 +02:00
Fabio Manganiello
2c369cb86d
Added web interface for gpio plugin
2018-08-22 19:50:30 +02:00
Fabio Manganiello
335d3e3cd7
Typo
2018-08-22 19:20:24 +02:00
Fabio Manganiello
ba1eca29fc
Reversed pin configuration/mapping as name->number instead of number->name
2018-08-22 19:12:26 +02:00
Fabio Manganiello
133dd4570e
Added PIN mappings to gpio plugin, support for read/write by PIN name and read_all method
2018-08-22 19:09:17 +02:00
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