From 3f8362fe1c96cbdadbd0fd431bc89fe92c7426a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Huryn?= Date: Thu, 20 Oct 2022 15:51:29 +0200 Subject: [PATCH] Refactor blebox sensors (#80671) refactor: sensors, entity description pick moved to async_setup_entry, removed redundant dataclass --- homeassistant/components/blebox/sensor.py | 32 ++++++++++------------- 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/homeassistant/components/blebox/sensor.py b/homeassistant/components/blebox/sensor.py index 60d94507f4b..471f8c6eb86 100644 --- a/homeassistant/components/blebox/sensor.py +++ b/homeassistant/components/blebox/sensor.py @@ -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 + self.entity_description = description @property def native_value(self):