mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 21:27:38 +00:00
Implement measurement sensor for Sensibo (#66949)
This commit is contained in:
parent
cc9fd2bcba
commit
2474d84e35
@ -1,6 +1,7 @@
|
|||||||
"""DataUpdateCoordinator for the Sensibo integration."""
|
"""DataUpdateCoordinator for the Sensibo integration."""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from dataclasses import dataclass
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
from typing import Any
|
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
|
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):
|
class SensiboDataUpdateCoordinator(DataUpdateCoordinator):
|
||||||
"""A Sensibo Data Update Coordinator."""
|
"""A Sensibo Data Update Coordinator."""
|
||||||
|
|
||||||
@ -98,6 +114,28 @@ class SensiboDataUpdateCoordinator(DataUpdateCoordinator):
|
|||||||
calibration_temp = dev["sensorsCalibration"].get("temperature")
|
calibration_temp = dev["sensorsCalibration"].get("temperature")
|
||||||
calibration_hum = dev["sensorsCalibration"].get("humidity")
|
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] = {
|
device_data[unique_id] = {
|
||||||
"id": unique_id,
|
"id": unique_id,
|
||||||
"mac": mac,
|
"mac": mac,
|
||||||
@ -126,5 +164,6 @@ class SensiboDataUpdateCoordinator(DataUpdateCoordinator):
|
|||||||
"calibration_temp": calibration_temp,
|
"calibration_temp": calibration_temp,
|
||||||
"calibration_hum": calibration_hum,
|
"calibration_hum": calibration_hum,
|
||||||
"full_capabilities": capabilities,
|
"full_capabilities": capabilities,
|
||||||
|
"motion_sensors": motion_sensors,
|
||||||
}
|
}
|
||||||
return device_data
|
return device_data
|
||||||
|
Loading…
x
Reference in New Issue
Block a user