Implement measurement sensor for Sensibo (#66949)
This commit is contained in:
parent
cc9fd2bcba
commit
2474d84e35
1 changed files with 39 additions and 0 deletions
|
@ -1,6 +1,7 @@
|
|||
"""DataUpdateCoordinator for the Sensibo integration."""
|
||||
from __future__ import annotations
|
||||
|
||||
from dataclasses import dataclass
|
||||
from datetime import timedelta
|
||||
from typing import Any
|
||||
|
||||
|
@ -17,6 +18,21 @@ from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, Upda
|
|||
from .const import DEFAULT_SCAN_INTERVAL, DOMAIN, LOGGER, TIMEOUT
|
||||
|
||||
|
||||
@dataclass
|
||||
class MotionSensor:
|
||||
"""Dataclass for motionsensors."""
|
||||
|
||||
id: str
|
||||
alive: bool | None = None
|
||||
fw_ver: str | None = None
|
||||
fw_type: str | None = None
|
||||
is_main_sensor: bool | None = None
|
||||
battery_voltage: int | None = None
|
||||
humidity: int | None = None
|
||||
temperature: float | None = None
|
||||
model: str | None = None
|
||||
|
||||
|
||||
class SensiboDataUpdateCoordinator(DataUpdateCoordinator):
|
||||
"""A Sensibo Data Update Coordinator."""
|
||||
|
||||
|
@ -98,6 +114,28 @@ class SensiboDataUpdateCoordinator(DataUpdateCoordinator):
|
|||
calibration_temp = dev["sensorsCalibration"].get("temperature")
|
||||
calibration_hum = dev["sensorsCalibration"].get("humidity")
|
||||
|
||||
# Sky plus supports functionality to use motion sensor as sensor for temp and humidity
|
||||
if main_sensor := dev["mainMeasurementsSensor"]:
|
||||
measurements = main_sensor["measurements"]
|
||||
temperature = measurements.get("temperature")
|
||||
humidity = measurements.get("humidity")
|
||||
|
||||
motion_sensors = [
|
||||
MotionSensor(
|
||||
id=motionsensor["id"],
|
||||
alive=motionsensor["connectionStatus"].get("isAlive"),
|
||||
fw_ver=motionsensor.get("firmwareVersion"),
|
||||
fw_type=motionsensor.get("firmwareType"),
|
||||
is_main_sensor=motionsensor.get("isMainSensor"),
|
||||
battery_voltage=motionsensor["measurements"].get("batteryVoltage"),
|
||||
humidity=motionsensor["measurements"].get("humidity"),
|
||||
temperature=motionsensor["measurements"].get("temperature"),
|
||||
model=motionsensor.get("productModel"),
|
||||
)
|
||||
for motionsensor in dev["motionSensors"]
|
||||
if dev["motionSensors"]
|
||||
]
|
||||
|
||||
device_data[unique_id] = {
|
||||
"id": unique_id,
|
||||
"mac": mac,
|
||||
|
@ -126,5 +164,6 @@ class SensiboDataUpdateCoordinator(DataUpdateCoordinator):
|
|||
"calibration_temp": calibration_temp,
|
||||
"calibration_hum": calibration_hum,
|
||||
"full_capabilities": capabilities,
|
||||
"motion_sensors": motion_sensors,
|
||||
}
|
||||
return device_data
|
||||
|
|
Loading…
Add table
Reference in a new issue