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
4a8da80c7c
Don't join self._thread on stop in RunnablePlugin if self._thread = current_thread
2023-03-11 23:45:46 +01:00
Fabio Manganiello
72c55c03f2
[WIP] Refactoring/extending models and parsers for Bluetooth entities.
2023-03-03 02:10:11 +01:00
Fabio Manganiello
a688e7102e
Changed default `poll_interval` for `RunnablePlugin`.
...
30 -> 15 seconds.
2023-03-03 02:00:48 +01:00
Fabio Manganiello
15fadb93bb
Added stand-alone `connect` and `disconnect` actions to `bluetooth`.
2023-02-25 01:59:35 +01:00
Fabio Manganiello
2dfb389630
Added remaining `bluetooth` entity types in `_mappers.py`.
2023-02-23 21:20:41 +01:00
Fabio Manganiello
a0556d3a42
Added `PresenceSensor` entities.
2023-02-23 01:42:26 +01:00
Fabio Manganiello
886b930e2f
Support for `bluetooth` devices with multiple temperature sensors.
2023-02-23 01:27:31 +01:00
Fabio Manganiello
56d693032a
Added `DewPointSensor` entities.
2023-02-23 01:23:04 +01:00
Fabio Manganiello
d212276247
Added `PressureSensor` entities.
2023-02-23 01:12:27 +01:00
Fabio Manganiello
dd3f683006
Added `unit` to `bluetooth` mappers whenever available.
2023-02-23 01:04:33 +01:00
Fabio Manganiello
d961e2a997
Added `TimeDurationSensor` entity.
2023-02-23 01:02:13 +01:00
Fabio Manganiello
c3e16f9f9d
Added support for heart rate sensor entities.
2023-02-23 00:55:55 +01:00
Fabio Manganiello
3dab94c346
Added `StepsSensor` detection to `bluetooth`.
2023-02-23 00:50:06 +01:00
Fabio Manganiello
dcab766cef
Only scan for the configured Bluetooth service UUIDs.
2023-02-22 03:36:16 +01:00
Fabio Manganiello
9776921836
Better way of handling with `RawSensor` in `bluetooth` integration.
2023-02-22 02:26:51 +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
b2ffc08c89
s/MultiValueSensor/CompositeSensor/g on `smartthings`
2023-02-22 02:18:12 +01:00
Fabio Manganiello
7fa545d7f8
Merge branch 'master' into 29-generic-entities-support
2023-02-22 00:46:33 +01:00
Fabio Manganiello
b4627ecd04
Removed deprecated use_unicode parameter from MPDClient
2023-02-20 20:35:33 +01:00
Fabio Manganiello
aa0b909fff
Use the TheengsDecoder to parse Bluetooth packets and map services to native entities.
2023-02-20 20:27:17 +01:00
Fabio Manganiello
73bf2446bd
Wrap `bluetooth.connect` in a per-device locked section.
2023-02-19 23:11:19 +01:00
Fabio Manganiello
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
Fabio Manganiello
613e32e7c1
Extended number of supported events and data fields in Bluetooth integration.
2023-02-18 01:15:10 +01:00
Fabio Manganiello
7adae272a4
Merge branch 'master' into 29-generic-entities-support
2023-02-15 22:24:41 +01:00
Fabio Manganiello
08553f84b9
Added `timeout` parameter to `websocket.send`.
2023-02-15 22:23:15 +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
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
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
f30e077a5a
Support for custom Bluetooth adapter on `switchbot.bluetooth`.
2023-02-08 23:01:05 +01:00
Fabio Manganiello
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
Fabio Manganiello
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
Fabio Manganiello
9d028af524
Removed last reference of `SwitchPlugin`
2023-02-05 23:10:35 +01:00
Fabio Manganiello
419a0cec61
More LINTing
...
Better prototype for `MultiLevelSwitchEntityManager.set_value`
2023-02-05 23:07:43 +01:00
Fabio Manganiello
fde834c1b1
More LINT fixes + refactors
2023-02-05 22:00:50 +01:00
Fabio Manganiello
b8fca97891
Default poll_interval for `RunnablePlugin` set to 30 seconds
2023-02-05 17:31:43 +01:00
Fabio Manganiello
06dfd1a152
Added support for more entities in `switchbot`
2023-02-05 15:34:50 +01:00
Fabio Manganiello
2047b9b76c
[WIP] Refactoring `switchbot` plugin as a runnable plugin + entity manager
2023-02-04 22:22:51 +01:00
Fabio Manganiello
0311d87bc3
The `switch.wemo` integration now extends `SwitchEntityManager`
2023-02-04 00:58:28 +01:00
Fabio Manganiello
de2849546a
LINT fixes
2023-02-04 00:26:48 +01:00
Fabio Manganiello
a160d3217e
Removed legacy `get_sensor_plugins` and `get_switch_plugins` actions
2023-02-03 22:54:42 +01:00
Fabio Manganiello
6ef2feea71
LINT fixes for `utils` plugin
2023-02-03 18:08:19 +01:00
Fabio Manganiello
3db9c58d31
[WIP] Converted `switch.tplink` plugin.
...
`switch.tplink` converted to a `RunnablePlugin` that implements
`SwitchEntityManager`.
2023-02-03 02:20:20 +01:00
Fabio Manganiello
be3b99326f
[WIP] Refactoring `@manages` annotation into a proper `EntityManager` hierarchy
2023-02-02 23:21:12 +01:00
Fabio Manganiello
8aff181956
Merged `zwave.mqtt` backend into the `zwave.mqtt` plugin
2023-01-29 02:34:48 +01:00
Fabio Manganiello
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
Fabio Manganiello
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
Fabio Manganiello
afdeb91f66
Implemented remaining supported entities for the `smartthings` integration
2023-01-26 22:10:02 +01:00
Fabio Manganiello
ba31dff06a
Major refactor + fixes for `smartthings`
2023-01-24 23:56:28 +01:00