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
7398107570
Completed documentation for backends
2018-06-26 00:36:01 +02:00
Fabio Manganiello
b876f17f81
Completed documentation for plugins
2018-06-25 19:57:43 +02:00
Fabio Manganiello
ad1c87b2be
Adding more plugins documentation
2018-06-25 00:49:45 +02:00
Fabio Manganiello
54dcb2cba3
Documentation v0.1
2018-06-23 01:00:43 +02:00
Fabio Manganiello
e70eb8bb42
typos
2018-06-19 20:32:19 +02:00
Fabio Manganiello
98c88ff8e5
Made serial.plugin more robust. It can now read a JSON even if it's not all on one line and if it comes with some bogus bytes at the beginning or the end
2018-06-19 20:05:24 +02:00
Fabio Manganiello
5f50b5c4f4
Support for color animations via web interface too
2018-06-19 00:37:33 +02:00
Fabio Manganiello
dde0b579b2
typo
2018-06-16 04:54:27 +02:00
Fabio Manganiello
9fd86977c7
Don't pass stuff to set_light and set_group that we don't have to
2018-06-16 04:48:09 +02:00
Fabio Manganiello
31a2aa67e2
Always stop any running animation before resetting the lights to a static configuration
2018-06-16 04:20:13 +02:00
Fabio Manganiello
803aa68f11
Support for animation (so far color transition and blink) on Philips Hue plugin
2018-06-16 04:10:59 +02:00
Fabio Manganiello
2d6994c057
send_message over Redis for OMXPlayer plugin
2018-06-14 21:13:01 +02:00
Fabio Manganiello
bd18d1cbc1
Using Redis backend as a fallback for send_message if a backend does not implement its own send_message
2018-06-14 20:42:57 +02:00
Fabio Manganiello
d9b51c94c0
Added Pushbullet plugin to send pushes and files
2018-06-14 15:35:19 +00:00
Fabio Manganiello
81d29928b0
Pi Camera backend version 1.0, now properly controllable
2018-06-14 12:37:14 +02:00
Fabio Manganiello
2b73f71803
Improved logging traces names for backends and plugins
2018-06-14 02:19:55 +02:00
Fabio Manganiello
29a5cfa9c2
Refactored camera.pi backend. Support for start/stop recording control via plugin action. Introduced support for taking pictures too
2018-06-14 00:34:30 +02:00
Fabio Manganiello
f9c0d83f79
Made variable.set less verbose and more flexible. Replace the syntax like {"action":"variable.set", "args": {"name":"foo", "value":"bar"}} with a more compact {"action":"variable.set", "args":{"foo":"bar"}}
2018-06-13 23:20:21 +02:00
Fabio Manganiello
9113ac0530
variable.set now returns output in the form name:value so the newly set variable is already available in the context of the task
2018-06-13 22:19:17 +02:00
Fabio Manganiello
7fd375da66
Added plugin for handling general-purpose session variables across tasks.
...
Supported methods: variable.get, variable.set, variable.unset
2018-06-13 22:09:28 +02:00
Fabio Manganiello
ab02d7e79c
Calendar events can also be all day - in such a case parse the 'date' field instead of 'dateTime'
2018-06-13 00:54:59 +02:00
Fabio Manganiello
464ff1ff57
A more robust way to handle JSON serialization/deserialization on MQTT backend
2018-06-12 10:33:30 +02:00
Fabio Manganiello
bdf862e6d2
get_data alias for get_measuremnt
2018-06-12 00:46:51 +02:00
Fabio Manganiello
f8506d6d25
Added comment to explain the reasons for sudo in the switchbot plugin
2018-06-11 22:41:23 +02:00
Fabio Manganiello
1bc4c47df7
Imported ZeroBorg library with scope constructor as global import fails for some reason
2018-06-08 17:10:49 +02:00
Fabio Manganiello
bb21595678
Called parent constructor in ZeroBorg plugin to make sure that the logger instance is initialized
2018-06-07 09:31:12 +02:00
Fabio Manganiello
4da74b1096
Refactored logging submodule
2018-06-06 20:09:23 +02:00
Fabio Manganiello
4c1cb9ae6b
Added mkv to the supported media extensions
2018-06-02 21:56:46 +02:00
Fabio Manganiello
bc3e100217
New general-purpose plugin for managing multiple calendar + support for ICal format
2018-05-30 15:59:10 +02:00
Fabio Manganiello
3fe70dd184
Implemented MQTT backend and plugin, see issue #56
2018-05-27 12:21:41 +02:00
Fabio Manganiello
96e3acb20f
Added MPD play_if_paused and pause_if_playing methods
2018-05-25 18:04:37 +02:00
Fabio Manganiello
27b97e584f
Added support for MIDI real-time events
2018-05-23 19:49:54 +02:00
Fabio Manganiello
a8015addbf
Only take the first component of formatted_address
2018-05-23 08:06:52 +00:00
Fabio Manganiello
3ce6cf8b41
Just use formatted_address from the Google geocode response instead of considering all the cases of address formatting
2018-05-22 21:43:21 +00:00
Fabio Manganiello
2c7880874d
Logging geocode response
2018-05-22 21:34:06 +00:00
Fabio Manganiello
f4da6ebb1b
Redis plugin added and Redis backend made more robust to work also with single-quoted JSON-like strings returned by the Redis lib
2018-05-22 14:44:17 +00:00
Fabio Manganiello
9923742e74
Prevent plugins from breaking in case of concatenations with None elements
2018-05-14 19:06:11 +02:00
Fabio Manganiello
21ac8d7899
Build the address as street + street_number if they are both available
2018-05-13 20:15:25 +00:00
Fabio Manganiello
6c0dc9a4dc
Added GMaps geocode plugin and geo update event
2018-05-13 21:42:26 +02:00
Fabio Manganiello
d0ca6b8e93
Replaced the YouTube search results parsing logic that relied on BeautifulSoup with a simpler logic that only uses regexes to parse video results. It greatly improves the performance of YouTube video search and removes the dependency on BeautifulSoul and lxml
2018-05-13 14:29:31 +02:00
Fabio Manganiello
d75326bbe8
Added Switchbot web plugin
2018-05-08 17:07:01 +02:00
Fabio Manganiello
598c917eda
Added Switchbot plugin
2018-05-08 15:51:47 +02:00
Fabio Manganiello
b94764436d
Added WeMo switch plugin for web panel
2018-05-08 09:59:43 +02:00
Fabio Manganiello
36c9437172
Added method to get WeMo available devices
2018-05-08 09:14:02 +02:00
Fabio Manganiello
27d5f674c5
Added __init__.py
2018-05-06 00:17:18 +02:00
Fabio Manganiello
e1e4d824ad
- Added web widget for Google Calendar integration
...
- UX improvements on the dashboard
2018-05-05 00:57:41 +02:00
Fabio Manganiello
f6306c6015
Added Google Calendar plugin
2018-05-04 19:20:23 +02:00
Fabio Manganiello
2f8c74c8e3
- Added Pushbullet JS logic to show mirror notifications on web FE
...
- Added JS and CSS files for dashboard and widgets
2018-05-04 17:25:12 +02:00
Fabio Manganiello
d83c2c903f
- Added support for /dashboard page with customizable widgets under the web server
...
- Introduced Redis to pass messages between the Flask process and the
main application. It now syncs messages with the bus and connected websockets
- Added support to programmatically modify dashboard widgets through POST request like Dashing
- Added weather forecast plugin
2018-05-04 03:24:35 +02:00
Fabio Manganiello
ef75339fef
Fixed missing output= argument
2018-04-29 16:38:05 +02:00
Fabio Manganiello
cfe78dfa23
Fixed name clash
2018-04-29 16:19:26 +02:00
Fabio Manganiello
4462f9590f
Forgot an import
2018-04-29 16:18:27 +02:00
Fabio Manganiello
a907c9ad63
Refactored serial, the entry point for querying serial devices should be the serial plugin, the backend should only be a client. Also, if the serial output is a JSON, parse it
2018-04-29 16:14:46 +02:00
Fabio Manganiello
e9425236a9
Removed additional file_name parameter
2018-04-26 15:54:40 +02:00
Fabio Manganiello
7fb0a5bb55
Set download_dir only if specified
2018-04-25 12:03:15 +02:00
Fabio Manganiello
efe4f32409
Implemented torrent search, download and streaming in OMXPlayer plugin
2018-04-25 11:29:03 +02:00
Fabio Manganiello
acd06c2193
Implemented OMXPlayer file search and unified all searches under one method
2018-04-25 00:13:17 +02:00
Fabio Manganiello
77da94769e
Implemented file search method in OMXPlayer plugin
2018-04-24 21:28:42 +02:00
Fabio Manganiello
e5e1270380
Exposed a global context.get_bus() method to allow plugins to send events to the main bus
2018-04-24 20:07:16 +02:00
Fabio Manganiello
9052e18f9c
Commented OMXPlayer handlers initialization part as the plugin object has no access to the bus
2018-04-24 14:56:31 +02:00
Fabio Manganiello
9492243fd5
Transform a [0,100] volume range in the volume range expected by the OMXPlayer API
2018-04-24 14:54:01 +02:00
Fabio Manganiello
dd254b65cb
Implemented YouTube videos search and controls web FE
2018-04-24 14:36:05 +02:00
Fabio Manganiello
c4401b25be
Reload logic on media.ctrl in case the connection with the media plugin has been reset
2018-04-22 23:39:23 +02:00
Fabio Manganiello
60c9c7476e
Fixed a missing parenthesis
2018-04-20 15:20:23 +02:00
Fabio Manganiello
a783efd0d7
Added status method to media.ctrl plugin
2018-04-20 15:18:20 +02:00
Fabio Manganiello
ded4ac3b95
- Introduced a more consistent Enum for managing playing states across different players
...
- media.ctrl can now spot which player is playing and control only the right one
- Extended video.omxplayer plugin methods
2018-04-20 12:17:27 +02:00
Fabio Manganiello
cc506b3340
Final (?) regex fix
2018-04-20 10:04:29 +02:00
Fabio Manganiello
eaec9ac51f
Final (?) regex fix
2018-04-20 10:00:01 +02:00
Fabio Manganiello
8e5a27d74c
Regex fix
2018-04-20 09:52:55 +02:00
Fabio Manganiello
2459506964
Regex typo
2018-04-20 09:41:52 +02:00
Fabio Manganiello
7e119654f9
Retry with the next YouTube video until some of the ones from the search can be played without errors
2018-04-20 09:38:04 +02:00
Fabio Manganiello
4db2f62c17
typo #2
2018-04-20 09:30:19 +02:00
Fabio Manganiello
3f3ec08af2
typo
2018-04-20 09:27:57 +02:00
Fabio Manganiello
6135089d60
Encoding POST data as bytes
2018-04-19 23:46:47 +02:00
Fabio Manganiello
02f6e163bf
Variable typo
2018-04-19 23:42:10 +02:00
Fabio Manganiello
51d6bec51c
Forgot an import
2018-04-19 23:40:49 +02:00
Fabio Manganiello
14aa4f6454
Implemented torrent search
2018-04-19 23:35:19 +02:00
Fabio Manganiello
2fdb8c50da
Added support for video events
2018-04-19 22:42:28 +02:00
Fabio Manganiello
84ab37e44e
Added YouTube search only method
2018-04-19 10:18:46 +02:00
Fabio Manganiello
23095bc18d
Log the YT videos being played/searched
2018-04-19 00:39:59 +02:00
Fabio Manganiello
61e851dd8e
Fixes
2018-04-19 00:32:20 +02:00
Fabio Manganiello
12295f2f77
youtube_search_and_play moved back to video.omxplayer
2018-04-19 00:30:43 +02:00
Fabio Manganiello
d2b881fee7
YouTube search and play code moved to media.ctrl plugin
2018-04-18 00:50:19 +02:00
Fabio Manganiello
ab19e258bb
Implemented YouTube videos search and play with support for queuse
2018-04-18 00:23:12 +02:00
Fabio Manganiello
2186336bbc
Added plugin for supporting MCP3008 ADC for analog sensors
2018-04-17 01:03:02 +02:00
Fabio Manganiello
f717315136
Added music.mpd.searchaddplaylist method
2018-04-15 16:31:23 +02:00
Fabio Manganiello
87fb8855b7
- Show Spotify results first from MPD search, if available
...
- More granular calculation of the match score
2018-04-15 11:15:43 +02:00
Fabio Manganiello
73c74654d1
- Better MPD filter management - you can now pass filters as arrays like
...
['artist', 'Led Zeppelin', 'title', 'Stairway To Heaven'] instead of
relying on one single type-filter pair
- Improved condition matching - don't skip the last condition token if
there are still event tokens to add
2018-04-14 23:58:48 +02:00
Fabio Manganiello
e83b21ad33
No outline on the ZeroBorg div when focused
2018-04-13 23:45:29 +02:00
Fabio Manganiello
b863213bd7
More rational management of ZeroBorg auto pilot mode together with sensor - no longer limited to gpio.sensor.distance alone, but including any kind of GpioSensorPlugin. Thresholds, timeouts and actions are configured in config.yaml instead of being hardcoded
2018-04-13 15:49:10 +02:00
Fabio Manganiello
b597097be3
Better management of motor power settings in gpio.zerborg - no more offsets multiplied for max_power and hardcoded power coefficients, just pass the motor power in the configuration
2018-04-13 15:12:31 +02:00
Fabio Manganiello
25e601ca4d
More granular control of the motors left/right directions
2018-04-12 17:18:32 +02:00
Fabio Manganiello
decadee00a
Implemented music search from web panel
2018-04-12 13:04:56 +02:00
Fabio Manganiello
248b1c37b2
typo
2018-04-09 02:04:07 +02:00
Fabio Manganiello
a3fbce1082
Support for global and individual color and power switches on Philips Hue interface
2018-04-09 01:24:02 +02:00
Fabio Manganiello
2bf4ff136b
Exposing serial data functionally through a plugin
2018-04-08 18:16:24 +02:00
Fabio Manganiello
10a78a1f21
Frontend plugin for Philips Hue
2018-03-27 23:13:47 +02:00
Fabio Manganiello
b5567c289f
- Added Pi camera stream over TCP backend
...
- More consistent event handling for the pushtotalk assistant
- Added general GPIO module
2018-03-24 03:05:46 +01:00
Fabio Manganiello
a14d6fe652
- Stop assistant playback only if there was a user request. This
...
prevents a PortAudio write on input-only stream error in the Assistant
SDK, see https://github.com/googlesamples/assistant-sdk-python/issues/185
- Make sure that user_request is always defined before returning it
- Use assistant.google.pushtotalk as a fallback if assistant.google is
not configured/available
2018-03-21 23:21:41 +01:00
Fabio Manganiello
d5f73023ea
Support for custom hotword detection through Snowboy
2018-03-20 23:34:36 +01:00
Fabio Manganiello
6309f5301e
- Power offsets now passed through conf instead of source code
...
- More robust handling of temporary sensor failures
2018-03-17 17:16:20 +01:00
Fabio Manganiello
dcd4f9eddf
Threshold obstacle distance increased to 40 cm
2018-03-06 02:44:44 +01:00
Fabio Manganiello
8674626934
- Implemented auto_toggle command for Zeroborg
...
- Recalibrated power offsets
2018-03-05 23:27:20 +01:00
Fabio Manganiello
8b733fb859
- Added IR sensor backend
...
- Fixed default power offsets
- Changed threshold distance for ultrasound sensor
- Fixed power multiplier coefficient
2018-03-04 17:55:48 +01:00
Fabio Manganiello
0f97678a78
Throttling power
2018-03-03 03:24:08 +01:00
Fabio Manganiello
da0d715d49
Getting distance synchronously
2018-03-02 16:02:04 +01:00
Fabio Manganiello
df6790cde9
Changed default distance
2018-03-02 14:37:14 +01:00
Fabio Manganiello
cf83f07f79
Implemented auto pilot with distance sensors
2018-02-26 11:31:06 +01:00
Fabio Manganiello
a8254181b2
Fixed ZeroBorg power offsets
2018-02-26 01:01:07 +01:00
Fabio Manganiello
6508f0baf3
Zeroborg plugin
2018-02-25 23:45:31 +01:00
Fabio Manganiello
779a907ebd
Made the ZeroBorg module Python3-friendly
2018-02-20 20:41:56 +01:00
Fabio Manganiello
f16719f575
Added ZeroBorg plugin draft
2018-02-20 20:09:29 +01:00
Fabio Manganiello
40efb3f9c7
Support for selecting and playing tracks and playlists in web interface
2018-02-05 09:45:35 +01:00
Fabio Manganiello
1cab75757b
- Support for playlist update events handling on MPD
...
- Support for playlist updates on the web interface
- Support for selecting and playing tracks in the web interface
2018-02-05 00:55:19 +01:00
Fabio Manganiello
de2e50fefa
Implemented support for track random seek
2018-01-31 10:35:14 +01:00
Fabio Manganiello
7cd15d35e1
Return new status on random and repeat calls
2018-01-31 01:39:04 +01:00
Fabio Manganiello
968b71e946
- Implemented support for shuffle, random and set volume on the UI
...
- Reduced the websocket ping poll frequency to 1 second
2018-01-31 01:32:07 +01:00
Fabio Manganiello
28bc4c748e
UI improvements + support for MPD playlists and folders
2018-01-30 00:54:46 +01:00
Fabio Manganiello
6aec6380d8
MIMEBase import is needed here
2018-01-28 03:08:19 +01:00
Fabio Manganiello
6bfb6d934d
Support for multiple attachments and binary application attachments in GMail
2018-01-28 02:59:19 +01:00
Fabio Manganiello
55eb689121
Support for RSS digest generation either in HTML or PDF format
2018-01-28 02:01:54 +01:00
Fabio Manganiello
834b700d5f
Added GMail actions support, solves #49
2018-01-17 03:16:59 +01:00
Fabio Manganiello
ac15e581ce
Added last.fm scrobbler plugin, solves #21
2018-01-15 02:40:22 +01:00
Fabio Manganiello
4fa7a08006
Added mpd backend
2018-01-13 02:52:06 +01:00
Fabio Manganiello
76f7bbc529
Refactored HTTP request plugin and fixed bug on the plugin name
2018-01-12 15:18:06 +01:00
Fabio Manganiello
3c13625e63
Better logic for db inserts
2018-01-07 01:35:27 +00:00
Fabio Manganiello
32dcb0c829
Added database plugin, #43
2018-01-06 22:52:24 +01:00
Fabio Manganiello
6b31ed3b1a
Added __init__.py
2018-01-06 11:10:55 +01:00
Fabio Manganiello
1df10bc97e
Added HTTP requests plugin, #42
2018-01-05 20:00:15 +01:00
Fabio Manganiello
4c62133378
Updated README
2018-01-03 02:23:25 +01:00
Fabio Manganiello
08189653bb
s/playlistload/load/
2017-12-29 12:48:14 +01:00
Fabio Manganiello
b6733b3e6a
Also start playback when adding a playlist
2017-12-29 12:44:49 +01:00
Fabio Manganiello
26c3afee68
Implemented play_or_stop in mpd
2017-12-28 13:13:09 +01:00
Fabio Manganiello
c830988e09
Added __init__
2017-12-27 12:09:59 +01:00
Fabio Manganiello
d727b28acf
Syntax error
2017-12-27 12:02:47 +01:00
Fabio Manganiello
aa506b20e2
Should import logging
2017-12-27 11:29:33 +01:00
Fabio Manganiello
ec6f1b1457
Prevent player loops in case of dbus errors
2017-12-27 11:27:06 +01:00
Fabio Manganiello
7c55848651
Forgot a couple of selfs
2017-12-27 11:01:07 +01:00
Fabio Manganiello
c184356f67
Added __init__.py
2017-12-27 10:37:15 +01:00
Fabio Manganiello
eff046f1d1
Added __init__.py
2017-12-27 10:30:33 +01:00
Fabio Manganiello
92b691041e
Added more general media control plugin, #10
2017-12-27 10:19:35 +01:00
Fabio Manganiello
c201d725b7
Google Assistant plugin to programmatically start/stop conversation
2017-12-26 15:06:59 +01:00
Fabio Manganiello
6928e440bc
Support for Flic button events
2017-12-24 13:15:37 +01:00
Fabio Manganiello
7a0295675c
#20 Added TTS plugin
2017-12-22 03:14:19 +01:00
Fabio Manganiello
bd5c80175f
- Major refactoring.
...
- More consistent naming for many methods, plus added a more extensive doc.
- Refactored the entry points for the daemon and the pusher into two
classes, easier to encapsulate and wrap into tests.
- Removed the local backend - managing the concurrency of two processes
reading and writing on the same socket at the same time was too much,
and its utility outside of the tests (which can have mock backends as
well) is quite modest.
- Managing stop events on the bus. Still some work to do tho.
- Fixed several bugs.
2017-12-20 20:25:08 +01:00
Fabio Manganiello
4a04e51da7
Major refactoring #2
2017-12-18 01:10:51 +01:00
Fabio Manganiello
1a6d726b19
Passing arguments to the plugin
2017-12-17 16:41:52 +01:00
Fabio Manganiello
33c4d9fb52
s/platypush.response/platypush.message.response/g
2017-12-13 04:21:26 +01:00
Fabio Manganiello
462dc2f1c9
* Sending responses back on the backend channel
...
* Version bump
2017-12-13 04:14:46 +01:00
Fabio Manganiello
491c2cd571
* More consistent management of responses
...
* Better per-plugin/per-backend logging management
2017-12-13 03:37:28 +01:00
Fabio Manganiello
f7202fd205
* PushbulletBackend.send_msg method refactored and removed pushbullet.py dependency
...
* Management of optional dependencies moved to setup.py
2017-12-12 20:14:02 +01:00
Fabio Manganiello
6c2ea3767c
s/runbullet/platypush/g
2017-12-11 20:30:57 +01:00