Fabio Manganiello
c867a21104
If the value is a platypush Message, then converting it into a string would result in a JSON dumps that might break the interpreter (e.g. 'null' is a valid JSON keyword but it's not recognized by Python). Therefore first parse the variable from JSON
2018-06-06 18:50:09 +02:00
Fabio Manganiello
850a4f2146
A less convoluted and robust way to expand the context as variables
2018-06-06 17:14:44 +02:00
Fabio Manganiello
9984b75895
Added midi backend to support events from MIDI sources
2018-06-06 02:26:28 +02:00
Fabio Manganiello
8534a738d2
Refresh calendar each 15 minutes
2018-06-04 01:01:27 +00: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
cb0a9f5c63
Fixed logging level setting in pusher
2018-05-29 16:43:16 +00:00
Fabio Manganiello
3fe70dd184
Implemented MQTT backend and plugin, see issue #56
2018-05-27 12:21:41 +02:00
Fabio Manganiello
c73905d35d
More robust handling of card removed events
2018-05-27 11:47:57 +02:00
Fabio Manganiello
b04a355cc0
Pass also ATR and reader to SmartCardRemovedEvent
2018-05-27 11:25:29 +02:00
Fabio Manganiello
9801fe26fc
Generating SmartCardRemoveEvent as well when a scard is removed
2018-05-27 11:21:47 +02:00
Fabio Manganiello
8a6dcdbf5f
Generating SmartCardRemoveEvent as well when a scard is removed
2018-05-27 11:11:05 +02:00
Fabio Manganiello
755eb83093
Added support for smart card events
2018-05-27 10:47:58 +02:00
Fabio Manganiello
c1caa182be
Handling assistant no_response events
2018-05-25 18:26:02 +02:00
Fabio Manganiello
4f75b765b1
Added assistant conversation timeout event
2018-05-25 18:18:16 +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
306faff4af
Default tolerance for hand palm motion on Leap should be zero
2018-05-23 19:48:59 +02:00
Fabio Manganiello
57722fce2a
Added support for Leap Motion device events
2018-05-23 17:07:15 +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
18efdb1c70
Make sure the summary is always there
2018-05-21 09:47:50 +02:00
Fabio Manganiello
0accbfa66e
Logging traces on RSS parse
2018-05-21 09:27:13 +02:00
Fabio Manganiello
4643c10e11
Added Redis backend, issue #55
2018-05-14 20:09:25 +02: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
0878e5a3d1
Time to give Platypush a version bump
2018-05-13 14:32:25 +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
01c5bbadcd
Type should actually always be there
2018-05-13 11:49:42 +02:00
Fabio Manganiello
5e3b41c3ad
Made the Pushbullet backend more resilient in case of rogue messages with no type specified
2018-05-13 11:39:59 +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
bd761d420e
RSS digests are now optional
2018-05-07 19:44:34 +02:00
Fabio Manganiello
a3b83e8c57
Fixed sensors position
2018-05-07 19:21:58 +02:00
Fabio Manganiello
44596a6cfb
Improved style for temp/humidity sensors on the widget
2018-05-07 19:16:25 +02:00
Fabio Manganiello
20a9224ab5
Included support for temperature/humidity display on weather widget from sensor events
2018-05-07 18:55:50 +02:00
Fabio Manganiello
e4269a8d5d
Skip RSS items if published_parsed is not defined
2018-05-07 18:33:44 +02:00
Fabio Manganiello
f322f71447
- News widget max items is now configurable
...
- Update the news list whenever the loop over the current list is done
2018-05-07 18:16:30 +02:00
Fabio Manganiello
1b1016fba2
Added background blurred image if width < height
2018-05-07 17:18:01 +02:00
Fabio Manganiello
37c6e25ac3
Finally got a proper scaling for carousel widget pictures
2018-05-07 14:50:08 +02:00
Fabio Manganiello
e671a1294c
Reset min-width when cloning the element
2018-05-07 09:57:35 +02:00
Fabio Manganiello
19268f66a8
border-radius fix
2018-05-07 09:56:31 +02:00
Fabio Manganiello
af11358a76
Image carousel widget improvements
2018-05-07 09:54:30 +02:00
Fabio Manganiello
2483c6d612
Simplified websockets keep-alive logic. Just wait on recv() and clean up the websocket in case of a ConnectionClosed exception
2018-05-06 11:38:24 +02:00
Fabio Manganiello
177a359e4a
Only do article fade-in without fade-out+fade-in dance
2018-05-06 00:42:46 +02:00
Fabio Manganiello
27d5f674c5
Added __init__.py
2018-05-06 00:17:18 +02:00
Fabio Manganiello
31f2cbf8b1
Added __init__.py
2018-05-06 00:14:42 +02:00
Fabio Manganiello
0252cc03c4
Added __init__.py
2018-05-06 00:12:57 +02:00
Fabio Manganiello
88c5bc16f5
- Added rss-news dashboard widget
...
- Added summary field to the RSS entry
- Added support for custom dashboard backgrounds
- UX fixes + font change
2018-05-05 23:59:43 +02:00
Fabio Manganiello
ac958f98da
Added images carousel web widget
2018-05-05 04:37:22 +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
a67b301cd6
s/albumartist/album/g
2018-05-03 02:17:31 +02:00
Fabio Manganiello
dca41ea86e
A more robust logic for spotting new RSS items
2018-05-01 10:13:41 +02:00
Fabio Manganiello
d12ebe8810
Bold font for sensor values
2018-04-30 10:20:12 +02:00
Fabio Manganiello
79bfed3a1d
FE fixes on the sensors panel
2018-04-30 10:04:37 +02:00
Fabio Manganiello
b4bd1cb7bb
Added web UI for MCP3008 analog sensors values
2018-04-30 09:40:44 +02:00
Fabio Manganiello
b8cba8ec0c
Forgot an assignment
2018-04-30 01:43:23 +02:00
Fabio Manganiello
c0ef9e2373
poll_seconds should not have a default value
2018-04-29 23:58:33 +02:00
Fabio Manganiello
bd8d4649c5
Added MCP3008 backend
2018-04-29 23:51:53 +02:00
Fabio Manganiello
2f6565ec87
Added support for if-else constructs in procedures
2018-04-29 22:25:31 +02:00
Fabio Manganiello
ef75339fef
Fixed missing output= argument
2018-04-29 16:38:05 +02:00
Fabio Manganiello
cbe676a29f
Get the JSON/string output out of the Response object
2018-04-29 16:28:01 +02:00
Fabio Manganiello
cddd740666
Removed reference to self.device in backend.serial
2018-04-29 16:26:12 +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
4f19cd1324
Removed old reference to serial.Serial
2018-04-29 16:17:09 +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
514eb3d4e4
No need for a comma there
2018-04-29 12:32:25 +02:00
Fabio Manganiello
68c52fe102
- Importing Flask.request as http_request to prevent name clashes with
...
SQLAlchemy's request module
- All SQLAlchemy engine and connection setup done within get_new_items
to prevent different threads from creating and using the db instance
- Added check_same_thread to sqlite connection line to prevent
different-thread exceptions when the Flask main thread does some cleanup
2018-04-28 19:11:14 +02:00
Fabio Manganiello
e9425236a9
Removed additional file_name parameter
2018-04-26 15:54:40 +02:00
Fabio Manganiello
63b3d196e8
Video icons fixes
2018-04-26 15:29:10 +02:00
Fabio Manganiello
797d6a0fe8
Added an icon to the video results to show the type
2018-04-26 15:23:10 +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
34405b96f6
Removed unused mandatory parameters for VideoEvent constructor
2018-04-25 01:04:51 +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
4d45284131
Style fixes
2018-04-24 09:17:09 +02:00
Fabio Manganiello
1bda7b8346
Handlers & buttons
2018-04-24 01:30:04 +02:00
Fabio Manganiello
27398030e4
Fixed form name in CSS
2018-04-24 01:26:00 +02:00
Fabio Manganiello
e310ef0a04
Finalized video.omxplayer FE plugin
2018-04-24 01:23:06 +02:00
Fabio Manganiello
b5b61f0442
Wrong extension..
2018-04-24 01:05:37 +02:00
Fabio Manganiello
ebed6adf57
Added video.omxplayer frontend plugin
2018-04-24 01:03:50 +02:00
Fabio Manganiello
53f8f88bac
Added inotify files and paths monitoring backend
2018-04-23 16:32:35 +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
6ef97e9ddc
Assign the recursive output of _thread_func to response to make sure that the latest response is always returned - that means the successful response in case the previous one was a failure
2018-04-22 21:26:53 +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