Commit Graph

1029 Commits

Author SHA1 Message Date
Fabio Manganiello 8be515c17b
[closes #219] Added ntfy integration 2022-06-01 23:01:29 +02:00
Fabio Manganiello 7a0e39111d FIX: A feed entry may not necessarily have an `id` attribute 2022-05-06 14:38:25 +02:00
Fabio Manganiello da73a5f1b9
Replaced deprecated json_output arg in NextCloud client with response.json_data 2022-04-26 19:30:26 +02:00
Fabio Manganiello 486801653a
Added `.exception` action to logger plugin 2022-04-03 00:26:39 +02:00
Fabio Manganiello ffd23cf04d [#212] Support for asynchronous event monitoring on the GPIO plugin 2022-03-27 16:14:30 +02:00
Fabio Manganiello fdf6d8fb4e
Better auto-generated documentation and fixed docstring warnings 2022-03-03 20:26:25 +01:00
Fabio Manganiello 0d0797a465
Added Jellyfin integration 2022-03-01 01:32:50 +01:00
Fabio Manganiello 71cb73cf63
FIX: The CN of the organizer may not necessarily be set in calendar.ical 2022-02-17 10:55:35 +01:00
Fabio Manganiello 94bb3e0541
Added TOC to readme and more LGTM fixes 2022-02-09 21:06:49 +01:00
Fabio Manganiello 29a7eff15a
Fixed/suppressed LGTM warnings 2022-02-08 21:51:37 +01:00
Fabio Manganiello 786286eac6
Refactored D-Bus integration
- Added ability to listen for signals
- Improved introspection output
- `dbus` plugin and backend have now been merged
- Migrated from `dbus` to `pydbus`
2022-02-07 15:45:43 +01:00
Fabio Manganiello 1914322fda
FIX: get_plugin methods should never swallow errors in case of failed initialization 2022-02-07 01:47:38 +01:00
Fabio Manganiello 6656bb4ce5
Revert "Support for SSL flag on MQTT plugins without having to specify other tls_* options"
This reverts commit f3be4a50d8.
2022-01-14 21:53:24 +01:00
Fabio Manganiello f3be4a50d8
Support for SSL flag on MQTT plugins without having to specify other tls_* options 2022-01-14 21:39:16 +01:00
Fabio Manganiello a46ce79f0a
Added guard against null variable names 2022-01-06 00:58:14 +01:00
Fabio Manganiello e9f6d9a8bc
Refactored RSS integration into its own `rss` plugin [closes #199] 2022-01-06 00:46:05 +01:00
Fabio Manganiello 3e4b91cd6c
Removed pytz dependency 2022-01-05 18:04:32 +01:00
Fabio Manganiello e242dc53bf FIX: All timestamps should be isoformat strings, otherwise come comparisons may break 2022-01-05 13:39:13 +01:00
Fabio Manganiello ee0b6d237a FIX: Timestamps on calendar parsed objects should be of type string, not datetime 2022-01-05 13:35:10 +01:00
Fabio Manganiello 9ba2c18595 Better logic for timezone handling/conversion in calendar plugin 2022-01-05 13:31:07 +01:00
Fabio Manganiello 20fc3d91fc
Updated Chromecast plugin to work with pychromecast >= 10.0
pychromecast 10.0 introduced some [breaking changes](https://github.com/home-assistant-libs/pychromecast/pull/556/files)
in the declaration of the Chromecast object -
namely, the `device` attribute has been renamed to
`cast_info`. The code of ChromecastPlugin has been
updated to guarantee compatibility in both cases.
2021-12-11 22:14:47 +01:00
Fabio Manganiello 2560bfa03f
Plex searcher extended to include also audio tracks 2021-12-04 00:08:47 +01:00
Fabio Manganiello 46d8d575ba
Handle and log media workers search errors 2021-12-03 21:54:41 +01:00
Fabio Manganiello 6023fd3db3 Given the new object-oriented design of the LTR559 library, the sensor object should be initialized in __init__ and read upon get_measurement() 2021-11-28 15:11:20 +01:00
Fabio Manganiello f6057274a0 Variable name fix 2021-11-28 11:32:03 +01:00
Fabio Manganiello 2d9dff7d4c Fixed LTR559 integration after a change in the core library interface 2021-11-28 11:25:41 +01:00
Fabio Manganiello e615891bf3
Fixed missed assignment 2021-11-27 02:00:43 +01:00
Fabio Manganiello 02b5ec1d38
Fixed regex typo 2021-11-27 01:43:57 +01:00
Fabio Manganiello 2914a74b75
Replace relative links in converted markdown 2021-11-27 01:19:55 +01:00
Fabio Manganiello 1e1bf46f32
Fixed handling of URLs on Pushbullet notes 2021-11-26 19:07:44 +01:00
Fabio Manganiello 848b736d6e
Support for output format type on http.webpage.simplify even when outfile is not specified 2021-11-26 19:07:15 +01:00
Fabio Manganiello f9f9c38a8b
Improved robustness of ICal event parser 2021-11-21 23:50:35 +01:00
Fabio Manganiello 518d9f20c6
Added docs for config plugin 2021-11-17 23:59:17 +01:00
Fabio Manganiello 6ba3128ac4
[#201] Added Mailgun integration 2021-11-14 22:40:59 +01:00
Fabio Manganiello d7b273434b
[#203] Added IRC integration 2021-11-14 19:43:19 +01:00
Fabio Manganiello acdc636b1f Resolve "Mastodon integration" 2021-11-07 01:00:29 +01:00
Fabio Manganiello 6db070db1c
- Fixed `switchbot.status` to handle virtual devices
- Fixed StrippedString schema field serialize handler

- Fixed rendering of lists in documentation schemas
2021-10-26 00:48:05 +02:00
Fabio Manganiello 952a2a9379
- Render nested attributes in schemas
- Provide relevant examples for schema fields with no description/examples based on the field type

- Fixed RST warnings in Slack plugin

- Fixed list of events in ngrok plugin
2021-10-24 11:53:38 +02:00
Fabio Manganiello 1906876969
FIX: Replaced VLC event.u occurrences
Newer versions of python-vlc have apparently
removed the `event.u` union object from the
events dispatched by the player, resulting in
player callback failures.

The occurrences of `event.u` have therefore
been replaced with the player methods to
correctly retrieve the current state.
2021-10-17 17:56:57 +02:00
Fabio Manganiello f9ce03919b
FIX: Various omxplayer fixes
- Better synchronization with the player upon `play` request - wait until the play started event is received before returning the status

- DBus exceptions should be caught and handled in the status call
2021-10-17 16:54:57 +02:00
Fabio Manganiello c3681e7b2a
FIX: Don't try and set the volume of the omxplayer when the instance may not be ready yet 2021-10-17 16:38:38 +02:00
Fabio Manganiello 144700b693
media.mpv should send MediaPlayRequestEvent with player and plugin parameters 2021-10-17 16:17:20 +02:00
Fabio Manganiello 4a5bb766af
Fixed some media plugins inconsistencies
- Removed replication of logic between media.get_youtube_url (action) and media.get_youtube_video_url (internal method)

- Added differentiation between MediaPlayEvent and MediaResumeEvent
2021-10-17 16:03:57 +02:00
Fabio Manganiello 8c339d0d55
Added support for custom YouTube preferred video/audio formats 2021-10-17 02:53:38 +02:00
Fabio Manganiello 64c402b1c0 [#115] Added `google.maps.get_travel_time` method 2021-10-16 22:35:37 +02:00
Fabio Manganiello 31ef9515f8 Added support for virtual IR devices in Switchbot plugin 2021-10-02 23:44:13 +02:00
Fabio Manganiello 04a5480d19 Resolve "[Feature Request] Gotify Push Intergration" 2021-10-01 23:50:53 +02:00
Fabio Manganiello 68831e9e81 [#196] Added ngrok integration 2021-09-25 01:34:45 +02:00
Fabio Manganiello d18245b15f Fixed Slack plugin docs 2021-09-22 00:38:34 +02:00
Fabio Manganiello f147c44a8a Fixed docs issues 2021-09-22 00:19:14 +02:00
Fabio Manganiello 1a314ffd6b Fixed LGTM errors and warnings 2021-09-17 22:21:29 +02:00
Fabio Manganiello 85af031c26 Empty torrent responses can sometimes include the objects as an empty list instead of an empty dict 2021-09-17 10:47:01 +02:00
Fabio Manganiello 7b8938cb12 Fixed LGTM errors and warnings 2021-09-17 00:47:33 +02:00
Fabio Manganiello 3bfc5b83ef Moved to manifest files for describing plugins and backends and their dependencies 2021-09-16 17:53:40 +02:00
Fabio Manganiello a8064d2add parse_magnet_uri can return either a metadata object or a dict depending on the libtorrent version 2021-08-05 20:23:54 +02:00
Fabio Manganiello 90ec108580 Added Slack integration 2021-07-28 01:09:09 +02:00
Fabio Manganiello 371dd6da0a Added `sun` plugin [closes #194] 2021-07-22 01:02:15 +02:00
Fabio Manganiello 1483d602f8 Added music.spotify UI integration 2021-07-20 01:35:21 +02:00
Fabio Manganiello 35c4a30a63 Added music.spotify plugin and refactored MusicPlugin 2021-07-17 22:14:15 +02:00
Fabio Manganiello 03631bcebc Fixed import error in Adafruit.IO 2021-07-04 23:49:18 +02:00
Fabio Manganiello a39452124d Refactored PCA9685 backend 2021-05-17 15:32:43 +02:00
Fabio Manganiello 7ee869ce42 More robust logic for smooth transients on PCA9685 2021-05-16 18:14:02 +02:00
Fabio Manganiello df36a9f811 s/execute/write/ 2021-05-16 17:53:22 +02:00
Fabio Manganiello abf793e703 Added get_channels() method to PCA9685 driver 2021-05-16 17:51:51 +02:00
Fabio Manganiello 132c659d3c Reset self._pca to None on deinit() 2021-05-16 17:42:05 +02:00
Fabio Manganiello acc4f1c0e3 Added PCA9685 PWM driver plugin 2021-05-16 17:29:03 +02:00
Fabio Manganiello 9eab526e47 Specify propertyKey on set_value() if exposed/required by the value payload [see #188] 2021-05-13 22:38:04 +02:00
Fabio Manganiello 8f6404d0b1 Revert "Support for custom timeout on MQTT message publish" (already implemented in the current logic) 2021-05-13 21:49:24 +02:00
Fabio Manganiello b42c491390 Support for custom timeout on MQTT message publish 2021-05-13 21:33:08 +02:00
Fabio Manganiello 18e99c6f12 Added new Google Fit scopes for sleep and heart rate read 2021-05-10 21:21:03 +02:00
Fabio Manganiello 664ce4050d Added Switchbot plugin 2021-05-10 18:43:00 +02:00
Fabio Manganiello 46aef7c8b5 autodoc fixes 2021-05-08 21:38:32 +02:00
Fabio Manganiello ce882381c0 Fixes to torrent search + SASS library migration
- Support for custom PopcornTime API mirror/base URL.

- Full support for TV series search.

- Fixed torrent search (now using a different PopcornTime API mirror).

- Migrated SASS engine from `node-sass` (currently deprecated and broken on Node 16) to `sass`.

- Fixed alignment of Z-Wave UI header on Chrome/Webkit.
2021-05-06 23:18:47 +02:00
Fabio Manganiello 2224681e3c Removed OZW type references altogether to prevent import errors 2021-04-18 02:27:33 +02:00
Fabio Manganiello 68c44c0c3c OZW objects should be imported inside of the `ZwavePlugin` class to prevent `ImportError` on other Z-Wave plugins that don't depend on OZW 2021-04-18 02:19:53 +02:00
Fabio Manganiello 02a22d4a88 The zwave and zwave.mqtt plugins should extend a common abstract class instead of having a zwave.mqtt -> zwave functional dependency that introduces the PyOWZ dependency into zwave.mqtt 2021-04-16 20:54:07 +02:00
Fabio Manganiello c006c4b368 Added zwave.mqtt plugin and backend [closes #186] 2021-04-12 02:45:59 +02:00
Fabio Manganiello f1faa1141e More LINT fixes 2021-04-06 21:10:48 +02:00
Fabio Manganiello 2a78f81a7b Major LINT fixes 2021-04-05 00:58:44 +02:00
Fabio Manganiello 99831bf0c7 Fix compatibility with all versions of websocket-client, regardless of the list of arguments required by the callbacks (either ws as a first argument or not) 2021-04-02 19:27:25 +02:00
Fabio Manganiello 4313b6e883 media.vlc.status should synchronize on _stop_lock, or it may fail in the middle of its execution if the VLC session is being freed 2021-03-24 15:02:05 +01:00
Fabio Manganiello 9e46ab0b60 Wait for _on_stop_event in media.vlc.stop before releasing the instance 2021-03-16 22:34:03 +01:00
Fabio Manganiello 14f1c44378 - If a Z-Wave event includes an explicit value update then explicitly set that value on the node, in order to prevent issues with Z-Wave value updates not yet propagated to the node structure
- Added Z-Wave switch component
2021-03-16 20:52:30 +01:00
Fabio Manganiello f92d19a24e media.vlc.stop should be synchronized on the _stop_lock and should call _reset_state instead of simply setting self._player = None 2021-03-16 19:42:59 +01:00
Fabio Manganiello 1d3d741212 Fixed Sphinx build warnings 2021-03-14 01:09:01 +01:00
Fabio Manganiello cef310ffd7 Added missing methods docs 2021-03-12 01:53:16 +01:00
Fabio Manganiello 02f6845e72 - Added weather.openweathermap plugin and backend, as a replacement for Darksky [closes #177]
- Added note to the Darksky plugin about the decomissioning of the API by the end of the year
2021-03-12 01:31:26 +01:00
Fabio Manganiello 4902475caf Added active_scan mode to bluetooth.scanner backend to actively perform a lookup name on each device discovered at least once [see #174] 2021-03-09 11:50:59 +01:00
Fabio Manganiello d860d8aef1 Added SmartThings switch web plugin 2021-03-05 21:29:32 +01:00
Fabio Manganiello 47ba13d985 calendar.ical.get_upcoming_events should fail hard if there was any exception/unsuccessful response
The error should not be swallowed and it should be instead propagated up
to calendar.get_upcoming_events, if it's called from that context. And
calendar.get_upcoming_events should be in charge of handling the
exceptions and make sure that failing to retrieve the events for one
calendar doesn't make the whole method fail.
2021-03-05 11:16:14 +01:00
Fabio Manganiello 4ada1c663d Added SmartThings plugin [#148] 2021-03-05 02:23:28 +01:00
Fabio Manganiello 210cefc1a4 General improvements on the Zeroconf plugin and backend 2021-03-03 19:20:12 +01:00
Fabio Manganiello 0e3845ef88 The vlc _reset_state logic should be wrapped within a lock context to make sure that two threads don't try to deallocate the context at the same time 2021-02-28 20:56:32 +01:00
Fabio Manganiello 833f810d4b Fixed stop handler for vlc plugin.
For some reason, vlc event handlers are not re-entrant (https://github.com/oaubert/python-vlc/issues/44#issuecomment-378520074).

This means that the vlc API can't be used from an event handler,
and that an event handler that reacts to stop/end-of-stream by
releasing the player and the vlc instance will likely get stuck
and the app may eventually die with SIGSEGV.

Because of this design limitation on the vlc side, the plugin has
to run another thread in the main app that monitors the stop event
set by the event handler and releases the resources appropriately.
2021-02-28 13:03:10 +01:00
Fabio Manganiello d190560536 Support for media.vlc.play toggling paused state if called with no arguments, and MediaPlayRequestEvent should have player and plugin attributes set 2021-02-28 01:40:29 +01:00
Fabio Manganiello e0e3081eb1 VLC volume should strictly be an integer 2021-02-28 01:31:00 +01:00
Fabio Manganiello 66445cb4e4 - Do not parse Zeroconf info at all if not available
- Temporarily skip test_procedure until I find a proper way to clean up the status from the previous run and start a fresh platform
2021-02-27 21:11:37 +01:00
Fabio Manganiello f93df2fd49 Avoid the loop on the Zeroconf addresses object if the object is None (e.g. in the context of some tests) 2021-02-27 20:55:38 +01:00
Fabio Manganiello 0d806eeb6e - Removed setUp method from test_event_parse - let the parent setUp run and properly start the daemon
- More resilient logic in case some entries in the Zeroconf registry are still loading and the info object is still None
2021-02-27 20:51:48 +01:00
Fabio Manganiello b27c9ee630 Make sure to always run .quit() on the _player instance on stop/exit event, even if the player is already stopped, otherwise the OMXPlayer session may be hanging in the background and prevent new DBus connections 2021-02-22 14:22:45 +01:00