Implement measurement sensor for Sensibo (#66949)

This commit is contained in:
G Johansson 2022-03-05 22:59:15 +01:00 committed by GitHub
parent cc9fd2bcba
commit 2474d84e35
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -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