From cd5970c68f60eec4ad445129ed29474c614cd0c8 Mon Sep 17 00:00:00 2001 From: schizza Date: Tue, 12 Mar 2024 13:40:45 +0100 Subject: [PATCH] Fixed issue with suggested unit of measurement. --- custom_components/sws12500/sensor.py | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/custom_components/sws12500/sensor.py b/custom_components/sws12500/sensor.py index 00a2202..c5534e1 100644 --- a/custom_components/sws12500/sensor.py +++ b/custom_components/sws12500/sensor.py @@ -1,5 +1,7 @@ """Sensors definition for SWS12500.""" from dataclasses import dataclass +from collections.abc import Callable +from typing import Any from homeassistant.components.sensor import ( SensorDeviceClass, @@ -11,9 +13,13 @@ from homeassistant.config_entries import ConfigEntry from homeassistant.const import ( UnitOfIrradiance, UnitOfPrecipitationDepth, + UnitOfVolumetricFlux, UnitOfPressure, UnitOfSpeed, UnitOfTemperature, + DEGREE, + UV_INDEX, + PERCENTAGE ) from homeassistant.core import HomeAssistant, callback from homeassistant.helpers.device_registry import DeviceEntryType @@ -47,6 +53,8 @@ from .const import ( class WeatherSensorEntityDescription(SensorEntityDescription): """Describe Weather Sensor entities.""" + attr_fn: Callable[[dict[str, Any]], dict[str, StateType]] = lambda _: {} + unit_fn: Callable[[bool], str | None] = lambda _: None SENSOR_TYPES: tuple[WeatherSensorEntityDescription, ...] = ( WeatherSensorEntityDescription( @@ -55,11 +63,11 @@ SENSOR_TYPES: tuple[WeatherSensorEntityDescription, ...] = ( state_class=SensorStateClass.MEASUREMENT, icon="mdi:thermometer", device_class=SensorDeviceClass.TEMPERATURE, - translation_key=f"{INDOOR_TEMP}", + translation_key=INDOOR_TEMP, ), WeatherSensorEntityDescription( key=INDOOR_HUMIDITY, - native_unit_of_measurement="%", + native_unit_of_measurement=PERCENTAGE, state_class=SensorStateClass.MEASUREMENT, icon="mdi:thermometer", device_class=SensorDeviceClass.HUMIDITY, @@ -75,7 +83,7 @@ SENSOR_TYPES: tuple[WeatherSensorEntityDescription, ...] = ( ), WeatherSensorEntityDescription( key=OUTSIDE_HUMIDITY, - native_unit_of_measurement="%", + native_unit_of_measurement=PERCENTAGE, state_class=SensorStateClass.MEASUREMENT, icon="mdi:thermometer", device_class=SensorDeviceClass.HUMIDITY, @@ -118,8 +126,9 @@ SENSOR_TYPES: tuple[WeatherSensorEntityDescription, ...] = ( ), WeatherSensorEntityDescription( key=WIND_DIR, - native_unit_of_measurement="°", + native_unit_of_measurement=DEGREE, state_class=SensorStateClass.MEASUREMENT, + suggested_display_precision=None, icon="mdi:sign-direction", translation_key=WIND_DIR, ), @@ -135,10 +144,10 @@ SENSOR_TYPES: tuple[WeatherSensorEntityDescription, ...] = ( ), WeatherSensorEntityDescription( key=DAILY_RAIN, - native_unit_of_measurement="in/d", + native_unit_of_measurement=UnitOfVolumetricFlux.INCHES_PER_DAY, state_class=SensorStateClass.MEASUREMENT, device_class=SensorDeviceClass.PRECIPITATION_INTENSITY, - suggested_unit_of_measurement="mm/h", + suggested_unit_of_measurement=UnitOfVolumetricFlux.MILLIMETERS_PER_DAY, suggested_display_precision=2, icon="mdi:weather-pouring", translation_key=DAILY_RAIN, @@ -154,7 +163,7 @@ SENSOR_TYPES: tuple[WeatherSensorEntityDescription, ...] = ( WeatherSensorEntityDescription( key=UV, state_class=SensorStateClass.MEASUREMENT, - native_unit_of_measurement="", + native_unit_of_measurement=UV_INDEX, icon="mdi:sunglasses", translation_key=UV, ), @@ -226,11 +235,6 @@ class WeatherSensor(CoordinatorEntity[WeatherDataUpdateCoordinator], SensorEntit """Return stateClass.""" return str(self.entity_description.state_class) - @property - def suggested_unit_of_measurement(self) -> str: - """Return sugestet_unit_of_measurement.""" - return str(self.entity_description.suggested_unit_of_measurement) - @property def device_info(self) -> DeviceInfo: """Device info."""