Refactor blebox sensors (#80671)
refactor: sensors, entity description pick moved to async_setup_entry, removed redundant dataclass
This commit is contained in:
parent
e84e5f134e
commit
3f8362fe1c
1 changed files with 14 additions and 18 deletions
|
@ -1,5 +1,4 @@
|
|||
"""BleBox sensor entities."""
|
||||
from dataclasses import dataclass
|
||||
|
||||
from blebox_uniapi.box import Box
|
||||
import blebox_uniapi.sensor
|
||||
|
@ -17,29 +16,23 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
|||
from . import BleBoxEntity
|
||||
from .const import DOMAIN, PRODUCT
|
||||
|
||||
|
||||
@dataclass
|
||||
class BleboxSensorEntityDescription(SensorEntityDescription):
|
||||
"""Class describing Blebox sensor entities."""
|
||||
|
||||
|
||||
SENSOR_TYPES = (
|
||||
BleboxSensorEntityDescription(
|
||||
SensorEntityDescription(
|
||||
key="pm1",
|
||||
device_class=SensorDeviceClass.PM1,
|
||||
native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
),
|
||||
BleboxSensorEntityDescription(
|
||||
SensorEntityDescription(
|
||||
key="pm2_5",
|
||||
device_class=SensorDeviceClass.PM25,
|
||||
native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
),
|
||||
BleboxSensorEntityDescription(
|
||||
SensorEntityDescription(
|
||||
key="pm10",
|
||||
device_class=SensorDeviceClass.PM10,
|
||||
native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
),
|
||||
BleboxSensorEntityDescription(
|
||||
SensorEntityDescription(
|
||||
key="temperature",
|
||||
device_class=SensorDeviceClass.TEMPERATURE,
|
||||
native_unit_of_measurement=TEMP_CELSIUS,
|
||||
|
@ -55,7 +48,10 @@ async def async_setup_entry(
|
|||
"""Set up a BleBox entry."""
|
||||
product: Box = hass.data[DOMAIN][config_entry.entry_id][PRODUCT]
|
||||
entities = [
|
||||
BleBoxSensorEntity(feature) for feature in product.features.get("sensors", [])
|
||||
BleBoxSensorEntity(feature, description)
|
||||
for feature in product.features.get("sensors", [])
|
||||
for description in SENSOR_TYPES
|
||||
if description.key == feature.device_class
|
||||
]
|
||||
async_add_entities(entities, True)
|
||||
|
||||
|
@ -63,14 +59,14 @@ async def async_setup_entry(
|
|||
class BleBoxSensorEntity(BleBoxEntity[blebox_uniapi.sensor.BaseSensor], SensorEntity):
|
||||
"""Representation of a BleBox sensor feature."""
|
||||
|
||||
def __init__(self, feature: blebox_uniapi.sensor.BaseSensor) -> None:
|
||||
def __init__(
|
||||
self,
|
||||
feature: blebox_uniapi.sensor.BaseSensor,
|
||||
description: SensorEntityDescription,
|
||||
) -> None:
|
||||
"""Initialize a BleBox sensor feature."""
|
||||
super().__init__(feature)
|
||||
|
||||
for description in SENSOR_TYPES:
|
||||
if description.key == feature.device_class:
|
||||
self.entity_description = description
|
||||
break
|
||||
|
||||
@property
|
||||
def native_value(self):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue