"""Sensor entities for MB-Secure.""" from __future__ import annotations from functools import partial from homeassistant.components.sensor import SensorEntity from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback from .coordinator import MBSecureCoordinator from .entity import MBSecureEntity, async_setup_dynamic_entities async def async_setup_entry( hass: HomeAssistant, entry: ConfigEntry[MBSecureCoordinator], async_add_entities: AddEntitiesCallback, ) -> None: """Set up capability-reported controller and module status entities.""" coordinator = entry.runtime_data assert coordinator.info is not None and coordinator.info.bridge_id is not None bridge_id = coordinator.info.bridge_id for collection_name, capability in ( ("controllers", "snapshot"), ("modules", "status"), ): async_setup_dynamic_entities( entry, async_add_entities, collection_name=collection_name, capability=capability, factory=partial( MBSecureStateEntity, coordinator, bridge_id, collection_name ), ) class MBSecureStateEntity(MBSecureEntity, SensorEntity): """Represent a normalized textual object state.""" @property def native_value(self) -> str | None: """Return the normalized state value.""" item = self.bridge_object return item.state if item is not None else None