Commit Graph

3194 Commits

Author SHA1 Message Date
Fabio Manganiello a5b0a524f6
Added `CpuStats` entity to `system`. 2023-04-18 01:19:06 +02:00
Fabio Manganiello b4fbd3e915
Added `percent` entity to `cpu`. 2023-04-17 02:25:04 +02:00
Fabio Manganiello 711cc2b239
Removed (now unused) `CpuTimesResponse`. 2023-04-17 02:25:03 +02:00
Fabio Manganiello b9286f50b0
Added support for `CpuTimes` as an entity of the `system` plugin.
Also, there is now a single `Cpu` entity being exported, with a nested
hierarchy structured like:

```
cpu
  -> cpu_info
  -> cpu_times
    -> idle
    -> user
    -> system
    -> ...
  -> cpu_load
    -> ...
```
2023-04-17 02:25:03 +02:00
Fabio Manganiello 4842c1911b
Frontend entities should have a reference to `allEntities`.
There are probably more optimal ways of achieving this other than
passing a reference to the full list of entities to each of the
entities, such as running a BFS to recursively expand all the entities
within the child hierarchy of an entity.

This is needed because the entity needs to know which entities aren't
direct children, but are two or more layers down in the hierarchy, so
they should be passed to their own child entities.
2023-04-17 02:25:03 +02:00
Fabio Manganiello 6e65783feb
Added schemas for `CpuTimes`. 2023-04-17 02:25:03 +02:00
Fabio Manganiello e810025a6d
Added `Cpu` and `CpuTimes` entities. 2023-04-17 02:25:03 +02:00
Fabio Manganiello 65481dc6b4
Added `PercentSensor` entity type. 2023-04-17 02:25:02 +02:00
Fabio Manganiello e7f64843a5
Added `include_children` parameter to `_merge_columns`.
We need to recursively merge the columns of children entities if a child
entity isn't a leaf node.
2023-04-17 02:25:02 +02:00
Fabio Manganiello b43017ef01
Refactoring the `system` plugin to support entities. 2023-04-17 02:25:02 +02:00
Fabio Manganiello 3e3c48d779
Defined new entity and schema for CpuInfo. 2023-04-17 02:25:02 +02:00
Fabio Manganiello 186a21f715
Added CpuInfo entity frontend components. 2023-04-17 02:25:01 +02:00
Fabio Manganiello 74aeca5c34
Trigger a sensor event only if abs(old_data - new_data) > tolerance
Not if abs(old_data - new_data) >= tolerance, otherwise events will
always be triggered when tolerance=0, even if the data hasn't changed.
2023-04-17 02:25:01 +02:00
Fabio Manganiello 4c19535612 A more resilient logic on entity copy/serialization to prevent ObjectDeletedError 2023-04-13 17:16:21 +02:00
Fabio Manganiello a499b7bc2f
Deprecated `poll_seconds` in `light.hue`.
For sake of naming consistency with other plugins, we should use
`poll_interval` instead.
2023-04-03 01:36:12 +02:00
Fabio Manganiello 10955dad72
Fixed some documentation glitches in `switchbot`. 2023-04-03 01:36:12 +02:00
Fabio Manganiello f9ce4b75e8
Updated docs 2023-04-03 01:36:12 +02:00
Fabio Manganiello d5de38975d
generate_missing_docs 2.0 2023-04-03 01:36:12 +02:00
Fabio Manganiello 6e5f746dbe
Removed deprecated `gpio.sensor` base plugin.
Now all the plugins that used to implement it have been moved to
`SensorPlugin`.
2023-04-03 01:36:12 +02:00
Fabio Manganiello 8852cb8db4
Fixed new class name for `sensor.mcp3008` plugin. 2023-04-03 01:36:12 +02:00
Fabio Manganiello d5ddc0c65e
Migrated `arduino` integration to the new `SensorPlugin` API. 2023-04-03 01:36:12 +02:00
Fabio Manganiello cf16076bce
Added icons for new entity sensor sources. 2023-04-03 01:36:11 +02:00
Fabio Manganiello ac2ec58f89
Migrated `mcp3008` integration to the new `SensorPlugin` API. 2023-04-03 01:36:11 +02:00
Fabio Manganiello 45e5ca47e7 Fallback for sensor._has_changes 2023-04-02 15:38:49 +02:00
Fabio Manganiello 962c55937d
Migrated `sensor.distance` integration.
Remove `backend.sensor.distance` and `gpio.sensor.distance`. They are
now replaced by the `sensor.hcsr04` integration, which is compatible
with the new `SensorPlugin` API.
2023-04-02 14:20:12 +02:00
Fabio Manganiello 92578a17c9
Added small docstring portion 2023-04-02 13:55:00 +02:00
Fabio Manganiello beff88986a
Migrated `dht` integration.
Removed `backend.sensor.dht` and `gpio.sensor.dht`. They have been
merged into the new `sensor.dht` integration, which supports the new
`SensorPlugin` API.
2023-04-02 13:38:53 +02:00
Fabio Manganiello 8f604445a2
Migrated old `sensor.accelerometer` integration.
Removed `backend.sensor.accelerometer` and `gpio.sensor.accelerometer`.
The logic has now been merged in the new `sensor.lis3dh` integration,
which is compatible with the new `SensorPlugin` API.
2023-04-02 13:22:28 +02:00
Fabio Manganiello 44cf25271c
Migrated `pmw3901` integration.
Removed legacy `backend.sensor.motion.pmw3901` and
`gpio.sensor.motion.pmw3901`. They have been merged in the new
`sensor.pmw3901` integration, compatible with the new `SensorPlugin`
API.
2023-04-02 12:36:08 +02:00
Fabio Manganiello fcdda40c4a
Update the `_last_measurement` only if some events were processed from the new data. 2023-04-02 12:09:45 +02:00
Fabio Manganiello 88784985e1
Should be `abs(old_data - new_data) >= tolerance`.
Not `abs(old_data - new_data) > tolerance`.
2023-04-02 12:08:40 +02:00
Fabio Manganiello a3f4b21478
Updated dist files 2023-04-02 03:24:11 +02:00
Fabio Manganiello e6e5dec088
Updated dist files 2023-04-02 02:56:09 +02:00
Fabio Manganiello 7697c1c6ad
Migrated `envirophat` to the new `SensorPlugin` API.
Removed `backend.sensor.envirophat` and `gpio.sensor.envirophat` plugin.
They have now been merged into the new `sensor.envirophat` plugin.
2023-04-02 02:49:08 +02:00
Fabio Manganiello 3cd42c9e45
`Entity` should use `Message.Encoder` as a JSON serializer. 2023-04-02 02:44:19 +02:00
Fabio Manganiello 31f411868c
`Message.Encoder` should serialize binary data to `0x`-led hex strings. 2023-04-02 02:43:06 +02:00
Fabio Manganiello 9e5ad0e0b1
`Entity.to_dict` now takes into account columns mapped to properties.
No more `_value` in the JSON output instead of the `value` property.

If a column is marked as private, and there's an associated property
mapped to its public name, then we should use and serialize that value.
2023-04-02 02:22:40 +02:00
Fabio Manganiello 8d4aa310f4
Support for values passed in dict format to `ThreeAxisSensor` 2023-04-02 02:02:08 +02:00
Fabio Manganiello 5a6f4bcf57
Added 3-axis sensor, accelerometer and magnetometer entities 2023-04-02 01:13:22 +02:00
Fabio Manganiello d964167631
`s/TimeDurationSensor/TimeDuration/g` 2023-04-02 00:57:48 +02:00
Fabio Manganiello 839c6108a0
Added `sensor.*` icon classes 2023-04-02 00:40:50 +02:00
Fabio Manganiello 429893ddbf
Updated dist files 2023-04-01 23:58:28 +02:00
Fabio Manganiello f24d0773d1
No need for `sensor.vl53l1x.transform_entities` to call the parent. 2023-04-01 23:54:43 +02:00
Fabio Manganiello 99572f9731
Sanity check to prevent empty objects from being propagated to `sensor.transform_entities` 2023-04-01 23:41:28 +02:00
Fabio Manganiello 3f3726c50a
Fixed another occurrence of "Subscripted generics cannot be used" etc. error 2023-04-01 23:34:22 +02:00
Fabio Manganiello e2e73d0fdb
Fix another Python < 3.10 subscripted generic issue. 2023-04-01 23:23:51 +02:00
Fabio Manganiello c1d0f21ead
Migrated `ltr559` integration to the new API.
Merged `backend.sensor.ltr559` and `gpio.sensor.ltr559` into the new
`sensor.ltr559` plugin, which extends the new `SensorPlugin` API.
2023-04-01 23:16:03 +02:00
Fabio Manganiello 8e0f88ea16
Don't swap the argument of `SensorPlugin.publish_entities` with a list if not required 2023-04-01 23:06:37 +02:00
Fabio Manganiello 0047d85b9d
Dirty fix for "Subscripted generics cannot be used with class and instance checks" on Python < 3.10 2023-04-01 22:52:24 +02:00
Fabio Manganiello 98ec018292
Replaced `NoneType` reference.
`types.NoneType` is not always available on all Python versions, so we
have to make our own type for it.
2023-04-01 22:42:13 +02:00