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
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
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
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
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
8b2c6d333e
Lint warnings fixed
2019-07-13 14:22:43 +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
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
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
09165ca0ff
Dashboard rewritten in vue.js
2019-07-07 20:11:32 +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
482f6f0765
New media webplugin WIP
2019-06-22 00:15:32 +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
e5d7334662
New media webplugin WIP
2019-06-16 21:45:21 +02:00
Fabio Manganiello
076d766745
New TTS webpanel plugins
2019-06-11 11:53:15 +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
611a137ff6
music.mpd vue.js refactoring WIP: Implemented playlist track move feature
2019-06-04 15:59:07 +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
7a74b83c76
music.mpd plugin vue.js refactoring - WIP
2019-05-30 02:07:28 +02:00
Fabio Manganiello
01b111f436
Webpanel refactoring in progress
2019-05-28 19:16:55 +02:00
Fabio Manganiello
5041d8bec2
whiteline PEP fix
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
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
b8e9adadbe
Added plugin to parse web pages
2019-03-29 03:57:19 +01:00
Fabio Manganiello
20b0c09a0c
Removed workaround that doesn't work
2019-03-20 18:37:49 +01: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
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
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
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
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
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
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
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
17367f5b3e
Added camera plugin over cv2
2019-02-26 23:50:48 +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
6222747730
typo
2019-02-21 01:49:43 +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
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
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
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
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
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
1103e417e1
Managing optional arguments properly on _exec
2019-02-13 23:50:40 +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
8227427834
webtorrent timeout 20 -> 120 seconds
2019-02-13 09:46:51 +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
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
434bc8a5eb
Reset bridge connection upon failure
2019-02-08 19:59:25 +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
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
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
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
947fc8f583
Better handling of Hue bridge first-time pairing
2019-01-27 17:26:15 +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
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
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
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
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
544979e7ff
- Added position
argument to music.mpd.add
...
- Added RSS feed parser plugin
2019-01-09 18:43:13 +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
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
004868f526
Added skeleton UI for Snapcast plugin on web panel
2019-01-07 15:34:31 +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
240abb627d
Fix old Spotify playlists URI format
2019-01-03 10:37:16 +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
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
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
a226aad669
Added python-dateutil requirement
2018-12-19 00:09:21 +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
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
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
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
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
fc3f53f32b
Retry logic for getting mpd status
2018-11-07 18:04:37 +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
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
92a3759721
Added websocket backend and plugin
2018-10-26 21:55:49 +02: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
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
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
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
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
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
15b65c4896
Added utils plugin
2018-10-10 01:00:30 +02: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
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
b88f7fcecc
Added play_if_paused_or_stopped method to mpd plugin
2018-09-25 19:40:00 +02:00
Fabio Manganiello
38f61298f8
Support for bulk mpd add
2018-09-25 09:42:46 +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
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
6449504e26
Switched the bus to a Redis bus
2018-09-20 10:49:57 +00: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
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
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
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
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
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
bbdf11b9ce
Added shuffle method to music.mpd
2018-08-06 22:44:02 +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
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
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
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
b3e3621c5a
Removed unneeded imports
2018-07-15 17:28:17 +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
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
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
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