import logging from homeassistant.components.sensor import ( SensorDeviceClass, SensorEntity, SensorEntityDescription, SensorStateClass, ) from homeassistant.config_entries import ConfigEntry from homeassistant.const import UnitOfTemperature from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback from . import OumanEH800Device from .const import DOMAIN _LOGGER = logging.getLogger(__name__) TEMPERATURE_SENSORS: tuple[str, ...] = ( "outside_temperature", "l1_supply_temperature", "l1_room_temperature", "l1_tmrsp", ) async def async_setup_entry( hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback ) -> None: """Set up Ouman EH-800 device sensors.""" device = hass.data[DOMAIN].get(entry.entry_id) entities: list[OumanEH800DeviceSensor] = [ OumanEH800DeviceSensor( device, sensor, SensorEntityDescription( key=sensor, native_unit_of_measurement=UnitOfTemperature.CELSIUS, device_class=SensorDeviceClass.TEMPERATURE, state_class=SensorStateClass.MEASUREMENT, ), ) for sensor in TEMPERATURE_SENSORS ] async_add_entities(entities, True) class OumanEH800DeviceSensor(SensorEntity): entity_description: SensorEntityDescription def __init__( self, device: OumanEH800Device, value_key: str, description: SensorEntityDescription, ) -> None: self._device = device self._value_key = value_key self.entity_description = description self._attr_name = description.key.replace("_", " ").capitalize() self._attr_unique_id = f"ouman_eh800_{description.key}" self._attr_device_info = device.device_info @property def native_value(self) -> float: return self._device.device.data.get(self._value_key, 0.0) async def async_update(self) -> None: await self._device.async_update()