mirror of
https://github.com/home-assistant/core.git
synced 2025-07-20 03:37:07 +00:00
Move AirlySensorEntityDescription to sensor platform (#55277)
This commit is contained in:
parent
fbcf21412d
commit
eb9d242ade
@ -3,23 +3,6 @@ from __future__ import annotations
|
|||||||
|
|
||||||
from typing import Final
|
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_ADVICE: Final = "ADVICE"
|
||||||
ATTR_API_CAQI: Final = "CAQI"
|
ATTR_API_CAQI: Final = "CAQI"
|
||||||
ATTR_API_CAQI_DESCRIPTION: Final = "DESCRIPTION"
|
ATTR_API_CAQI_DESCRIPTION: Final = "DESCRIPTION"
|
||||||
@ -49,56 +32,3 @@ MANUFACTURER: Final = "Airly sp. z o.o."
|
|||||||
MAX_UPDATE_INTERVAL: Final = 90
|
MAX_UPDATE_INTERVAL: Final = 90
|
||||||
MIN_UPDATE_INTERVAL: Final = 5
|
MIN_UPDATE_INTERVAL: Final = 5
|
||||||
NO_AIRLY_SENSORS: Final = "There are no Airly sensors in this area yet."
|
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),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
|
@ -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
|
|
@ -1,11 +1,30 @@
|
|||||||
"""Support for the Airly sensor service."""
|
"""Support for the Airly sensor service."""
|
||||||
from __future__ import annotations
|
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.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.core import HomeAssistant
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
from homeassistant.helpers.typing import StateType
|
from homeassistant.helpers.typing import StateType
|
||||||
@ -18,8 +37,12 @@ from .const import (
|
|||||||
ATTR_API_CAQI,
|
ATTR_API_CAQI,
|
||||||
ATTR_API_CAQI_DESCRIPTION,
|
ATTR_API_CAQI_DESCRIPTION,
|
||||||
ATTR_API_CAQI_LEVEL,
|
ATTR_API_CAQI_LEVEL,
|
||||||
|
ATTR_API_HUMIDITY,
|
||||||
|
ATTR_API_PM1,
|
||||||
ATTR_API_PM10,
|
ATTR_API_PM10,
|
||||||
ATTR_API_PM25,
|
ATTR_API_PM25,
|
||||||
|
ATTR_API_PRESSURE,
|
||||||
|
ATTR_API_TEMPERATURE,
|
||||||
ATTR_DESCRIPTION,
|
ATTR_DESCRIPTION,
|
||||||
ATTR_LEVEL,
|
ATTR_LEVEL,
|
||||||
ATTR_LIMIT,
|
ATTR_LIMIT,
|
||||||
@ -28,15 +51,74 @@ from .const import (
|
|||||||
DEFAULT_NAME,
|
DEFAULT_NAME,
|
||||||
DOMAIN,
|
DOMAIN,
|
||||||
MANUFACTURER,
|
MANUFACTURER,
|
||||||
SENSOR_TYPES,
|
|
||||||
SUFFIX_LIMIT,
|
SUFFIX_LIMIT,
|
||||||
SUFFIX_PERCENT,
|
SUFFIX_PERCENT,
|
||||||
)
|
)
|
||||||
from .model import AirlySensorEntityDescription
|
|
||||||
|
|
||||||
PARALLEL_UPDATES = 1
|
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(
|
async def async_setup_entry(
|
||||||
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
|
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
|
||||||
) -> None:
|
) -> None:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user