Commit graph

1466 commits

Author SHA1 Message Date
43289a3b55
Scan always at least for 10 seconds before failing on get_device. 2023-03-23 17:41:37 +01:00
6267943786
Wrap BleakError exceptions into AssertionError. 2023-03-23 17:40:30 +01:00
d6805a8b18
Added support for custom Bluetooth device plugins. 2023-03-23 17:10:37 +01:00
af125347d6
If no matching services are found when connecting to a device, default to BLEManager.
GATT characteristics are not necessarily exposed as services.
2023-03-23 13:00:26 +01:00
a2a5fce6cb
Added Apple Continuity to the list of blacklisted manufacturers/models 2023-03-22 22:55:19 +01:00
5c23d3aa87
metadata and rssi fields on BLEDevice have been deprecated.
Changed the BLE beacon parsing logic to read those fields from
`AdvertisementData` instead of `BLEDevice`.
2023-03-22 22:39:01 +01:00
65bc3ae06d
Noisy beacons device configuration should look both at manufacturer and model. 2023-03-22 22:37:46 +01:00
e10bec88c0
Noisy beacons logging trace moved from info to debug. 2023-03-22 16:31:57 +01:00
99cfd247a5
A more effective logic to exclude noisy BLE beacons.
This includes BLE beacons sent from all Google/Apple/Microsoft/Samsung
beacon networks in all of their variants.
2023-03-22 15:35:02 +01:00
01d323fad0
Passing a boolean exclude_known_noisy_beacons to bluetooth plugin.
The logic to exclude BLE beacons from randomized devices needs to be a
bit more granular and not limited only to the reported device
manufacturer.
2023-03-22 15:29:19 +01:00
f6e09d34e4
A more clever logic of parsing the manufacturer for BLE devices.
1. Check the manufacturer parsed via Bleak/Theengs
2. Check the MAC address prefix in the oui numbers table
3. Check from the reported `manufacturer_data`
2023-03-22 14:16:00 +01:00
f7e8cfe5a7
Don't include unit in BLE sensors when they are matched against the native type.
It's likely to just include the native type name anyway.
2023-03-22 14:14:59 +01:00
c750d83188
Prevent name collisions on bluetooth.ServiceClass. 2023-03-22 03:27:25 +01:00
174b1ee6a9
Use a default list of excluded Bluetooth manufacturers. 2023-03-21 16:03:01 +01:00
b1cb7ef847
Added a list of excluded_manufacturers to BluetoothPlugin. 2023-03-21 14:32:45 +01:00
3743ee4f00
s/TheengsGateway/TheengsDecoder/g now that the pip package has been published. 2023-03-20 01:41:21 +01:00
12096f2dbe
Don't fail hard when device disconnection fails. 2023-03-19 12:56:53 +01:00
40f81b105f
Set the connected flag when connecting/disconnecting from a service. 2023-03-19 12:56:31 +01:00
9d66b63266
BluetoothService attributes fixes.
BluetoothService IDs should always be in the format `address::uuid` and
the name should always be in title format.
2023-03-19 12:55:14 +01:00
6e9263c4e4
A more elegant logic to infer the manufacturer name. 2023-03-19 12:54:52 +01:00
b568876474
Use a service's UUID as a name instead of Unknown if the service is unknown. 2023-03-19 12:54:09 +01:00
4144e4f842
Fixed self._ip_to_dev expansion 2023-03-19 12:47:07 +01:00
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
4a8da80c7c
Don't join self._thread on stop in RunnablePlugin if self._thread = current_thread 2023-03-11 23:45:46 +01:00
72c55c03f2
[WIP] Refactoring/extending models and parsers for Bluetooth entities. 2023-03-03 02:10:11 +01:00
a688e7102e
Changed default poll_interval for RunnablePlugin.
30 -> 15 seconds.
2023-03-03 02:00:48 +01:00
15fadb93bb
Added stand-alone connect and disconnect actions to bluetooth. 2023-02-25 01:59:35 +01:00
2dfb389630
Added remaining bluetooth entity types in _mappers.py. 2023-02-23 21:20:41 +01:00
a0556d3a42
Added PresenceSensor entities. 2023-02-23 01:42:26 +01:00
886b930e2f
Support for bluetooth devices with multiple temperature sensors. 2023-02-23 01:27:31 +01:00
56d693032a
Added DewPointSensor entities. 2023-02-23 01:23:04 +01:00
d212276247
Added PressureSensor entities. 2023-02-23 01:12:27 +01:00
dd3f683006
Added unit to bluetooth mappers whenever available. 2023-02-23 01:04:33 +01:00
d961e2a997
Added TimeDurationSensor entity. 2023-02-23 01:02:13 +01:00
c3e16f9f9d
Added support for heart rate sensor entities. 2023-02-23 00:55:55 +01:00
3dab94c346
Added StepsSensor detection to bluetooth. 2023-02-23 00:50:06 +01:00
dcab766cef
Only scan for the configured Bluetooth service UUIDs. 2023-02-22 03:36:16 +01:00
9776921836
Better way of handling with RawSensor in bluetooth integration. 2023-02-22 02:26:51 +01:00
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
b2ffc08c89
s/MultiValueSensor/CompositeSensor/g on smartthings 2023-02-22 02:18:12 +01:00
7fa545d7f8
Merge branch 'master' into 29-generic-entities-support 2023-02-22 00:46:33 +01:00
b4627ecd04 Removed deprecated use_unicode parameter from MPDClient 2023-02-20 20:35:33 +01:00
aa0b909fff
Use the TheengsDecoder to parse Bluetooth packets and map services to native entities. 2023-02-20 20:27:17 +01:00
73bf2446bd
Wrap bluetooth.connect in a per-device locked section. 2023-02-19 23:11:19 +01:00
9112239ac3
Better exception management in AsyncRunnablePlugin.
Exceptions that cause the termination of the plugin's loop should always
be logged as such, unless the plugin is supposed to stop and various
exceptions may occur upon teardown.
2023-02-19 23:03:27 +01:00
613e32e7c1
Extended number of supported events and data fields in Bluetooth integration. 2023-02-18 01:15:10 +01:00
7adae272a4
Merge branch 'master' into 29-generic-entities-support 2023-02-15 22:24:41 +01:00
08553f84b9
Added timeout parameter to websocket.send. 2023-02-15 22:23:15 +01:00
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
1d0be5c929
- Simplified prototype for EntityManager.set
- Added small documentation/annotations notes to the `Plugin` module.

- Small LINT fixes
2023-02-11 21:35:00 +01:00
575635fd6b
Defined set as a base method for all plugins that implement writeable entities 2023-02-11 04:04:21 +01:00
b0cc80ceb0
Rewriting bluetooth.ble plugin to use bleak instead of gattlib. 2023-02-10 17:40:20 +01:00
f30e077a5a
Support for custom Bluetooth adapter on switchbot.bluetooth. 2023-02-08 23:01:05 +01:00
8469a1027f
Migrated/refactored switchbot.bluetooth integration.
- Out `gattlib` + `pybluez`, in `bleak`. It's not platform-dependent, it doesn't
  require libboost and other heavy build dependencies, and it doesn't require the
  user that runs the service from having special privileges to access raw
  Bluetooth sockets.

- Better integration with Platypush native entities. The devices are now mapped
  to write-only `EnumSwitch` entities, and the status returns the serialized
  representation of those entities instead of the previous intermediate
  representation.
2023-02-08 22:42:00 +01:00
e49a0aec4d
Various improvements.
- Better synchronization logic on stop for `AsyncRunnablePlugin`.
- Fixed several thread names by dropping `prctl.set_name` in favour of
  specifying the name directly on thread creation.
- Several LINT fixes.
2023-02-08 00:46:50 +01:00
9d028af524
Removed last reference of SwitchPlugin 2023-02-05 23:10:35 +01:00
419a0cec61
More LINTing
Better prototype for `MultiLevelSwitchEntityManager.set_value`
2023-02-05 23:07:43 +01:00
fde834c1b1
More LINT fixes + refactors 2023-02-05 22:00:50 +01:00
b8fca97891
Default poll_interval for RunnablePlugin set to 30 seconds 2023-02-05 17:31:43 +01:00
06dfd1a152
Added support for more entities in switchbot 2023-02-05 15:34:50 +01:00
2047b9b76c
[WIP] Refactoring switchbot plugin as a runnable plugin + entity manager 2023-02-04 22:22:51 +01:00
0311d87bc3
The switch.wemo integration now extends SwitchEntityManager 2023-02-04 00:58:28 +01:00
de2849546a
LINT fixes 2023-02-04 00:26:48 +01:00
a160d3217e
Removed legacy get_sensor_plugins and get_switch_plugins actions 2023-02-03 22:54:42 +01:00
6ef2feea71
LINT fixes for utils plugin 2023-02-03 18:08:19 +01:00
3db9c58d31
[WIP] Converted switch.tplink plugin.
`switch.tplink` converted to a `RunnablePlugin` that implements
`SwitchEntityManager`.
2023-02-03 02:20:20 +01:00
be3b99326f
[WIP] Refactoring @manages annotation into a proper EntityManager hierarchy 2023-02-02 23:21:12 +01:00
8aff181956
Merged zwave.mqtt backend into the zwave.mqtt plugin 2023-01-29 02:34:48 +01:00
0e56d0fff6
Double-check if self._thread != None on stop on the ntfy thread
Race conditions may occur here
2023-01-27 22:12:34 +01:00
341e749d23
Merged the zigbee.mqtt backend into the plugin.
- Deprecated the old `zigbee.mqtt` backend
- Black style for the `mqtt` backend
2023-01-27 01:59:57 +01:00
afdeb91f66
Implemented remaining supported entities for the smartthings integration 2023-01-26 22:10:02 +01:00
ba31dff06a
Major refactor + fixes for smartthings 2023-01-24 23:56:28 +01:00
bb637a1411
Defined a unique stop_timeout (default=5) for RunnablePlugin 2023-01-22 14:28:16 +01:00
6d4cf64253
More work on smartthings.
- Added support for `Battery` entities
- Fixed saturation range for `Light` entities
- Parsing `min`/`max`/`unit` from the status attributes, if available
2023-01-22 01:01:47 +01:00
ddd516a677
Added polling/RunnablePlugin logic to smartthings 2023-01-22 00:09:10 +01:00
247912799f
Refactored light.hue integration so EntityUpdateEvents won't be triggered on every call to _get_lights 2023-01-21 14:48:33 +01:00
a892bad34c
Refactoring smartthings plugin to support more entity types 2023-01-21 14:09:26 +01:00
9a5e2899e8
Support for external_url and image_url on entities 2023-01-15 20:01:47 +01:00
9df4d5b5b8
Zigbee entities should be marked as unreachable also if they are currently being interviewed 2023-01-14 22:35:17 +01:00
68497e6388
Normalize the light devices' IEEE addresses before retrieving the associated devices 2023-01-13 23:28:12 +01:00
22a566a88b
More refactors and fixes for zigbee.mqtt 2023-01-13 02:58:47 +01:00
38438230d7
The batch of entities currently being processed should have no duplicate keys 2023-01-11 01:22:56 +01:00
4a2851231c
Large refactor of zigbee.mqtt
- Support for device options as children configuration entities
- Refactored switches management, removed legacy `switches` plugin
  integration, and supporting multiple binary switches for one device
2023-01-09 01:02:49 +01:00
66000a0774
Merge branch 'master' into 29-generic-entities-support 2023-01-08 00:23:57 +01:00
7d90b274ae
Make sure that any existing device monitor is terminated upon disconnection 2023-01-07 23:48:02 +01:00
72454a6583
Merge branch 'master' into 29-generic-entities-support 2023-01-07 23:31:31 +01:00
40bdc3b7f3
Always wait 5 seconds (regardless of the poll interval) in case of errors.
Also, print the error only on the first occurrence, to prevent log
spamming.
2023-01-07 23:21:59 +01:00
e8f767d819
Take into account the notify_only_if_changed parameter 2023-01-07 23:11:34 +01:00
c5cf9803ff
Take into account the notify_only_if_changed parameter 2023-01-07 23:09:42 +01:00
6630873e2c
Merge branch 'master' into 29-generic-entities-support 2023-01-07 22:39:46 +01:00
2ee810bdc4
Added missing event to documentation 2023-01-07 22:39:23 +01:00
b7f266cd92
Merge branch 'master' into 29-generic-entities-support 2023-01-07 22:31:36 +01:00
a77206800d
Added HID plugin to support interaction with generic HID devices 2023-01-07 22:30:32 +01:00
01727f53bc
Support for is_configuration flag on zwave entities 2023-01-03 23:13:34 +01:00
0f60bc2131
Don't delete external_id and data attributes unless they are set 2023-01-02 21:01:46 +01:00
b0671354ea
(Tentative) support for zwave light colors 2023-01-02 12:50:01 +01:00
f9b6799a18
A more robust and scalable way of merging/handling the currentValue/targetValue duality in zwave.mqtt 2023-01-01 12:45:41 +01:00
9ddebb920f
Merge branch 'master' into 29-generic-entities-support 2022-12-17 00:51:51 +01:00
152ebdf737
[#236] Added author and tags attributes to new feed entry event and schema objects. 2022-12-17 00:21:32 +01:00
cf9d34d38e
A more robust logic to parse zwave.mqtt value attributes. 2022-12-10 16:21:29 +01:00
c4f649a0d5
autoflush should be passed as an option to db.get_session. 2022-12-10 16:20:14 +01:00
00a918dd20
Support for the new way of reporting events on ZWaveJS-UI.
The most recent versions of ZwaveJS-UI don't send the `hexId` of the
node on node change events. We have therefore to infer it from the
reported `dbLink`.
2022-12-04 20:56:52 +01:00
3a92bf59ca
Support for the new way of reporting events on ZWaveJS-UI.
The most recent versions of ZwaveJS-UI don't send the `hexId` of the
node on node change events. We have therefore to infer it from the
reported `dbLink`.
2022-12-04 20:48:42 +01:00
1ab85f99d9
Support for illuminance sensor entities on zigbee.mqtt 2022-11-30 02:16:56 +01:00
09d70e2ff1
The zwavejs2mqtt project has been renamed zwave-js-ui
Change the documentation accordingly
2022-11-30 02:04:48 +01:00
b6370b51da
Extended humidity sensors detection for zigbee.mqtt 2022-11-30 01:24:35 +01:00
16c24d799d
Removed custom formatting for child zigbee/zwave entity names
The parent->child relationship is now modelled on the database itself,
so we no longer need value names specifically formatted as
`[DeviceName] ValueName` - the UI will take care of it.
2022-11-30 01:02:25 +01:00
080b21ab70
Added support for reachable flag on zwave.mqtt child entities 2022-11-30 01:01:45 +01:00
2b532c1947
Implemented parent/child support for zigbee.mqtt entities 2022-11-30 00:55:04 +01:00
cc156a53a1
Support for parent/children relationships on zwave.mqtt entities 2022-11-28 21:42:11 +01:00
0e0c90f0f2
zwave.mqtt additions
- Infer entity types on the basis of their semantic type (bool, decimal,
  list) and read-only attribute (read-only bool is `BinarySensor`,
  read-write bool is `Switch`, read-only decimal is `NumericSensor`,
  read-write decimal is `Dimmer`, etc.) instead of trying to infer it
  from the command class. Only a small set of command classes (like
  configurations, vendor-specific or internal values) will be excluded.
  This should greatly increase the number of supported values.

- Added support for `EnumSwitch` entities.

- Added inference for illuminance and humidity sensors.
2022-11-27 22:53:53 +01:00
ba1681fc22 Merge branch 'master' into 29-generic-entities-support 2022-11-21 12:36:01 +01:00
02f89258b8
FIX: Task.set_name only works on Python >= 3.8 2022-11-21 09:49:57 +01:00
ae17a12c12
FIX: UserManager.get_users
`UserManager.get_users` should not return a reference to the query
object, since the query object will be invalidated as soon as the
connection is closed.

Instead, it should return directly the list of `User` objects.
2022-11-21 00:57:00 +01:00
b9e6614b04
Added support for EnumSensor entities 2022-11-21 00:04:07 +01:00
d171000a0e
Initial support for sensor entities in zwave.mqtt 2022-11-14 22:08:15 +01:00
a7bc4f443c
Imports order 2022-11-14 21:30:43 +01:00
45d0e4445b
Sorted entity type names 2022-11-14 00:46:58 +01:00
211372e472
Added support for dimmers on zigbee.mqtt 2022-11-13 18:48:36 +01:00
24f5a8283c
Added PRAGMA foreign_keys = ON before deleting entities on SQLite
SQLite doesn't enable foreign keys cascade on delete by default.
2022-11-13 01:18:45 +01:00
69e097707d
Don't lock read session from the main database 2022-11-12 16:10:57 +01:00
86edd70d93
Fixed session/concurrency management on the main SQLite db
- The `declarative_base` instance should be shared
- Database `session_locks` should be stored at module, not instance
  level
- Better isolation of scoped sessions
- Enclapsulated `get_session` method in `UserManager`
2022-11-12 15:36:17 +01:00
6b7933cd33
Using a different SQLite database for entities
This prevents multiprocessing/concurrency issues when modifying the same
database file both from the main process and from the web server process
2022-11-12 02:00:55 +01:00
02a4c9f667
Added is_query_disabled attribute to entities 2022-11-11 20:40:36 +01:00
00a43dd1f8
Implemented EnumSwitch entity type
Done for `zigbee.mqtt`, other plugins will follow
2022-11-11 01:46:38 +01:00
801ed05684
Added support for binary sensors (in zigbee.mqtt for now) 2022-11-05 01:47:50 +01:00
0f19104512
Improved zigbee.mqtt node property queries.
Now handling cases of nodes with values having multiple levels (> 1) of
nested properties.
2022-11-04 22:51:40 +01:00
5ca3c06f96
Normalize device names in set_lights 2022-11-02 23:32:21 +01:00
d5f8d55b4b
Fixed zigbee.mqtt light entity conversion 2022-11-02 23:07:12 +01:00
636d1ced3a
A more robust way of splitting devices provided in the <ieee_address:value> format 2022-11-02 22:49:19 +01:00
02abef71e3
Fixes for zigbee devices polling
- Don't publish a `get` request if the device has no exposed queriable
  attributes.

- Perform the recursive build of the `get` request payload before
  checking for the `access` attribute.
2022-11-02 21:54:47 +01:00
64513be6b8
Initial implementation of sensor entities.
Implemented (at least in `zigbee.mqtt`, for now):

- `TemperatureSensor`
- `HumiditySensor`
- `VoltageSensor`
- `CurrentSensor`
- `EnergySensor`
- `PowerSensor`
- `NumericSensor` (generic fallback 1)
- `RawSensor` (generic fallback 2)
- `Sensor` (root class)
2022-11-02 16:38:17 +01:00
d7214c4c83
Fix for No converter available warnings on zigbee2mqtt
Only include readable (not state-only) properties on the payload sent to
to `zigbee2mqtt/<device>/get`.
2022-10-31 00:51:26 +01:00
a1cf671334
Added support for link_quality entities to zigbee.mqtt 2022-10-30 11:03:22 +01:00
71ccf6d04a
Support for battery sensors on zigbee.mqtt 2022-10-29 18:16:38 +02:00
42651e937b
LINT fixes on zigbee.mqtt plugin 2022-10-29 14:09:44 +02:00
d61b053f72
Support for battery entities 2022-10-29 13:38:42 +02:00
486cd66885
More LINTs 2022-10-23 21:23:19 +02:00
72c7444a45
LINT 2022-10-23 18:23:20 +02:00
951950c864
Added dimmer entities 2022-10-23 00:30:32 +02:00
1af7ece881
Added deprecation notice for zwave plugin and backend (use zwave.mqtt instead) 2022-10-22 19:17:58 +02:00
7f575bacaa
Implemented the new zwavejs2mqtt features for adding and removing nodes 2022-10-14 23:28:02 +02:00
1b791156bd
Proper support for color zigbee lights 2022-10-12 03:00:42 +02:00
2cc80e7f16
Merge branch 'master' into 191-support-for-general-entities-backend-and-plugin 2022-10-07 00:05:54 +02:00
b88983f055
Added qos argument to mqtt.publish. 2022-10-05 01:13:47 +02:00
fed7c2c6ff
Fixed typo in schema path 2022-09-30 11:30:57 +02:00
1d78c3e753
FIX: Broken docstring 2022-09-30 10:56:08 +02:00
ae226a5b01
Added tts.mimic3 integration.
Closes: #226
2022-09-30 10:51:17 +02:00
fef7aff245
LINT fixes for mpv plugin 2022-09-30 10:41:56 +02:00
4bab9d2607
[#224] Implemented Wallabag integration 2022-09-29 10:51:16 +02:00
deb25196d2
Merge branch 'master' into 191-support-for-general-entities-backend-and-plugin 2022-09-28 02:17:10 +02:00
09baceab4b
Include album_id and the list of tracks in music.tidal.get_album 2022-09-19 20:39:21 +02:00
36dd645209
Use session.playlist instead of session.user.playlist to query playlists 2022-09-18 06:04:53 +02:00
61cda60751
Proper implementation for Tidal's add_to_playlist and remove_from_playlist methods
- Using tidalapi's `UserPlaylist.add` and `UserPlaylist.delete` methods
  instead of defining my own through `_api_request`, so we won't have to
  deal with the logic to set the ETag header.

- Added `remove_from_playlist` method.
2022-09-18 05:22:12 +02:00
7c610adc84
FIX: Apply expanduser to the credentials_file setting in music.tidal 2022-09-17 06:30:20 +02:00
a9ebb4805a
Fixed doc warnings 2022-09-17 06:25:28 +02:00
e1aa214bad tidal-integration (#223)
Reviewed-on: platypush/platypush#223
2022-09-16 21:48:09 +02:00
4682fb4210
Throw an assertion error when on_duplicate_update is specified on db.insert with no key_columns 2022-09-04 16:02:37 +02:00
0143dac216
Improved support for bulk database statements
- Wrapped insert/update/delete operations in transactions
- Proper (and much more efficient) bulk logic
- Better upsert logic
- Return inserted/updated records if the engine supports it
2022-09-04 13:30:35 +02:00
1ea53a6f50
Support for query placeholders in db.select 2022-09-04 00:28:08 +02:00
61c96612bc Merge branch 'master' into 219-opml-import-export 2022-09-02 00:23:57 +02:00
6c6e68b512
Added support for OPML import and export in the RSS plugin.
[closes #219]
2022-09-02 00:21:40 +02:00
a286cf5000 Updated PopcornTime base URL 2022-09-01 11:13:16 +02:00
1880a99052
Merge branch 'master' into 191-support-for-general-entities-backend-and-plugin 2022-08-29 01:41:47 +02:00
540a7d469e
- Fixed documentation errors and warnings
- Split Matrix integration into `plugin` and `client` files.
2022-08-29 00:55:46 +02:00
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
e479ca7e3e
Completing the Matrix plugin integration
Newly implemented actions:

- `get_messages`
- `get_room_members`
- `update_device`
- `delete_devices`
- `room_alias_to_id`
- `add_room_alias`
- `delete_room_alias`
- `kick`
- `ban`
- `unban`
- `forget`
2022-08-28 12:26:27 +02:00
d890b6cbe8
Added create_room action 2022-08-27 23:26:42 +02:00
912168626c
Added join_room, leave_room and invite_to_room and extended handling on invitation events 2022-08-27 21:50:48 +02:00
513195b396
Implemented support for file upload 2022-08-27 15:12:50 +02:00
48ec6ef68b
Implemented proper support for encrypted media and added download method 2022-08-26 23:48:29 +02:00
e4eb4cd7dc
More granular control over trusted devices, and added global synchronization event 2022-08-25 00:34:01 +02:00
c89c712928
Fixed device trust process 2022-08-24 01:49:43 +02:00
05908e1a77
Fixing key verification process 2022-08-17 10:28:31 +02:00
c04bc8d2bc
The matrix plugin joins the AsyncRunnablePlugin family too 2022-08-15 02:18:29 +02:00
2797ffbe53
The websocket plugin now extends AsyncRunnablePlugin too 2022-08-15 02:18:29 +02:00
770a14daae
ntfy plugin migrated to AsyncRunnablePlugin.
This commit removes a lot of the loop management boilerplate.
2022-08-15 02:18:29 +02:00
dba03d3e33
Added AsyncRunnablePlugin class.
This class handles runnable plugins that have their own asyncio event
loop, without the pain usually caused by the management of multiple
threads + asyncio loops.
2022-08-15 02:18:28 +02:00
f4672ce5c3
Refactored concurrency model in ntfy plugin 2022-08-15 02:18:28 +02:00
9e2b4a0043
Removed references to deprecated websockets attributes 2022-08-15 02:18:28 +02:00
dc7ba881f1
Merge branch 'master' into matrix-integration 2022-08-12 14:39:13 +02:00
4e1e6da67e
Added recv action on websocket plugin 2022-08-12 14:16:01 +02:00
354f3906f9
Changed autojoin_on_invite default value 2022-08-12 00:11:15 +02:00
7ab02e705d
Removed redundant _action_wrapper decorator 2022-08-05 19:04:43 +02:00
cbe2e7bbfe
[WIP] 2022-08-04 03:08:54 +02:00
c32142c8b5
Added wait_stop() method to RunnablePlugin 2022-07-23 17:33:23 +02:00
cc29136db7
[#2] Support for caching rooms info and exposing them in the events 2022-07-15 00:37:21 +02:00
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
3513ee3e1c
Merge branch 'master' into 191-support-for-general-entities-backend-and-plugin 2022-07-08 23:13:36 +02:00
c6c7128099
Wrapped clipboard management logic in a try-except block to prevent the clipboard plugin from failing hard 2022-06-14 16:47:52 +02:00
8d26c8634d Keep the ntfy process in stop_wait state even when the plugin is configured with no subscriptions 2022-06-09 11:59:29 +02:00
115bed7d8b
Added limit parameter to lastfm.get_similar_tracks 2022-06-06 14:12:45 +02:00
3d22d6b082
Added get_track and get_similar_tracks methods on lastfm plugin 2022-06-05 18:49:34 +02:00
5971ec32c8
Removed clipboard backend.
The relevant clipboard monitoring logic has been moved to the
`clipboard` plugin. Thus, enabling the plugin should provide all the
feature, with no need for an additional backend.
2022-06-04 12:32:02 +02:00
0d0995d71d
Merge branch 'master' into 191-support-for-general-entities-backend-and-plugin 2022-06-02 20:58:34 +02:00
cb7021152f
Added get_recent_tracks method to the lastfm plugin 2022-06-02 20:57:35 +02:00
d3f4865395
Fixed variable name conflict 2022-06-02 01:44:38 +02:00
f080478385
s/click_url/url/g in ntfy message definitions 2022-06-02 00:40:26 +02:00
2898a33752
s/click_url/url/g in ntfy message definitions 2022-06-02 00:36:14 +02:00
0919a0055d
Merge branch 'master' into 191-support-for-general-entities-backend-and-plugin 2022-06-02 00:13:43 +02:00
8be515c17b
[closes #219] Added ntfy integration 2022-06-01 23:01:29 +02:00
1df71cb54a
Proper support for light entities on smartthings 2022-05-30 09:23:05 +02:00
89560e7c38
Only include entities associated to enabled plugins or with no plugins in entities.get 2022-05-29 23:59:46 +02:00
30dfdeecb0
Merge branch 'master' into 191-support-for-general-entities-backend-and-plugin 2022-05-25 10:11:57 +02:00
7a0e39111d FIX: A feed entry may not necessarily have an id attribute 2022-05-06 14:38:25 +02:00
f57f940d57
Made _is_switch more resilient against rogue Z-Wave values 2022-05-01 22:18:46 +02:00
117f92e5b4
Deprecated the light.hue backend
The polling logic has been moved to the `light.hue` plugin itself
instead, so it's no longer required to have both a plugin and a backend
enabled in order to fully manage a Hue bridge.
2022-05-01 21:55:35 +02:00
a5541c33b0
Added support for light entities in zigbee.mqtt
TODO: Support for colors (I don't have a color Zigbee bulb to test it on yet)
2022-05-01 21:10:54 +02:00
8d91fec771
Better implementation for light.hue.set_lights 2022-05-01 15:33:12 +02:00
c22c17a55d
More flexible implementation for LightPlugin abstract methods 2022-05-01 15:31:45 +02:00
46df3a6a98
FIX: reachable is an attribute of state 2022-05-01 01:58:05 +02:00
30a024befb
Manage hue/sat/bri/ct light ranges on the light entity object itself 2022-04-30 19:38:50 +02:00
d29b377cf1
Exclude deleted lights/groups/scenes from the returned lists 2022-04-30 01:39:39 +02:00
8d57cf06c2
Major refactor for the light.hue plugin.
- Added support for lights as native platform entities.
- Improved performance by using the JSON API objects whenever possible
  to interact with the bridge instead of the native Python objects,
  which perform a bunch of lazy API calls under the hood resulting in
  degraded performance.
- Fixed lights animation attributes by setting only the ones actually
  supported by a light.
- Several LINT fixes.
2022-04-30 01:07:00 +02:00
d22fbcd9db
Merge branch 'master' into 191-support-for-general-entities-backend-and-plugin 2022-04-28 01:58:24 +02:00
da73a5f1b9
Replaced deprecated json_output arg in NextCloud client with response.json_data 2022-04-26 19:30:26 +02:00
47f8520f3b
Added support for description/read_only/write_only on entity level 2022-04-24 22:18:29 +02:00
9981cc4746
Backend support for entities deletion 2022-04-24 21:38:45 +02:00
ef6b57df31
Added entity info modal and (partial) support for renaming entities 2022-04-23 01:01:14 +02:00
332c91252c
zwave.mqtt.status renamed to controller_status, while status should return the current state of the values 2022-04-12 23:44:14 +02:00
548d487e73
Publish a switch entity from zigbee.mqtt only if the update includes its state 2022-04-12 14:41:21 +02:00
be4d1e8e01
Proper support for native entities in zigbee.mqtt integration 2022-04-11 21:16:45 +02:00
db4ad5825e
Fire an EntityUpdateEvent when the zwave.mqtt backend gets a value changed message 2022-04-11 01:40:49 +02:00
4471001110
smartthings.toggle should properly publish the updated entity 2022-04-11 00:43:31 +02:00
17615ff028
Support for multiple entity types/plugins filter on entities.get 2022-04-10 21:23:03 +02:00
f52b556219
- icon_class should not be part of the backend model
- Interaction with entities should occur through the `entities.action`
  method, not by implementing native methods on each of the model
  objects
2022-04-08 16:49:47 +02:00
3b4f7d3dad
Added entities plugin to query/action entities 2022-04-07 00:22:54 +02:00
d52ae2fb80
Implemented RunnablePlugin.wait_stop() utility method 2022-04-05 23:33:02 +02:00
061268cdaf
Support for direct actions on native entities [WIP] 2022-04-05 23:22:54 +02:00
8a70f1d38e
Replaced deprecated sqlalchemy.ext.declarative with sqlalchemy.orm 2022-04-05 22:47:44 +02:00
b43ed169c7
Added support for switches as native entities to zwave.mqtt plugin 2022-04-05 20:22:47 +02:00
0dac2c0e92
Fixed handling of possible null device definition in zigbee.mqtt 2022-04-05 00:31:04 +02:00
28b3672432
Added native support for switch entities to the zigbee.mqtt plugin. 2022-04-05 00:07:55 +02:00
9f2793118b
black fix 2022-04-04 22:43:04 +02:00
9d9ec1dc59
Added native support for switch entities to the smartthings plugin 2022-04-04 22:41:04 +02:00
b9c78ad913
Added native support for switch entities to switchbot.bluetooth plugin 2022-04-04 21:12:59 +02:00
91ff8d811f
Added native entities support in switchbot plugin 2022-04-04 20:56:28 +02:00
53da19b638
Added entities engine support to WeMo switch plugin 2022-04-04 17:22:55 +02:00
2c4c27855d
Added .exception action to logger plugin 2022-04-04 17:22:54 +02:00
4ee7e4db29
Basic support for entities on the local db and implemented support for switch entities on the tplink plugin 2022-04-04 16:50:17 +02:00
486801653a
Added .exception action to logger plugin 2022-04-03 00:26:39 +02:00
ffd23cf04d [#212] Support for asynchronous event monitoring on the GPIO plugin 2022-03-27 16:14:30 +02:00
fdf6d8fb4e
Better auto-generated documentation and fixed docstring warnings 2022-03-03 20:26:25 +01:00
0d0797a465
Added Jellyfin integration 2022-03-01 01:32:50 +01:00
71cb73cf63
FIX: The CN of the organizer may not necessarily be set in calendar.ical 2022-02-17 10:55:35 +01:00
94bb3e0541
Added TOC to readme and more LGTM fixes 2022-02-09 21:06:49 +01:00
29a7eff15a
Fixed/suppressed LGTM warnings 2022-02-08 21:51:37 +01:00
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
1914322fda
FIX: get_plugin methods should never swallow errors in case of failed initialization 2022-02-07 01:47:38 +01:00
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
f3be4a50d8
Support for SSL flag on MQTT plugins without having to specify other tls_* options 2022-01-14 21:39:16 +01:00
a46ce79f0a
Added guard against null variable names 2022-01-06 00:58:14 +01:00
e9f6d9a8bc
Refactored RSS integration into its own rss plugin [closes #199] 2022-01-06 00:46:05 +01:00
3e4b91cd6c
Removed pytz dependency 2022-01-05 18:04:32 +01:00
e242dc53bf FIX: All timestamps should be isoformat strings, otherwise come comparisons may break 2022-01-05 13:39:13 +01:00
ee0b6d237a FIX: Timestamps on calendar parsed objects should be of type string, not datetime 2022-01-05 13:35:10 +01:00
9ba2c18595 Better logic for timezone handling/conversion in calendar plugin 2022-01-05 13:31:07 +01:00
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
2560bfa03f
Plex searcher extended to include also audio tracks 2021-12-04 00:08:47 +01:00
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
e615891bf3
Fixed missed assignment 2021-11-27 02:00:43 +01:00
02b5ec1d38
Fixed regex typo 2021-11-27 01:43:57 +01:00
2914a74b75
Replace relative links in converted markdown 2021-11-27 01:19:55 +01:00
1e1bf46f32
Fixed handling of URLs on Pushbullet notes 2021-11-26 19:07:44 +01:00
848b736d6e
Support for output format type on http.webpage.simplify even when outfile is not specified 2021-11-26 19:07:15 +01:00
f9f9c38a8b
Improved robustness of ICal event parser 2021-11-21 23:50:35 +01:00
518d9f20c6
Added docs for config plugin 2021-11-17 23:59:17 +01:00
6ba3128ac4
[#201] Added Mailgun integration 2021-11-14 22:40:59 +01:00
d7b273434b
[#203] Added IRC integration 2021-11-14 19:43:19 +01:00
acdc636b1f Resolve "Mastodon integration" 2021-11-07 01:00:29 +01:00
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
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
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
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
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
144700b693
media.mpv should send MediaPlayRequestEvent with player and plugin parameters 2021-10-17 16:17:20 +02:00
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
8c339d0d55
Added support for custom YouTube preferred video/audio formats 2021-10-17 02:53:38 +02:00
64c402b1c0 [#115] Added google.maps.get_travel_time method 2021-10-16 22:35:37 +02:00
31ef9515f8 Added support for virtual IR devices in Switchbot plugin 2021-10-02 23:44:13 +02:00
04a5480d19 Resolve "[Feature Request] Gotify Push Intergration" 2021-10-01 23:50:53 +02:00
68831e9e81 [#196] Added ngrok integration 2021-09-25 01:34:45 +02:00
d18245b15f Fixed Slack plugin docs 2021-09-22 00:38:34 +02:00
f147c44a8a Fixed docs issues 2021-09-22 00:19:14 +02:00
1a314ffd6b Fixed LGTM errors and warnings 2021-09-17 22:21:29 +02:00
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
7b8938cb12 Fixed LGTM errors and warnings 2021-09-17 00:47:33 +02:00
3bfc5b83ef Moved to manifest files for describing plugins and backends and their dependencies 2021-09-16 17:53:40 +02:00
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
90ec108580 Added Slack integration 2021-07-28 01:09:09 +02:00
371dd6da0a Added sun plugin [closes #194] 2021-07-22 01:02:15 +02:00
1483d602f8 Added music.spotify UI integration 2021-07-20 01:35:21 +02:00
35c4a30a63 Added music.spotify plugin and refactored MusicPlugin 2021-07-17 22:14:15 +02:00
03631bcebc Fixed import error in Adafruit.IO 2021-07-04 23:49:18 +02:00
a39452124d Refactored PCA9685 backend 2021-05-17 15:32:43 +02:00
7ee869ce42 More robust logic for smooth transients on PCA9685 2021-05-16 18:14:02 +02:00
df36a9f811 s/execute/write/ 2021-05-16 17:53:22 +02:00