Fabio Manganiello
276aff757b
Removed circular dependency.
...
Workaround for the circular dependency between
`platypush.entities.bluetooth` and `platypush.plugins.bluetooth.model`.
Unentangling the circular dependency would require way too much work,
since the entity model provides several helpers and properties that
depend on the plugin's model.
The workaround in this commit is to simply push those imports down in
the methods that use them, so they won't be imported until those methods
are called, as well as removing some type annotations that depended on
those objects.
2023-03-26 15:30:57 +02:00
Fabio Manganiello
89bc54da22
Updated dist files
2023-03-26 12:30:46 +02:00
Fabio Manganiello
295758bb20
Added frontend components for cloud instances.
2023-03-26 12:27:17 +02:00
Fabio Manganiello
bc2730c841
Rewritten `linode` integration.
...
- Support for cloud instances as native entities.
- Using Marshmallow dataclasses+schemas instead of custom `Response`
objects.
- Merge `linode` backend into `linode` plugin.
2023-03-26 11:23:33 +02:00
Fabio Manganiello
4b9c5a0203
Support for schema `EnumField`.
2023-03-26 03:48:32 +02:00
Fabio Manganiello
026662f6b6
Added base schema for Marshmallow dataclasses.
2023-03-26 03:47:44 +02:00
Fabio Manganiello
7bbae55e44
`platypush.entities._managers` -> `platypush.entities.managers`.
...
It's better for entity managers to be stored in their own public
package, instead of cluttering too much the namespace of their parent
package.
2023-03-26 03:46:06 +02:00
Fabio Manganiello
89d85baa6d
Support for implicit serialization of Enum values in JSONAble.
2023-03-26 03:43:04 +02:00
Fabio Manganiello
a71017df33
Updated web app files
2023-03-24 16:45:55 +01:00
Fabio Manganiello
567e9d4e21
Removed legacy `bluetooth` backends.
...
No replacements have been made for the OBEX backends (push and file
services). PyOBEX is too broken and unmaintained, and there are too many
poorly documented steps required to get an unprivileged user to run an
SDP service.
2023-03-24 16:41:30 +01:00
Fabio Manganiello
3c355352c5
Using the new `StoppableThread` API.
2023-03-24 16:39:30 +01:00
Fabio Manganiello
5ebf4e912e
Added `wait_stop` and `shoud_stop` methods to `StoppableThread`.
2023-03-24 16:05:18 +01:00
Fabio Manganiello
998793e94f
Added `OBEX_FILE_TRANSFER` constant to `directory` stub.
2023-03-24 15:41:20 +01:00
Fabio Manganiello
4b4db5b3c7
Added `StoppableThread` common interface.
2023-03-24 15:40:16 +01:00
Fabio Manganiello
2f49ddf33a
Fallback logic that uses DBus to disconnect from a BT device.
...
This logic will be used if the connection wasn't opened by the current
process and therefore a call to DBus is required to terminate it.
2023-03-24 01:57:05 +01:00
Fabio Manganiello
913ef6f8cd
Refresh `BluetoothDevice.reachable` when a device is found/lost.
2023-03-24 01:56:19 +01:00
Fabio Manganiello
d46d4e2300
Added support for Bluetooth devices blacklist.
...
Based on device address, name or manufacturer.
2023-03-24 01:52:39 +01:00
Fabio Manganiello
0cebcf4f9b
`switchbot.bluetooth` integration migrated to a `bluetooth` plugin.
2023-03-23 17:46:54 +01:00
Fabio Manganiello
4fac110bb8
Added `bluetooth.set` method, whose execution is delegated to the plugins.
2023-03-23 17:45:02 +01:00
Fabio Manganiello
cd219f44c4
Pass the list of plugins when creating Bluetooth managers.
2023-03-23 17:42:16 +01:00
Fabio Manganiello
43289a3b55
Scan always at least for 10 seconds before failing on `get_device`.
2023-03-23 17:41:37 +01:00
Fabio Manganiello
6267943786
Wrap `BleakError` exceptions into `AssertionError`.
2023-03-23 17:40:30 +01:00
Fabio Manganiello
d6805a8b18
Added support for custom Bluetooth device plugins.
2023-03-23 17:10:37 +01:00
Fabio Manganiello
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
Fabio Manganiello
d1cd6dd2af
get_plugin with reload=True should stop the existing plugin if it's running
2023-03-23 01:11:54 +01:00
Fabio Manganiello
a2a5fce6cb
Added `Apple Continuity` to the list of blacklisted manufacturers/models
2023-03-22 22:55:19 +01:00
Fabio Manganiello
e71c312133
Always read an entity's parent through get_parent when climbing up.
...
This should avoid the risk of `DetachedInstanceError` by retrieving the
object into the session if it's not available.
2023-03-22 22:41:09 +01:00
Fabio Manganiello
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
Fabio Manganiello
65bc3ae06d
Noisy beacons device configuration should look both at manufacturer and model.
2023-03-22 22:37:46 +01:00
Fabio Manganiello
f49b866a51
Focus the <input> element when a <NameEditor> element is created.
2023-03-22 21:28:21 +01:00
Fabio Manganiello
dd80dc998c
Show entity icon and type in the list of children entities on EntityModal.
2023-03-22 21:26:59 +01:00
Fabio Manganiello
239dd17f23
Exclude from the list of display children on EntityModal those with no name or that are configuration values.
2023-03-22 16:38:38 +01:00
Fabio Manganiello
e10bec88c0
Noisy beacons logging trace moved from info to debug.
2023-03-22 16:31:57 +01:00
Fabio Manganiello
5dd95362a1
Include links both to the parent and children entities in EntityModal.
2023-03-22 16:20:29 +01:00
Fabio Manganiello
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
Fabio Manganiello
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
Fabio Manganiello
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
Fabio Manganiello
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
Fabio Manganiello
486f37a45e
Support sensor value reported both on `value` as well as `_value` fields.
2023-03-22 14:11:13 +01:00
Fabio Manganiello
bfc87e0f7b
Display arrays and objects in the entity modal as prettified JSON.
2023-03-22 13:50:35 +01:00
Fabio Manganiello
c750d83188
Prevent name collisions on `bluetooth.ServiceClass`.
2023-03-22 03:27:25 +01:00
Fabio Manganiello
174b1ee6a9
Use a default list of excluded Bluetooth manufacturers.
2023-03-21 16:03:01 +01:00
Fabio Manganiello
e9abb5cb9a
Implemented support for child entities in entity modals.
2023-03-21 16:02:02 +01:00
Fabio Manganiello
b1cb7ef847
Added a list of `excluded_manufacturers` to `BluetoothPlugin`.
2023-03-21 14:32:45 +01:00
Fabio Manganiello
718e0434ba
Display all available entity attributes on EntityModal.
2023-03-20 14:32:03 +01:00
Fabio Manganiello
78bbe71be1
Another .pull-right fix.
2023-03-20 02:04:32 +01:00
Fabio Manganiello
3743ee4f00
s/TheengsGateway/TheengsDecoder/g now that the pip package has been published.
2023-03-20 01:41:21 +01:00
Fabio Manganiello
431dedf3eb
BluetoothDevice moved to its own component, with device connect support.
2023-03-20 01:28:12 +01:00
Fabio Manganiello
0a4b22c12e
Implemented connect/disconnect call on BluetoothService component.
2023-03-20 01:27:47 +01:00
Fabio Manganiello
714f853751
Pass the list of children to the entity component.
2023-03-20 01:27:21 +01:00
Fabio Manganiello
a011de890b
Better .pull-right class implementation.
2023-03-20 01:26:48 +01:00
Fabio Manganiello
2b5596820b
Made Types.objectsEqual method more robust against null input
2023-03-19 22:50:23 +01:00
Fabio Manganiello
71a3481560
Better style for the sidebar/nav
2023-03-19 22:23:37 +01:00
Fabio Manganiello
12096f2dbe
Don't fail hard when device disconnection fails.
2023-03-19 12:56:53 +01:00
Fabio Manganiello
40f81b105f
Set the connected flag when connecting/disconnecting from a service.
2023-03-19 12:56:31 +01:00
Fabio Manganiello
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
Fabio Manganiello
6e9263c4e4
A more elegant logic to infer the manufacturer name.
2023-03-19 12:54:52 +01:00
Fabio Manganiello
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
Fabio Manganiello
aa04741daa
Added BluetoothService UI component
2023-03-19 12:53:23 +01:00
Fabio Manganiello
f74fab795d
Added `parent` component value to `Entity`.
2023-03-19 12:50:45 +01:00
Fabio Manganiello
243de15813
Added `connected` flag to `BluetoothService`.
2023-03-19 12:49:38 +01:00
Fabio Manganiello
256d9adbf2
Removed `children` from `BluetoothDevice.to_json` - it makes events too verbose
2023-03-19 12:48:11 +01:00
Fabio Manganiello
4144e4f842
Fixed self._ip_to_dev expansion
2023-03-19 12:47:07 +01:00
Fabio Manganiello
878fe91155
Big rewrite/refactor of the entities merger
2023-03-19 12:40:48 +01:00
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
4bc61133c5
The Entity object should also have a `to_json` method.
2023-03-12 23:01:51 +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
31552963c4
`EntitiesDb.upsert` should return a deep copy of the upserted entities.
...
Not the upserted entities themselves, no matter if expunged or made transient.
Reminder to my future self: returning the flushed entities and then using them
outside of the session or in another thread opens a big can of worms when using
SQLAlchemy.
2023-03-10 12:06:36 +01:00
Fabio Manganiello
f45e47363d
Use lazy='joined' instead of lazy='selectin' on Entity.parent.
...
That's the best way to ensure that all the columns are fetched eagerly and
prevent errors later when trying to access lazily loaded attributes outside
of the session/thread.
2023-03-10 12:01:23 +01:00
Fabio Manganiello
8ccf3e804d
Added utility get_entities_engine() function.
2023-03-10 11:49:23 +01:00
Fabio Manganiello
60da930e4b
Added support for get_plugin(MyPlugin) besides get_plugin('my').
2023-03-10 11:47:39 +01:00
Fabio Manganiello
3fcc9957d1
A dirty fix to prevent DetachedInstanceError when accessing the parent entity.
2023-03-10 11:45:44 +01:00
Fabio Manganiello
ceb7a2f098
EntitiesEngine synchronization improvements.
...
- Added `wait_start()` method that other threads can use to synchronize
with the engine and wait before performing db operations.
- Callback logic wrapped in a try/except block to prevent custom
integrations with buggy callbacks from crashing the engine.
2023-03-10 00:57:24 +01:00
Fabio Manganiello
73dc2463f1
Added auto_commit=False to entities.save()
2023-03-10 00:40:51 +01:00
Fabio Manganiello
7e92d5f244
Added recursive `.copy()` method to `Entity`.
2023-03-09 22:35:31 +01:00
Fabio Manganiello
9f9ee575f1
Added _import_error_ignored_modules.
...
ImportErrors on these entity modules will be ignored when dynamically
loading them, since they have optional external dependencies and we
shouldn't throw an error if we can't import them.
2023-03-09 01:40:35 +01:00
Fabio Manganiello
c4efec6832
Several fixes and improvements on the entities engine.
...
- Support for an optional callback on `publish_entities` to get notified
when the published object are flushed to the db.
- Use `lazy='selectin'` for the entity parent -> children relationship -
it is more efficient and it ensures that all the data the application
needs is loaded upfront.
- `Entity.entity_key` rolled back to `<external_id, plugin>`. The
fallback logic on `<id, plugin>` created more problems than those it
as supposed to solve.
- Added `expire_on_commit=False` to the entities engine session to make
sure that we don't get errors on detached/expired instances.
2023-03-09 01:16:04 +01:00
Fabio Manganiello
1781a19a79
s/Entity.to_json/Entity.to_dict/g
...
stuff
2023-03-06 23:46:33 +01:00
Fabio Manganiello
b9efa9fa30
entity_key should coalesce (entity.external_id or entity.id)
2023-03-06 16:54:02 +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
ead4513915
Added optional `unit` column to `RawSensor` entity.
2023-03-03 01:59:27 +01:00
Fabio Manganiello
7be55e446f
Convert UUID objects to strings when serializing to JSON.
2023-03-02 21:58:26 +01:00
Fabio Manganiello
15fadb93bb
Added stand-alone `connect` and `disconnect` actions to `bluetooth`.
2023-02-25 01:59:35 +01:00
Fabio Manganiello
70d1bb893c
A cleaner way of calculating the `success` response attribute.
2023-02-25 01:58:09 +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
e1b3d52706
Added `StepsSensor` entity.
2023-02-23 00:45:58 +01:00
Fabio Manganiello
dcab766cef
Only scan for the configured Bluetooth service UUIDs.
2023-02-22 03:36:16 +01:00
Fabio Manganiello
d8c429f4a8
Major improvements on the entities engine.
...
- Better logic to recursively link parent/children entities, so partial
updates won't get lost.
- Removed `EntitiesCache` - it was too much to maintain while keeping
consistent with the ORM, and it was a perennial fight against
SQLAlchemy's own cache.
- Removed `EntityNotifier` - with no need to merge cached entities, the
`notify` method has become much simpler and it's simply been merged
in the `EntitiesRepository`.
2023-02-22 02:53:45 +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
dc7cbe743d
Refactored/improved `RawSensor` entity.
...
It will now automatically deal with most of the native types and convert
them to strings on the db.
2023-02-22 02:19:19 +01:00
Fabio Manganiello
b2ffc08c89
s/MultiValueSensor/CompositeSensor/g on `smartthings`
2023-02-22 02:18:12 +01:00
Fabio Manganiello
340fd08064
Removed some old `type: ignore` comments.
2023-02-22 01:29:51 +01:00
Fabio Manganiello
cf219d5a48
Added some more docstrings to entities.
2023-02-22 01:02:26 +01:00
Fabio Manganiello
7fa545d7f8
Merge branch 'master' into 29-generic-entities-support
2023-02-22 00:46:33 +01:00
Fabio Manganiello
c645ce6bb8
Bump version: 0.24.4 → 0.24.5
2023-02-22 00:32:57 +01:00
Fabio Manganiello
bbc9647cb0
s/MultiValueSensor/CompositeSensor/g
2023-02-21 23:14:10 +01:00
Fabio Manganiello
2fa45fc5a3
Documentation and LINT fixes for sensor entities.
2023-02-21 23:10:05 +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
a6c36fa1c1
Added brand, model and model_id columns to `BluetoothDevice`.
2023-02-19 23:02:04 +01:00
Fabio Manganiello
68e6b271c1
Updated dist files
2023-02-19 22:58:20 +01:00
Fabio Manganiello
cb9b01c89f
Added raw_sensor metadata
2023-02-19 22:57:50 +01:00
Fabio Manganiello
72a9a9dfcf
LINT/type fixes
2023-02-19 22:56:45 +01:00
Fabio Manganiello
8aedc3c233
Recursively normalize child entities in `EntityManager._normalize_entities`
2023-02-18 17:51:57 +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
45664be44b
Removed deprecated `backend.bluetooth.scanner`.
...
Scan capabilities are now implemented on the `bluetooth` plugin itself.
2023-02-13 23:13:51 +01:00
Fabio Manganiello
471bc1fd3d
Updated dist files
2023-02-13 23:13:32 +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
4365352331
[WIP] s/set_value/set/g for entities
2023-02-11 03:57:23 +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
35719b0da9
Let `publish_entities` return the list of transformed_entities
2023-02-08 02:09:34 +01:00
Fabio Manganiello
e04870209e
More LINT fixes
2023-02-08 01:50:54 +01:00
Fabio Manganiello
a98a5f0980
typo fix
2023-02-08 01:09:25 +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
4849e14414
LINT fixes for the `utils` module + additional documentation
2023-02-05 18:05:41 +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
64e9bf17cf
Updated dist files
2023-02-05 14:53:36 +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
65827aa0cd
Updated dist files
2023-02-04 17:36:46 +01:00
Fabio Manganiello
b96838a856
Major LINT fixes/refactor for the `Config` class
2023-02-04 17:35:48 +01:00
Fabio Manganiello
db5846d296
Add the unit to the `Dimmer` display value if it's available
2023-02-04 17:28:54 +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
b6814b4f16
Removed legacy Switches integration [frontend]
2023-02-03 22:49:09 +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