From eb9d242adea7dd94af90652c376770d3a06e53d7 Mon Sep 17 00:00:00 2001 From: Maciej Bieniek Date: Thu, 26 Aug 2021 18:40:42 +0200 Subject: [PATCH] Move AirlySensorEntityDescription to sensor platform (#55277) --- homeassistant/components/airly/const.py | 70 ------------------ homeassistant/components/airly/model.py | 14 ---- homeassistant/components/airly/sensor.py | 92 ++++++++++++++++++++++-- 3 files changed, 87 insertions(+), 89 deletions(-) delete mode 100644 homeassistant/components/airly/model.py diff --git a/homeassistant/components/airly/const.py b/homeassistant/components/airly/const.py index 79004abbe41..c583a56c22b 100644 --- a/homeassistant/components/airly/const.py +++ b/homeassistant/components/airly/const.py @@ -3,23 +3,6 @@ from __future__ import annotations from typing import Final -from homeassistant.components.sensor import STATE_CLASS_MEASUREMENT -from homeassistant.const import ( - CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, - DEVICE_CLASS_AQI, - DEVICE_CLASS_HUMIDITY, - DEVICE_CLASS_PM1, - DEVICE_CLASS_PM10, - DEVICE_CLASS_PM25, - DEVICE_CLASS_PRESSURE, - DEVICE_CLASS_TEMPERATURE, - PERCENTAGE, - PRESSURE_HPA, - TEMP_CELSIUS, -) - -from .model import AirlySensorEntityDescription - ATTR_API_ADVICE: Final = "ADVICE" ATTR_API_CAQI: Final = "CAQI" ATTR_API_CAQI_DESCRIPTION: Final = "DESCRIPTION" @@ -49,56 +32,3 @@ MANUFACTURER: Final = "Airly sp. z o.o." MAX_UPDATE_INTERVAL: Final = 90 MIN_UPDATE_INTERVAL: Final = 5 NO_AIRLY_SENSORS: Final = "There are no Airly sensors in this area yet." - -SENSOR_TYPES: tuple[AirlySensorEntityDescription, ...] = ( - AirlySensorEntityDescription( - key=ATTR_API_CAQI, - device_class=DEVICE_CLASS_AQI, - name=ATTR_API_CAQI, - native_unit_of_measurement="CAQI", - ), - AirlySensorEntityDescription( - key=ATTR_API_PM1, - device_class=DEVICE_CLASS_PM1, - name=ATTR_API_PM1, - native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, - state_class=STATE_CLASS_MEASUREMENT, - ), - AirlySensorEntityDescription( - key=ATTR_API_PM25, - device_class=DEVICE_CLASS_PM25, - name="PM2.5", - native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, - state_class=STATE_CLASS_MEASUREMENT, - ), - AirlySensorEntityDescription( - key=ATTR_API_PM10, - device_class=DEVICE_CLASS_PM10, - name=ATTR_API_PM10, - native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, - state_class=STATE_CLASS_MEASUREMENT, - ), - AirlySensorEntityDescription( - key=ATTR_API_HUMIDITY, - device_class=DEVICE_CLASS_HUMIDITY, - name=ATTR_API_HUMIDITY.capitalize(), - native_unit_of_measurement=PERCENTAGE, - state_class=STATE_CLASS_MEASUREMENT, - value=lambda value: round(value, 1), - ), - AirlySensorEntityDescription( - key=ATTR_API_PRESSURE, - device_class=DEVICE_CLASS_PRESSURE, - name=ATTR_API_PRESSURE.capitalize(), - native_unit_of_measurement=PRESSURE_HPA, - state_class=STATE_CLASS_MEASUREMENT, - ), - AirlySensorEntityDescription( - key=ATTR_API_TEMPERATURE, - device_class=DEVICE_CLASS_TEMPERATURE, - name=ATTR_API_TEMPERATURE.capitalize(), - native_unit_of_measurement=TEMP_CELSIUS, - state_class=STATE_CLASS_MEASUREMENT, - value=lambda value: round(value, 1), - ), -) diff --git a/homeassistant/components/airly/model.py b/homeassistant/components/airly/model.py deleted file mode 100644 index 38b433de34c..00000000000 --- a/homeassistant/components/airly/model.py +++ /dev/null @@ -1,14 +0,0 @@ -"""Type definitions for Airly integration.""" -from __future__ import annotations - -from dataclasses import dataclass -from typing import Callable - -from homeassistant.components.sensor import SensorEntityDescription - - -@dataclass -class AirlySensorEntityDescription(SensorEntityDescription): - """Class describing Airly sensor entities.""" - - value: Callable = round diff --git a/homeassistant/components/airly/sensor.py b/homeassistant/components/airly/sensor.py index b5d45afd2d8..7fbfe2077a7 100644 --- a/homeassistant/components/airly/sensor.py +++ b/homeassistant/components/airly/sensor.py @@ -1,11 +1,30 @@ """Support for the Airly sensor service.""" from __future__ import annotations -from typing import Any, cast +from dataclasses import dataclass +from typing import Any, Callable, cast -from homeassistant.components.sensor import SensorEntity +from homeassistant.components.sensor import ( + STATE_CLASS_MEASUREMENT, + SensorEntity, + SensorEntityDescription, +) from homeassistant.config_entries import ConfigEntry -from homeassistant.const import ATTR_ATTRIBUTION, CONF_NAME +from homeassistant.const import ( + ATTR_ATTRIBUTION, + CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, + CONF_NAME, + DEVICE_CLASS_AQI, + DEVICE_CLASS_HUMIDITY, + DEVICE_CLASS_PM1, + DEVICE_CLASS_PM10, + DEVICE_CLASS_PM25, + DEVICE_CLASS_PRESSURE, + DEVICE_CLASS_TEMPERATURE, + PERCENTAGE, + PRESSURE_HPA, + TEMP_CELSIUS, +) from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.typing import StateType @@ -18,8 +37,12 @@ from .const import ( ATTR_API_CAQI, ATTR_API_CAQI_DESCRIPTION, ATTR_API_CAQI_LEVEL, + ATTR_API_HUMIDITY, + ATTR_API_PM1, ATTR_API_PM10, ATTR_API_PM25, + ATTR_API_PRESSURE, + ATTR_API_TEMPERATURE, ATTR_DESCRIPTION, ATTR_LEVEL, ATTR_LIMIT, @@ -28,15 +51,74 @@ from .const import ( DEFAULT_NAME, DOMAIN, MANUFACTURER, - SENSOR_TYPES, SUFFIX_LIMIT, SUFFIX_PERCENT, ) -from .model import AirlySensorEntityDescription PARALLEL_UPDATES = 1 +@dataclass +class AirlySensorEntityDescription(SensorEntityDescription): + """Class describing Airly sensor entities.""" + + value: Callable = round + + +SENSOR_TYPES: tuple[AirlySensorEntityDescription, ...] = ( + AirlySensorEntityDescription( + key=ATTR_API_CAQI, + device_class=DEVICE_CLASS_AQI, + name=ATTR_API_CAQI, + native_unit_of_measurement="CAQI", + ), + AirlySensorEntityDescription( + key=ATTR_API_PM1, + device_class=DEVICE_CLASS_PM1, + name=ATTR_API_PM1, + native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, + state_class=STATE_CLASS_MEASUREMENT, + ), + AirlySensorEntityDescription( + key=ATTR_API_PM25, + device_class=DEVICE_CLASS_PM25, + name="PM2.5", + native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, + state_class=STATE_CLASS_MEASUREMENT, + ), + AirlySensorEntityDescription( + key=ATTR_API_PM10, + device_class=DEVICE_CLASS_PM10, + name=ATTR_API_PM10, + native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, + state_class=STATE_CLASS_MEASUREMENT, + ), + AirlySensorEntityDescription( + key=ATTR_API_HUMIDITY, + device_class=DEVICE_CLASS_HUMIDITY, + name=ATTR_API_HUMIDITY.capitalize(), + native_unit_of_measurement=PERCENTAGE, + state_class=STATE_CLASS_MEASUREMENT, + value=lambda value: round(value, 1), + ), + AirlySensorEntityDescription( + key=ATTR_API_PRESSURE, + device_class=DEVICE_CLASS_PRESSURE, + name=ATTR_API_PRESSURE.capitalize(), + native_unit_of_measurement=PRESSURE_HPA, + state_class=STATE_CLASS_MEASUREMENT, + ), + AirlySensorEntityDescription( + key=ATTR_API_TEMPERATURE, + device_class=DEVICE_CLASS_TEMPERATURE, + name=ATTR_API_TEMPERATURE.capitalize(), + native_unit_of_measurement=TEMP_CELSIUS, + state_class=STATE_CLASS_MEASUREMENT, + value=lambda value: round(value, 1), + ), +) + + async def async_setup_entry( hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback ) -> None: