Add support for state class for Airly sensor (#51285)
This commit is contained in:
parent
edcae74330
commit
c9178e58b5
4 changed files with 13 additions and 1 deletions
|
@ -3,6 +3,7 @@ from __future__ import annotations
|
||||||
|
|
||||||
from typing import Final
|
from typing import Final
|
||||||
|
|
||||||
|
from homeassistant.components.sensor import ATTR_STATE_CLASS, STATE_CLASS_MEASUREMENT
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
ATTR_DEVICE_CLASS,
|
ATTR_DEVICE_CLASS,
|
||||||
ATTR_ICON,
|
ATTR_ICON,
|
||||||
|
@ -50,23 +51,27 @@ SENSOR_TYPES: dict[str, SensorDescription] = {
|
||||||
ATTR_ICON: "mdi:blur",
|
ATTR_ICON: "mdi:blur",
|
||||||
ATTR_LABEL: ATTR_API_PM1,
|
ATTR_LABEL: ATTR_API_PM1,
|
||||||
ATTR_UNIT: CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
ATTR_UNIT: CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||||
|
ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT,
|
||||||
},
|
},
|
||||||
ATTR_API_HUMIDITY: {
|
ATTR_API_HUMIDITY: {
|
||||||
ATTR_DEVICE_CLASS: DEVICE_CLASS_HUMIDITY,
|
ATTR_DEVICE_CLASS: DEVICE_CLASS_HUMIDITY,
|
||||||
ATTR_ICON: None,
|
ATTR_ICON: None,
|
||||||
ATTR_LABEL: ATTR_API_HUMIDITY.capitalize(),
|
ATTR_LABEL: ATTR_API_HUMIDITY.capitalize(),
|
||||||
ATTR_UNIT: PERCENTAGE,
|
ATTR_UNIT: PERCENTAGE,
|
||||||
|
ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT,
|
||||||
},
|
},
|
||||||
ATTR_API_PRESSURE: {
|
ATTR_API_PRESSURE: {
|
||||||
ATTR_DEVICE_CLASS: DEVICE_CLASS_PRESSURE,
|
ATTR_DEVICE_CLASS: DEVICE_CLASS_PRESSURE,
|
||||||
ATTR_ICON: None,
|
ATTR_ICON: None,
|
||||||
ATTR_LABEL: ATTR_API_PRESSURE.capitalize(),
|
ATTR_LABEL: ATTR_API_PRESSURE.capitalize(),
|
||||||
ATTR_UNIT: PRESSURE_HPA,
|
ATTR_UNIT: PRESSURE_HPA,
|
||||||
|
ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT,
|
||||||
},
|
},
|
||||||
ATTR_API_TEMPERATURE: {
|
ATTR_API_TEMPERATURE: {
|
||||||
ATTR_DEVICE_CLASS: DEVICE_CLASS_TEMPERATURE,
|
ATTR_DEVICE_CLASS: DEVICE_CLASS_TEMPERATURE,
|
||||||
ATTR_ICON: None,
|
ATTR_ICON: None,
|
||||||
ATTR_LABEL: ATTR_API_TEMPERATURE.capitalize(),
|
ATTR_LABEL: ATTR_API_TEMPERATURE.capitalize(),
|
||||||
ATTR_UNIT: TEMP_CELSIUS,
|
ATTR_UNIT: TEMP_CELSIUS,
|
||||||
|
ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,3 +11,4 @@ class SensorDescription(TypedDict):
|
||||||
icon: str | None
|
icon: str | None
|
||||||
label: str
|
label: str
|
||||||
unit: str
|
unit: str
|
||||||
|
state_class: str
|
||||||
|
|
|
@ -3,7 +3,7 @@ from __future__ import annotations
|
||||||
|
|
||||||
from typing import Any, cast
|
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.config_entries import ConfigEntry
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
ATTR_ATTRIBUTION,
|
ATTR_ATTRIBUTION,
|
||||||
|
@ -66,6 +66,7 @@ class AirlySensor(CoordinatorEntity, SensorEntity):
|
||||||
self._state = None
|
self._state = None
|
||||||
self._unit_of_measurement = None
|
self._unit_of_measurement = None
|
||||||
self._attrs = {ATTR_ATTRIBUTION: ATTRIBUTION}
|
self._attrs = {ATTR_ATTRIBUTION: ATTRIBUTION}
|
||||||
|
self._attr_state_class = self._description[ATTR_STATE_CLASS]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self) -> str:
|
def name(self) -> str:
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
|
|
||||||
from homeassistant.components.airly.sensor import ATTRIBUTION
|
from homeassistant.components.airly.sensor import ATTRIBUTION
|
||||||
|
from homeassistant.components.sensor import ATTR_STATE_CLASS, STATE_CLASS_MEASUREMENT
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
ATTR_ATTRIBUTION,
|
ATTR_ATTRIBUTION,
|
||||||
ATTR_DEVICE_CLASS,
|
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_ATTRIBUTION) == ATTRIBUTION
|
||||||
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == PERCENTAGE
|
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == PERCENTAGE
|
||||||
assert state.attributes.get(ATTR_DEVICE_CLASS) == DEVICE_CLASS_HUMIDITY
|
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")
|
entry = registry.async_get("sensor.home_humidity")
|
||||||
assert entry
|
assert entry
|
||||||
|
@ -52,6 +54,7 @@ async def test_sensor(hass, aioclient_mock):
|
||||||
== CONCENTRATION_MICROGRAMS_PER_CUBIC_METER
|
== CONCENTRATION_MICROGRAMS_PER_CUBIC_METER
|
||||||
)
|
)
|
||||||
assert state.attributes.get(ATTR_ICON) == "mdi:blur"
|
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")
|
entry = registry.async_get("sensor.home_pm1")
|
||||||
assert entry
|
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_ATTRIBUTION) == ATTRIBUTION
|
||||||
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == PRESSURE_HPA
|
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_DEVICE_CLASS) == DEVICE_CLASS_PRESSURE
|
||||||
|
assert state.attributes.get(ATTR_STATE_CLASS) == STATE_CLASS_MEASUREMENT
|
||||||
|
|
||||||
entry = registry.async_get("sensor.home_pressure")
|
entry = registry.async_get("sensor.home_pressure")
|
||||||
assert entry
|
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_ATTRIBUTION) == ATTRIBUTION
|
||||||
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == TEMP_CELSIUS
|
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_DEVICE_CLASS) == DEVICE_CLASS_TEMPERATURE
|
||||||
|
assert state.attributes.get(ATTR_STATE_CLASS) == STATE_CLASS_MEASUREMENT
|
||||||
|
|
||||||
entry = registry.async_get("sensor.home_temperature")
|
entry = registry.async_get("sensor.home_temperature")
|
||||||
assert entry
|
assert entry
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue