Commit graph

91 commits

Author SHA1 Message Date
Fabio Manganiello b9efa9fa30
entity_key should coalesce (entity.external_id or entity.id) 2023-03-06 16:54:02 +01:00
Fabio Manganiello ead4513915
Added optional unit column to RawSensor entity. 2023-03-03 01:59:27 +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 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 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 e1b3d52706
Added StepsSensor entity. 2023-02-23 00:45:58 +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 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 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 2fa45fc5a3
Documentation and LINT fixes for sensor entities. 2023-02-21 23:10:05 +01:00
Fabio Manganiello a6c36fa1c1
Added brand, model and model_id columns to BluetoothDevice. 2023-02-19 23:02:04 +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 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 35719b0da9
Let publish_entities return the list of transformed_entities 2023-02-08 02:09:34 +01:00
Fabio Manganiello a98a5f0980
typo fix 2023-02-08 01:09:25 +01:00
Fabio Manganiello 419a0cec61
More LINTing
Better prototype for `MultiLevelSwitchEntityManager.set_value`
2023-02-05 23:07:43 +01:00
Fabio Manganiello 06dfd1a152
Added support for more entities in switchbot 2023-02-05 15:34:50 +01:00
Fabio Manganiello be3b99326f
[WIP] Refactoring @manages annotation into a proper EntityManager hierarchy 2023-02-02 23:21:12 +01:00
Fabio Manganiello 59eb0742a1
s/warnings/logger.debug/ if publish_entities is called with no engine registered 2023-01-29 21:52: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 afdeb91f66
Implemented remaining supported entities for the smartthings integration 2023-01-26 22:10:02 +01:00
Fabio Manganiello 147f36c86c
All Sensor instances should have is_read_only=True by default 2023-01-22 21:05:14 +01:00
Fabio Manganiello fd76642082
Added Volume and Muted entities 2023-01-22 21:04:46 +01:00
Fabio Manganiello dfb13127ee
Added MotionSensor entities 2023-01-21 14:47:18 +01:00
Fabio Manganiello 9a5e2899e8
Support for external_url and image_url on entities 2023-01-15 20:01:47 +01:00
Fabio Manganiello a58caa17e2
Decreased time of EventQueue (2 -> 1 second) to make entity events more responsive 2023-01-13 23:28:58 +01:00
Fabio Manganiello 38438230d7
The batch of entities currently being processed should have no duplicate keys 2023-01-11 01:22:56 +01:00
Fabio Manganiello e9c84ff5d4
Support units on dimmer entities 2023-01-09 01:01:05 +01:00
Fabio Manganiello c32aecece3
Added is_configuration flag to entities 2023-01-03 23:12:27 +01:00
Fabio Manganiello 1c811a490f
Don't serialize children_ids in Entity.to_json()
Serializing both children_ids and parent_id can result in nasty
SQLAlchemy bugs, especially when handling objects that haven't been
flushed yet.
2023-01-01 12:47:15 +01:00
Fabio Manganiello 2feaba7bf4
Add children_ids attribute to entities when converted to JSON 2022-12-18 21:03:12 +01:00
Fabio Manganiello 3615a269fe
Use Float instead of Numeric on NumericSensor table.
The Numeric type may have casting/rounding issues with SQLite.
2022-12-18 15:25:22 +01:00
Fabio Manganiello 5763c5e0ba
Don't use the entities cache when upserting entities.
This may make things a bit less optimal, but it's probably the only
possible solution that preserves my sanity.

Managing upserts of cached instances that were previously made transient
and expunged from the session is far from easy, and the management of
recursive parent/children relationships only add one more layer of
complexity (and that management is already complex enough in its current
implementation).
2022-12-18 15:13:21 +01:00
Fabio Manganiello b0464219d3
Large refactor of the entities engine. 2022-12-17 21:41:23 +01:00
Fabio Manganiello ecba72935f
Check for table metadata existance in Base.metadata instead of having a separate entity registry 2022-12-04 16:28:46 +01:00
Fabio Manganiello abaeabea22
Implemented recursive merges of parent/child relationships in entities 2022-11-30 00:50:53 +01:00
Fabio Manganiello 0edd73690b
Modelling of parent/children relationships on entity level 2022-11-28 21:36:00 +01:00
Fabio Manganiello 78c59f437a
Added support for illuminance sensor entities 2022-11-27 22:38:58 +01:00
Fabio Manganiello b9e6614b04
Added support for EnumSensor entities 2022-11-21 00:04:07 +01:00
Fabio Manganiello 69e097707d
Don't lock read session from the main database 2022-11-12 16:10:57 +01:00
Fabio Manganiello 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