Commit Graph

259 Commits

Author SHA1 Message Date
Fabio Manganiello 2411b961e8
[WIP] Big, big refactor of the Bluetooth integration.
- Merged together Bluetooth legacy and BLE plugins and scanners.
- Introduced Theengs as a dependency to infer BLE device types and
  create sub-entities appropriately.
- Using `BluetoothDevice` and `BluetoothService` entities as the bread
  and butter for all the Bluetooth plugin's components.
- Using a shared cache of devices and services between the legacy and
  BLE integrations, with merging/coalescing logic included.
- Extended list of discoverable services to include all those officially
  supported by the Bluetooth specs.
- Instantiate a separate pool of workers to discover services.
- Refactor of the Bluetooth events - all of them are now instantiated
  from a single `BluetoothDevice` object.
2023-03-13 02:31:21 +01:00
Fabio Manganiello 1781a19a79
s/Entity.to_json/Entity.to_dict/g
stuff
2023-03-06 23:46:33 +01:00
Fabio Manganiello a5a923a752
Added `BluetoothDeviceNewDataEvent`.
These events handle the case where a Bluetooth device only publishes new
service data without advertising any additional updated properties.
2023-02-22 02:23:11 +01:00
Fabio Manganiello 613e32e7c1
Extended number of supported events and data fields in Bluetooth integration. 2023-02-18 01:15:10 +01:00
Fabio Manganiello a3aa186ddf
- Added support for `scan_pause`/`scan_resume` on `bluetooth` integration.
- Added `BluetoothDevice` as its own entity type.
2023-02-13 23:12:25 +01:00
Fabio Manganiello 575635fd6b
Defined `set` as a base method for all plugins that implement writeable entities 2023-02-11 04:04:21 +01:00
Fabio Manganiello b0cc80ceb0
Rewriting `bluetooth.ble` plugin to use `bleak` instead of `gattlib`. 2023-02-10 17:40:20 +01:00
Fabio Manganiello 3923a09831
- Expose methods on the bus module to publish/subscribe to notifications and entity updates
- Removed some redundant `pass` statements in Z-Wave derived event classes
2023-01-21 16:56:27 +01:00
Fabio Manganiello 4d762b81dc
EntityUpdateEvent traces can now be logged on INFO level
The EntityUpdateEvents generated by light.hue are now less noisy.
2023-01-21 14:50:05 +01:00
Fabio Manganiello b7f266cd92
Merge branch 'master' into 29-generic-entities-support 2023-01-07 22:31:36 +01:00
Fabio Manganiello a77206800d
Added HID plugin to support interaction with generic HID devices 2023-01-07 22:30:32 +01:00
Fabio Manganiello 9ddebb920f
Merge branch 'master' into 29-generic-entities-support 2022-12-17 00:51:51 +01:00
Fabio Manganiello 152ebdf737
[#236] Added `author` and `tags` attributes to new feed entry event and schema objects. 2022-12-17 00:21:32 +01:00
Fabio Manganiello b044fa4acf
s/disable_logging/logging_level/g on entity events. 2022-12-11 11:58:49 +01:00
Fabio Manganiello 2ee2a1d7b5
Replaced `disable_logging` with a more generic `logging_level`.
The `disable_logging` attribute was only available on events and
responses, and it could only either entirely disable or enable logging
for all the events of a certain type.

The new flag allows more customization by setting the default logging
level used for any message of a certain type (or `None` to disable
logging). This makes it possible to e.g. set some verbose events to
debug level, and the user can see them if they configure the application
in debug mode.

It also delegates the logging logic to the message itself, instead of
having different parts of the application handling their own logic.
2022-12-11 11:46:37 +01:00
Fabio Manganiello d4b540dd67
Replaced `disable_logging` with a more generic `logging_level`.
The `disable_logging` attribute was only available on events and
responses, and it could only either entirely disable or enable logging
for all the events of a certain type.

The new flag allows more customization by setting the default logging
level used for any message of a certain type (or `None` to disable
logging). This makes it possible to e.g. set some verbose events to
debug level, and the user can see them if they configure the application
in debug mode.

It also delegates the logging logic to the message itself, instead of
having different parts of the application handling their own logic.
2022-12-11 11:39:38 +01:00
Fabio Manganiello deb25196d2
Merge branch 'master' into 191-support-for-general-entities-backend-and-plugin 2022-09-28 02:17:10 +02:00
Fabio Manganiello e1aa214bad tidal-integration (#223)
Reviewed-on: #223
2022-09-16 21:48:09 +02:00
Fabio Manganiello 41acf4b253
Generate event ID as true random strings, not MD5 hashes of UUIDs 2022-09-05 03:08:39 +02:00
Fabio Manganiello c77746e278 If the output of a hook is null, make sure to normalize it an empty string before pushing it to Redis 2022-09-04 16:16:02 +02:00
Fabio Manganiello c5b12403d0
Implemented support for returning richer HTTP responses on webhooks.
A `WebhookEvent` hook can now return a tuple in the format `(data,
http_code, headers)` in order to customize the HTTP status code and the
headers of a response.
2022-09-01 01:37:18 +02:00
Fabio Manganiello a675fe6a92
Updated CHANGELOG 2022-08-31 00:49:08 +02:00
Fabio Manganiello c3fa3315f5
Implemented synchronization with webhook responses.
When a client triggers a `WebhookEvent` by calling a configured webhook
over `/hook/<hook_name>`, the server will now wait for the configured
`@hook` function to complete and it will return the returned response
back to the client.

This makes webhooks much more powerful, as they can be used to proxy
HTTP calls or other services, and in general return something to the
client instead of just executing actions.
2022-08-30 23:35:19 +02:00
Fabio Manganiello 1880a99052
Merge branch 'master' into 191-support-for-general-entities-backend-and-plugin 2022-08-29 01:41:47 +02:00
Fabio Manganiello c417d2f692
Implemented last Matrix integration features.
- Added presence, typing and seen receipt events.
- Added set display_name and avatar methods.
2022-08-28 15:17:11 +02:00
Fabio Manganiello 48ec6ef68b
Implemented proper support for encrypted media and added download method 2022-08-26 23:48:29 +02:00
Fabio Manganiello e4eb4cd7dc
More granular control over trusted devices, and added global synchronization event 2022-08-25 00:34:01 +02:00
Fabio Manganiello dc7ba881f1
Merge branch 'master' into matrix-integration 2022-08-12 14:39:13 +02:00
Fabio Manganiello 4e1e6da67e
Added recv action on websocket plugin 2022-08-12 14:16:01 +02:00
Fabio Manganiello cbe2e7bbfe
[WIP] 2022-08-04 03:08:54 +02:00
Fabio Manganiello c17d0080b5
Merge branch 'master' into matrix-integration 2022-08-04 02:14:22 +02:00
Fabio Manganiello 7c87238fec
match_condition should return immediately (no score-based fuzzy search) if an event condition is an exact match 2022-08-04 01:04:00 +02:00
Fabio Manganiello 719bd4fddf
[#217 WIP] Initial plugin implementation.
- Added initial synchronization and users cache.
- Added loop to poll for new events (TODO: use websocket after the first sync)
- Added login, sync and join actions
2022-07-14 01:50:46 +02:00
Fabio Manganiello f080478385
s/click_url/url/g in ntfy message definitions 2022-06-02 00:40:26 +02:00
Fabio Manganiello 2898a33752
s/click_url/url/g in ntfy message definitions 2022-06-02 00:36:14 +02:00
Fabio Manganiello 0919a0055d
Merge branch 'master' into 191-support-for-general-entities-backend-and-plugin 2022-06-02 00:13:43 +02:00
Fabio Manganiello 8be515c17b
[closes #219] Added ntfy integration 2022-06-01 23:01:29 +02:00
Fabio Manganiello c7970842d7
Disable logging by default for entity events (they can be quite spammy) 2022-04-30 02:13:20 +02:00
Fabio Manganiello 9981cc4746
Backend support for entities deletion 2022-04-24 21:38:45 +02:00
Fabio Manganiello 28026b0428
Trigger an EntityUpdateEvent when an entity state changes 2022-04-07 01:46:37 +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 29a7eff15a
Fixed/suppressed LGTM warnings 2022-02-08 21:51:37 +01:00
Fabio Manganiello 1038090ffd
LINT fixes 2022-02-07 15:51:12 +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 e9f6d9a8bc
Refactored RSS integration into its own `rss` plugin [closes #199] 2022-01-06 00:46:05 +01:00
Fabio Manganiello d7b273434b
[#203] Added IRC integration 2021-11-14 19:43:19 +01: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 04a5480d19 Resolve "[Feature Request] Gotify Push Intergration" 2021-10-01 23:50:53 +02:00
Fabio Manganiello fa17011b24 Fixed hierarchy for ngrok events 2021-10-01 23:39:07 +02:00
Fabio Manganiello 68831e9e81 [#196] Added ngrok integration 2021-09-25 01:34:45 +02:00
Fabio Manganiello 1a314ffd6b Fixed LGTM errors and warnings 2021-09-17 22:21:29 +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 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 fc1d9ad3e6 Added joystick.linux backend 2021-05-17 14:52:08 +02:00
Fabio Manganiello f296f4b161 Added generic `joystick.jstest` backend 2021-05-15 23:28:24 +02:00
Fabio Manganiello c006c4b368 Added zwave.mqtt plugin and backend [closes #186] 2021-04-12 02:45:59 +02:00
Fabio Manganiello 2a78f81a7b Major LINT fixes 2021-04-05 00:58:44 +02:00
Fabio Manganiello f8564c19cd Added log.http backend to monitor HTTP logs [closes #167] 2021-03-16 00:03:32 +01:00
Fabio Manganiello 352d421e61 Added file.monitor backend [closes #172]
The file.monitor backend leverages watchdog instead of the Linux-only
inotify API and it replaces the inotify backend.
2021-03-14 00:08:20 +01:00
Fabio Manganiello 347a4d2555 disable_logging=True for ZwaveNodeGroupEvent 2021-03-12 20:29:26 +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 3d6af00ee6 Disable logging of ZwaveValueEvent objects, as they tend to be very verbose 2021-03-11 17:53:39 +01:00
Fabio Manganiello 076cc6a63e Fixed regex format 2021-02-24 01:34:41 +01:00
Fabio Manganiello d0a579cf4b Fixed old regex sequences to r'' format 2021-02-24 01:28:46 +01:00
Fabio Manganiello 571a8ca9d1 Improvements on HTTP integration test. Plus, removed ApplicationStoppedEvent - it's unreliable and it could be delivered when the bus has already been stopped 2021-02-24 00:23:32 +01:00
Fabio Manganiello 2800bac3fb Make sure that all hanging threads, backends and services are stopped and their resources cleaned up when the application stops. 2021-02-23 23:09:26 +01:00
Fabio Manganiello fddf2006e4 Added headers argument to webhook event 2021-01-31 00:01:58 +01:00
Fabio Manganiello b4fc734a15 music.mpd panel migration - WIP 2020-12-26 15:03:12 +01:00
Fabio Manganiello 5d4f4b0378 Support for subscribe-once/unsubscribe frontend events mechanisms 2020-12-15 00:01:28 +01:00
Fabio Manganiello 45d998130b Event import fixed 2020-10-28 23:29:34 +01:00
Fabio Manganiello cc36325ca6 Added support for custom user events 2020-10-28 23:28:41 +01:00
Fabio Manganiello c269c62fe6 Refactored logging names 2020-09-27 01:33:38 +02:00
Fabio Manganiello 09f9e974b1 Camera plugins refactor 2020-09-25 17:19:43 +02:00
Fabio Manganiello c0f7cc0782 Added NextCloud integration [closes #149] 2020-09-10 11:10:26 +02:00
Fabio Manganiello 0af326fa11 Refactored inotify backend 2020-09-09 02:16:13 +02:00
Fabio Manganiello beeb7dca7c Removed unneeded import 2020-09-09 02:15:52 +02:00
Fabio Manganiello e9d4ed3911 Added more source fields to the RSS NewFeedEvent 2020-09-05 00:50:04 +02:00
Fabio Manganiello 907bc0f75b Added rtorrent integration [closes #120] 2020-09-03 13:08:42 +02:00
Fabio Manganiello d7806757c5 Polished mail integration 2020-09-02 01:34:18 +02:00
Fabio Manganiello ca168828de Added events on IMAP flagged/starred messages and extended IMAP plugin with remaining methods [closes #146] 2020-09-02 00:07:08 +02:00
Fabio Manganiello 1681f80728 Added IMAP plugin and generic mail check backend [links to #146] 2020-08-31 15:33:03 +02:00
Fabio Manganiello a9509fc959 Pass the repo reference to the Github event 2020-08-22 12:25:55 +02:00
Fabio Manganiello 2dc8fe9437 Added Github backend [closes #95] 2020-08-22 12:09:24 +02:00
Fabio Manganiello 0659996c48 Added DBus integration [closes #141] 2020-08-16 01:57:30 +02:00
Fabio Manganiello 20b095232d Support for extended information in zeroconf.discover_service 2020-08-14 15:52:24 +02:00
Fabio Manganiello 7e8bef40cd Added Zeroconf integration [closes #105] 2020-08-14 00:36:39 +02:00
Fabio Manganiello 82a9aa1232 Added clipboard backend 2020-05-23 23:11:42 +02:00
Fabio Manganiello aa66b81b7b Fixed webhook event management 2020-05-09 01:47:12 +02:00
Fabio Manganiello 1d24c878e6 Use both country and country_code on the event 2020-05-01 00:03:55 +02:00
Fabio Manganiello 3bb4c4434c Added Covid-19 country stats plugin and backend/monitor 2020-04-30 00:44:34 +02:00
Fabio Manganiello 1f1fefca9d Tensorflow plugin implementation WIP [#121]
TODO: Extend neural network implementation to work
also with e.g. input from images, sounds or binary
2020-03-21 19:50:59 +01:00
Fabio Manganiello f2b3000922 Handle numpy types in the JSON message encoder 2020-03-14 18:35:45 +01:00
Fabio Manganiello 141275ecdf Support for scanning QR-codes and barcodes through a camera plugin 2020-03-10 22:35:50 +01:00
Fabio Manganiello c26d456109 Added Linode integration [closes #116] 2020-03-09 21:34:06 +01:00
Fabio Manganiello 59e3f81202 Added bluetooth scanner backends [closes #112] 2020-03-08 23:37:57 +01:00
Fabio Manganiello b0339754b2 Implemented Mozilla DeepSpeech speech-to-text integration [closes #126] 2020-03-06 00:38:24 +01:00
Fabio Manganiello 124d2e356d Support for mic muted/unmuted event in Google assistant 2020-03-05 18:03:05 +01:00
Fabio Manganiello 2d3c61173d Added Zigbee web panel (closes #123) 2020-02-23 22:54:50 +01:00