Fabio Manganiello
de3bb48493
mkdir -p /app in generated Dockerfile
2019-12-02 00:37:34 +01:00
Fabio Manganiello
3ac9ecbd8f
Do git clone and explicit pip install -r requirements.txt in platydock to make sure that all the recommended dependencies are installed
2019-12-02 00:34:32 +01:00
Fabio Manganiello
fbe4f9494c
No need to run pip install pyScss in setup.py if it's not available
2019-12-02 00:24:28 +01:00
Fabio Manganiello
346b1be924
Filter out in get_plugins the special configuration fields not associated with plugins
2019-12-01 23:53:14 +01:00
Fabio Manganiello
d38746d278
Moved imports for extra dependencies inside the methods where they are actually used
2019-12-01 23:35:05 +01:00
Fabio Manganiello
f8d3ea5197
Refactored platydock and platyvenv
2019-12-01 22:27:54 +01:00
Fabio Manganiello
c5284c7183
Bump version: 0.10.8 → 0.10.9
2019-12-01 19:55:10 +01:00
Fabio Manganiello
f537a7785a
typo
2019-12-01 18:23:50 +01:00
Fabio Manganiello
e3476ee634
Bump version: 0.10.7 → 0.10.8
2019-12-01 17:47:53 +01:00
Fabio Manganiello
92533c8303
Added special utils.get_context action to get current context
2019-12-01 17:43:10 +01:00
Fabio Manganiello
a18452ab2e
Made procedure.[sync|async].name second argument optional
...
A procedure will be sync if [sync|async] is not specified
2019-12-01 16:48:57 +01:00
Fabio Manganiello
f281411b2e
Set the light property before the any_on/all_on check on the group
2019-12-01 16:33:48 +01:00
Fabio Manganiello
3bbb6cf053
Include dev version of vue.js if available in the HTTP static/js
...
folder, otherwise include the minified version
2019-12-01 16:33:48 +01:00
Fabio Manganiello
abbfe517de
Don't override matches_condition in ResponseEvent to run stop_conversation. Use the flag play_response=False on plugin level to bypass the response instead
2019-11-26 15:52:30 +01:00
Fabio Manganiello
2b8ba2b956
Support for specifying external audio player on Alexa plugin
2019-11-26 11:19:15 +01:00
Fabio Manganiello
d5f0d476c0
#86 : Support for play_response flag on Google pushtotalk plugin
2019-11-26 00:32:27 +01:00
Fabio Manganiello
9b04570e49
Assistant event refactor: always explicitly pass the assistant object.
...
Also added match_condition override for ResponseEvent to capture the
assistant response text, when available, and prevent the default
response - it should solve #86 .
2019-11-26 00:16:32 +01:00
Fabio Manganiello
0ddfce3dce
PEP fixes
2019-11-26 00:04:17 +01:00
Fabio Manganiello
75c6abf249
Pass the assistant object on the Alexa events
2019-11-25 23:16:33 +01:00
Fabio Manganiello
077d787d42
Added input audio device support to Alexa plugin
2019-11-25 23:05:01 +01:00
Fabio Manganiello
2cf9bf654d
Removed unused imports from Snowboy backend
2019-11-25 20:27:52 +01:00
Fabio Manganiello
1661428417
#80 : kwargs on start_conversation for extra parameters
2019-11-25 00:06:48 +01:00
Fabio Manganiello
ef8fd044fd
#80 : Extended Alexa/Echo plugin
2019-11-24 23:57:32 +01:00
Fabio Manganiello
deb28cf005
#80 : Support for Alexa/Echo assistant
2019-11-24 23:46:14 +01:00
Fabio Manganiello
f98a440200
Support for explicit enabled_plugins/disabled_plugins on webpanel index
2019-11-22 00:00:14 +01:00
Fabio Manganiello
f04f42caef
Refactored and simplified Snapcast backend. Moreover the "grace sleep"
...
should happen in any case of errors, not only on disconnect errors,
to prevent a tight loop of retries.
2019-11-05 18:11:04 +01:00
Fabio Manganiello
6aa13a10cb
Initialize the animation groups map only if groups was specified
2019-11-03 14:45:03 +01:00
Fabio Manganiello
c4f4d61851
Bump version: 0.10.6 → 0.10.7
2019-10-21 01:30:57 +02:00
Fabio Manganiello
9914d4ef0b
Handling CSS and fonts properly in RSSUpdates digests
2019-10-13 12:43:18 +02:00
Fabio Manganiello
4c72646759
typo
2019-10-08 10:24:48 +00:00
Fabio Manganiello
ca41f6b8cf
Torrent download from web panel should be asynchronous
2019-10-08 10:14:45 +00:00
Fabio Manganiello
99d17b666c
Only set up listen ports for libtorrent if it's a new session
2019-10-08 10:06:33 +00:00
Fabio Manganiello
f23afa3c53
Better management for font styles in http.webpage.simplify
2019-10-05 23:54:26 +02:00
Fabio Manganiello
89c2555753
Improved font in http.webpage.simplify for HTML and PDF output
2019-10-05 22:48:07 +02:00
Fabio Manganiello
09991b2e8a
Use a filesystem FIFO for YouTube media content instead of playing the *.googlevideo.com URL directly
...
Google Video URLs now return 403 if played directly. Let youtube-dl
handle the heavylifting and use a FIFO to stream the media
2019-09-30 18:06:30 +02:00
Fabio Manganiello
f69a7e422b
[ #84 ] Completed Dropbox support
2019-09-30 00:04:48 +02:00
Fabio Manganiello
313a195831
Support for torrent direct download through magnet link in web panel
2019-09-29 17:48:30 +02:00
Fabio Manganiello
fd10b2260c
Changed PopcornTime endpoints
2019-09-29 10:31:00 +02:00
Fabio Manganiello
faa55daccf
Smarter cron management with croniter
2019-09-28 01:34:27 +02:00
Fabio Manganiello
bcb47909c9
Reverted seconds support in cronjobs
2019-09-27 15:00:00 +02:00
Fabio Manganiello
87d14134f8
Increased cron check frequency to support seconds granularity
2019-09-27 14:51:53 +02:00
Fabio Manganiello
bcd3bf7911
Support for seconds in cron expressions
2019-09-27 14:47:27 +02:00
Fabio Manganiello
48e4aeb3dc
Added machine learning plugin based on OpenCV cv2.dnn module
2019-09-27 11:46:50 +02:00
Fabio Manganiello
6aa52f0522
typo
2019-09-27 10:35:16 +02:00
Fabio Manganiello
a17dba3ec6
LINT warnings fix
2019-09-26 19:23:38 +02:00
Fabio Manganiello
168b1b0e5a
Finalized camera.ir.mlx90640 web interface
2019-09-26 18:33:44 +02:00
Fabio Manganiello
d7dc74beed
Added web plugin for mlx90640 infrared camera
2019-09-26 11:15:18 +02:00
Fabio Manganiello
c6384b3b65
Expand rawrgb_path to support relative paths and user prefix
2019-09-25 16:02:35 +02:00
Fabio Manganiello
755c8b52ec
Extended features of MLX90640 infrared camera plugin
2019-09-25 15:36:56 +02:00
Fabio Manganiello
d1d842ae95
Added MLX90640 infrared camera plugin
2019-09-25 10:40:57 +02:00
Fabio Manganiello
d96a218c56
LINT warnings fix
2019-09-24 23:21:19 +02:00
Fabio Manganiello
876a07d2c8
Keep measurements in a loop until we get a valid data point
2019-09-24 10:00:56 +02:00
Fabio Manganiello
0fe255436e
Don't fail hard if the seconds key is not in the map
2019-09-24 01:20:14 +02:00
Fabio Manganiello
d21fd64100
Added motion_events_per_sec measurement
2019-09-24 01:17:13 +02:00
Fabio Manganiello
ff1fe3058b
Don't fail hard in case of temporary sensor glitches
2019-09-24 01:01:06 +02:00
Fabio Manganiello
d6de1189e5
Simplified motion sensor interface by removing unneeded absolute vector
2019-09-24 00:13:02 +02:00
Fabio Manganiello
3da6c41f21
Shorter default poll_seconds (0.01) for better motion sensitivity
2019-09-24 00:10:17 +02:00
Fabio Manganiello
63d222d2ee
Slot enum mapping fix
2019-09-23 23:48:26 +02:00
Fabio Manganiello
f76e45dda9
Backend name typo
2019-09-23 23:34:46 +02:00
Fabio Manganiello
7e92f59d44
Added PWM3901 optical motion/flow sensor plugin
2019-09-23 23:28:33 +02:00
Fabio Manganiello
a580cc93eb
Added draft for Dropbox plugin
2019-09-13 10:18:54 +00:00
Fabio Manganiello
a43508a743
Do not import cv2 in camera.__init__ unless we specify a video_type that needs to be expanded. Otherwise we introduce the OpenCV dependency also for the camera.pi plugin
2019-09-10 00:21:11 +02:00
Fabio Manganiello
e9c7104242
Keep track of the newly inserted token records in media.local.search, or we can experience UniqueConstraint violations upon session commit because of duplicate records
2019-09-02 23:05:16 +02:00
Fabio Manganiello
1dca11c0be
HTTP headers should always be an argument of the Request object
2019-09-02 01:17:52 +02:00
Fabio Manganiello
e673b3e0c7
search_* methods can't be static
2019-09-02 01:12:43 +02:00
Fabio Manganiello
86d38b421a
Added headers in torrent API requests
2019-09-02 01:10:22 +02:00
Fabio Manganiello
7bf4284f7b
Typo in keyword name
2019-09-02 01:00:38 +02:00
Fabio Manganiello
7bbaaba767
Refactored torrents plugin
2019-09-02 00:53:09 +02:00
Fabio Manganiello
b9360cf2c5
camera.close() should be in a finally block to make sure that we don't
...
run out of resources because of failed camera initializations
2019-08-25 16:51:10 +02:00
Fabio Manganiello
69a03fa025
Do wait_recording until the client disconnects
2019-08-17 00:27:19 +02:00
Fabio Manganiello
b599c622c4
_get_camera should first verify both that camera is not null and not
...
closed before returning the cached object
2019-08-16 19:15:00 +02:00
Fabio Manganiello
5ca8ee594f
If a for loop argument returns a native Python iterable then expand that iterable
2019-08-16 19:04:15 +02:00
Fabio Manganiello
3c675b296f
Don't propagate the exception if stop_preview failed
2019-08-16 18:49:15 +02:00
Fabio Manganiello
6465a6f282
Added start/stop preview camera actions
2019-08-16 18:38:04 +02:00
Fabio Manganiello
c93af07333
Close camera preview after taking a picture or a sequence
2019-08-16 18:30:49 +02:00
Fabio Manganiello
284ec129d9
Lint fixes
2019-08-16 18:18:55 +02:00
Fabio Manganiello
7fd5f5c4f8
Proper synchronization with client connections and stop_streaming condition in the streaming thread
2019-08-16 17:49:15 +02:00
Fabio Manganiello
190ab15a76
Fixed camera.pi plugin
2019-08-16 12:24:42 +02:00
Fabio Manganiello
b153d212e3
New picamera plugin
2019-08-16 11:11:45 +02:00
Fabio Manganiello
59d976d681
Start ranging only with one setting (to get more accurate measurements once the sensor has warmed up) and configure it only at sensor startup
2019-08-15 15:20:49 +02:00
Fabio Manganiello
dccd3fd3d4
Don't open the device and leave it open on each measurement, or the backend will fail with 'Too many open files' at some point
2019-08-15 13:06:31 +02:00
Fabio Manganiello
8396c82d56
Typo in import name
2019-08-15 00:35:17 +02:00
Fabio Manganiello
b15dff0a24
Class name typo
2019-08-15 00:30:42 +02:00
Fabio Manganiello
e60660b0e6
Added plugin and backend for VL53L1X laser ranger/distance sensor
2019-08-15 00:26:25 +02:00
Fabio Manganiello
8462f474f7
Skip tolerance check whether if the new or the old value are not numeric
2019-08-14 22:49:18 +02:00
Fabio Manganiello
4a34fcd7fd
More robust sensor tolerance measurement in case of non-numeric sensor data
2019-08-14 22:45:50 +02:00
Fabio Manganiello
e7448d90d6
Trigger a ConversationStartedEvent before initializing the assistant object
2019-08-14 21:46:31 +02:00
Fabio Manganiello
df5f17eb0e
Fixed wrong plugin name
2019-08-14 21:38:52 +02:00
Fabio Manganiello
19dc96ff1c
Added LTR559 sensor plugin and backend
2019-08-14 21:27:25 +02:00
Fabio Manganiello
80f969cfce
The BME280 sensor also supports altitude
2019-08-14 21:03:27 +02:00
Fabio Manganiello
8bf5076334
FIX we should return device from _get_device
2019-08-14 20:52:27 +02:00
Fabio Manganiello
693b38ef51
Cache the BME280 object instead of initializing it on each get_measurement call
...
The BME280 needs some warmup time before picking up the results.
2019-08-14 20:50:14 +02:00
Fabio Manganiello
e0351421ad
Better management of sensor tolerance in SensorBackend
2019-08-14 20:39:21 +02:00
Fabio Manganiello
851635bc15
typo on serial plugin name
2019-08-14 20:03:34 +02:00
Fabio Manganiello
8bfe875483
We don't need to fail hard in backend.http if the backend is configured
...
to run the web server externally but without spawning uswgi directly
(e.g. if nginx takes care of spawning and wrapping the uwsgi instance)
2019-08-14 20:02:13 +02:00
Fabio Manganiello
757e0ff9bf
Refactored SensorBackend and derived classes and added BME280 sensor
...
plugin and backend
2019-08-14 19:49:19 +02:00
Fabio Manganiello
e79430cdc4
Implemented tolerance threshold for lat/long/alt in GPS backend
2019-08-13 22:25:28 +02:00
Fabio Manganiello
228e656da8
Only import cv2 in the methods that require it (prevents camera.pi
...
and other camera derived plugins from failing if OpenCV is not installed)
2019-08-07 09:43:40 +02:00
Fabio Manganiello
fa9b816d06
Return the parsed raw YouTube URL only if available, otherwise the original URL
2019-08-04 17:36:06 +02:00
Fabio Manganiello
aebeadbcf7
args can be either a list or a tuple - treat accordingly
2019-08-04 17:17:09 +02:00
Fabio Manganiello
3a5a731bd2
pause and then play omxplayer in the play handler to make sure that all the proper events are generated upon play
2019-08-04 16:50:38 +02:00
Fabio Manganiello
39b0c3b741
Added GPS backend
2019-08-03 02:06:06 +02:00
Fabio Manganiello
c9dc1aac44
_last_read should always contain the full output of the plugin, not
...
the filtered output
2019-08-01 23:41:46 +02:00
Fabio Manganiello
a3271f0522
Only return the sensor data whose value has changed on the envirophat
...
backend
2019-08-01 23:33:36 +02:00
Fabio Manganiello
f06a851b61
Accelerometer and magnometer reads should be dict not set
2019-08-01 23:23:19 +02:00
Fabio Manganiello
675f899b5f
FIX: get_measurement should return a dict not a set
2019-08-01 23:17:04 +02:00
Fabio Manganiello
72d1b3cd2a
Filter out only selected sensors on the enviropHAT backend
2019-08-01 22:47:34 +02:00
Fabio Manganiello
bdadd2061c
Added EnviropHAT support
2019-08-01 22:40:41 +02:00
Fabio Manganiello
dcb4a36959
Replaced os.environ['HOME'] with os.path.expanduser('~') (Windows compatibility)
...
Solves #74
2019-07-29 00:03:01 +02:00
Fabio Manganiello
1ca7feb506
Small fix for the font size on mobile
2019-07-28 23:32:52 +02:00
Fabio Manganiello
0ab70cdbae
Kodi Application.SetVolume() expects an integer or a string, not a float
2019-07-25 23:54:32 +02:00
Fabio Manganiello
f5dbfe08bd
Bump version: 0.10.5 → 0.10.6
2019-07-25 18:40:05 +02:00
Fabio Manganiello
1f2f293778
Redirect mercury-parser.js stderr to stdout. Moreover, if an error occurs while parsing a link from an RSS feed we should report the link that raised the error, not the URL of the parent feed
2019-07-25 16:34:00 +00:00
Fabio Manganiello
44e27e6c62
Log the link we are trying to parse (useful for debugging parsing issues)
2019-07-25 18:23:28 +02:00
Fabio Manganiello
83db3f770c
Don't generate HTML/CSS wrapper for the content unless the output is a
...
destination file (HTML/PDF).
2019-07-25 18:08:30 +02:00
Fabio Manganiello
34433a363b
Call sound.stop_recording upon audio stream stop so we won't have hanging streams with no clients connected
2019-07-25 14:01:09 +02:00
Fabio Manganiello
beef06fad2
Log exception and parser output if it returns invalid JSON
2019-07-24 23:31:27 +00:00
Fabio Manganiello
d64c519660
Bump version: 0.10.4 → 0.10.5
2019-07-25 01:15:38 +02:00
Fabio Manganiello
6aaa2fa1ea
extract_content is supposed to be a boolean
2019-07-25 01:09:16 +02:00
Fabio Manganiello
5293f5b203
#73 : Implemented wrapper plugin for the new Node.js mercury-parser.
...
As the Mercury reader web API is deprecated, and the only available
implementation is the open source mercury-parser, node, npm and
@postlight/mercury-parser have to be added as dependencies for the
http.webpage plugin (or at least for the `simplify` action).
2019-07-24 19:02:53 +02:00
Fabio Manganiello
43ca3a6f94
Added support for streaming audio from an input source over HTTP
2019-07-23 18:22:00 +02:00
Fabio Manganiello
426f064459
"Remember me" options on session should leave the cookie for a longer
...
time (e.g. one year), it should be browser-session-only otherwise
2019-07-23 00:31:17 +02:00
Fabio Manganiello
a16fc65d37
Try to load the dev version of vue.js if available
2019-07-19 20:00:39 +02:00
Fabio Manganiello
57712b3693
Be more robust in case of Mercury API failures while parsing RSS feeds. TODO: the Mercury API has now been retired and replaced by a library, that however is only available for Node.js. Figure out how to wrap the new library in Python 3
2019-07-19 15:00:06 +00:00
Fabio Manganiello
f12c6db34f
Added camera web panel
2019-07-19 15:20:48 +02:00
Fabio Manganiello
5c3d32d05d
Fixed undefined reference
2019-07-19 13:50:01 +02:00
Fabio Manganiello
f86e2eb5a7
Implemented settings page and finalized multi-user support
2019-07-19 00:50:52 +02:00
Fabio Manganiello
cd9bdbb1c8
Fixed undefined reference
2019-07-17 14:57:50 +02:00
Fabio Manganiello
ca030b06e0
Added support (not working yet) for custom Google device actions and events
2019-07-17 14:56:04 +02:00
Fabio Manganiello
008fce70fa
Replaced references to in pydoc with format, as doesn't seem to work in RTD
2019-07-16 23:00:20 +02:00
Fabio Manganiello
a60e89806f
Fixed undefined reference
2019-07-16 22:43:27 +02:00
Fabio Manganiello
cc61032bec
Fixes for readthedocs build
2019-07-16 22:38:42 +02:00
Fabio Manganiello
95b5820783
Fixes for readthedocs build
2019-07-16 22:29:23 +02:00
Fabio Manganiello
9c4646bed5
Fixed documentation and added missing docs to the index
2019-07-16 20:28:00 +02:00
Fabio Manganiello
96c9d5460a
Log the underlying error cause too if get_plugin fails
2019-07-16 16:51:27 +02:00
Fabio Manganiello
4e8235a649
More robust logic to handle temporary database connection errors through retry mechanism
2019-07-16 16:40:56 +02:00
Fabio Manganiello
1c1ecc18df
Support for multi-users and authentication for HTTP pages
2019-07-15 14:12:00 +02:00
Fabio Manganiello
674c164fc1
Fixed pylint warnings
2019-07-13 22:36:45 +02:00
Fabio Manganiello
0826dd53a6
FIX: LifoQueue.get is blocking. Check if the queue is empty instead
2019-07-13 22:22:44 +02:00
Fabio Manganiello
55cd937a51
Made OMXPlayer plugin more resiliant in the case where the player has already terminated
2019-07-13 22:12:56 +02:00
Fabio Manganiello
0b05d7d8de
pylint warnings fixed
2019-07-13 18:25:42 +02:00
Fabio Manganiello
07dbe57641
pylint warnings fixed
2019-07-13 15:49:38 +02:00
Fabio Manganiello
8b2c6d333e
Lint warnings fixed
2019-07-13 14:22:43 +02:00
Fabio Manganiello
3c3496b19a
Revert "The active-glow animation takes too much CPU on music.mpd"
...
This reverts commit 4c3cd2fcf2
.
2019-07-13 12:27:43 +02:00
Fabio Manganiello
7666e8cb51
Including vue.min.js instead of vue.js
2019-07-13 12:25:02 +02:00
Fabio Manganiello
3479033170
Version bump 0.10.3 -> 0.10.4
2019-07-12 23:57:06 +02:00
Fabio Manganiello
654c61ec51
Standardized omxplayer returned attributes and volume management
2019-07-12 20:12:59 +02:00
Fabio Manganiello
50313580fd
Catch PortAudio exception in case of race conditions on closed streams and re-initialize the assistant object when they occur
2019-07-12 18:19:32 +02:00
Fabio Manganiello
bb3a39acb9
Better synchronization mechanism between push-to-talk and platypush when an event is matched and no assistant playback should follow up
2019-07-12 18:11:14 +02:00
Fabio Manganiello
2999e47a0f
Run the hotword detected sound in another thread, or it's likely to mess up with the timing of the hotword-assistant interaction
2019-07-12 17:44:59 +02:00