diff --git a/homeassistant/components/airly/const.py b/homeassistant/components/airly/const.py index c3dd51e4f69..a860a7a1b5a 100644 --- a/homeassistant/components/airly/const.py +++ b/homeassistant/components/airly/const.py @@ -3,6 +3,7 @@ from __future__ import annotations from typing import Final +from homeassistant.components.sensor import ATTR_STATE_CLASS, STATE_CLASS_MEASUREMENT from homeassistant.const import ( ATTR_DEVICE_CLASS, ATTR_ICON, @@ -50,23 +51,27 @@ SENSOR_TYPES: dict[str, SensorDescription] = { ATTR_ICON: "mdi:blur", ATTR_LABEL: ATTR_API_PM1, ATTR_UNIT: CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, + ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT, }, ATTR_API_HUMIDITY: { ATTR_DEVICE_CLASS: DEVICE_CLASS_HUMIDITY, ATTR_ICON: None, ATTR_LABEL: ATTR_API_HUMIDITY.capitalize(), ATTR_UNIT: PERCENTAGE, + ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT, }, ATTR_API_PRESSURE: { ATTR_DEVICE_CLASS: DEVICE_CLASS_PRESSURE, ATTR_ICON: None, ATTR_LABEL: ATTR_API_PRESSURE.capitalize(), ATTR_UNIT: PRESSURE_HPA, + ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT, }, ATTR_API_TEMPERATURE: { ATTR_DEVICE_CLASS: DEVICE_CLASS_TEMPERATURE, ATTR_ICON: None, ATTR_LABEL: ATTR_API_TEMPERATURE.capitalize(), ATTR_UNIT: TEMP_CELSIUS, + ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT, }, } diff --git a/homeassistant/components/airly/model.py b/homeassistant/components/airly/model.py index 42091d449e3..6109b6e71d9 100644 --- a/homeassistant/components/airly/model.py +++ b/homeassistant/components/airly/model.py @@ -11,3 +11,4 @@ class SensorDescription(TypedDict): icon: str | None label: str unit: str + state_class: str diff --git a/homeassistant/components/airly/sensor.py b/homeassistant/components/airly/sensor.py index 4544a806349..562cfec10d5 100644 --- a/homeassistant/components/airly/sensor.py +++ b/homeassistant/components/airly/sensor.py @@ -3,7 +3,7 @@ from __future__ import annotations from typing import Any, cast -from homeassistant.components.sensor import SensorEntity +from homeassistant.components.sensor import ATTR_STATE_CLASS, SensorEntity from homeassistant.config_entries import ConfigEntry from homeassistant.const import ( ATTR_ATTRIBUTION, @@ -66,6 +66,7 @@ class AirlySensor(CoordinatorEntity, SensorEntity): self._state = None self._unit_of_measurement = None self._attrs = {ATTR_ATTRIBUTION: ATTRIBUTION} + self._attr_state_class = self._description[ATTR_STATE_CLASS] @property def name(self) -> str: diff --git a/tests/components/airly/test_sensor.py b/tests/components/airly/test_sensor.py index 925f3acb6d2..7db3c81f44d 100644 --- a/tests/components/airly/test_sensor.py +++ b/tests/components/airly/test_sensor.py @@ -2,6 +2,7 @@ from datetime import timedelta from homeassistant.components.airly.sensor import ATTRIBUTION +from homeassistant.components.sensor import ATTR_STATE_CLASS, STATE_CLASS_MEASUREMENT from homeassistant.const import ( ATTR_ATTRIBUTION, ATTR_DEVICE_CLASS, @@ -38,6 +39,7 @@ async def test_sensor(hass, aioclient_mock): assert state.attributes.get(ATTR_ATTRIBUTION) == ATTRIBUTION assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == PERCENTAGE assert state.attributes.get(ATTR_DEVICE_CLASS) == DEVICE_CLASS_HUMIDITY + assert state.attributes.get(ATTR_STATE_CLASS) == STATE_CLASS_MEASUREMENT entry = registry.async_get("sensor.home_humidity") assert entry @@ -52,6 +54,7 @@ async def test_sensor(hass, aioclient_mock): == CONCENTRATION_MICROGRAMS_PER_CUBIC_METER ) assert state.attributes.get(ATTR_ICON) == "mdi:blur" + assert state.attributes.get(ATTR_STATE_CLASS) == STATE_CLASS_MEASUREMENT entry = registry.async_get("sensor.home_pm1") assert entry @@ -63,6 +66,7 @@ async def test_sensor(hass, aioclient_mock): assert state.attributes.get(ATTR_ATTRIBUTION) == ATTRIBUTION assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == PRESSURE_HPA assert state.attributes.get(ATTR_DEVICE_CLASS) == DEVICE_CLASS_PRESSURE + assert state.attributes.get(ATTR_STATE_CLASS) == STATE_CLASS_MEASUREMENT entry = registry.async_get("sensor.home_pressure") assert entry @@ -74,6 +78,7 @@ async def test_sensor(hass, aioclient_mock): assert state.attributes.get(ATTR_ATTRIBUTION) == ATTRIBUTION assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == TEMP_CELSIUS assert state.attributes.get(ATTR_DEVICE_CLASS) == DEVICE_CLASS_TEMPERATURE + assert state.attributes.get(ATTR_STATE_CLASS) == STATE_CLASS_MEASUREMENT entry = registry.async_get("sensor.home_temperature") assert entry