1 """Support for sensors."""
3 from __future__
import annotations
5 from typing
import Final
7 from aiocomelit
import ComelitSerialBridgeObject, ComelitVedoZoneObject
8 from aiocomelit.const
import ALARM_ZONES, BRIDGE, OTHER, AlarmZoneState
13 SensorEntityDescription,
22 from .const
import DOMAIN
23 from .coordinator
import ComelitSerialBridge, ComelitVedoSystem
25 SENSOR_BRIDGE_TYPES: Final = (
28 native_unit_of_measurement=UnitOfPower.WATT,
29 device_class=SensorDeviceClass.POWER,
33 SENSOR_VEDO_TYPES: Final = (
36 translation_key=
"zone_status",
38 device_class=SensorDeviceClass.ENUM,
39 options=[zone_state.value
for zone_state
in AlarmZoneState],
46 config_entry: ConfigEntry,
47 async_add_entities: AddEntitiesCallback,
49 """Set up Comelit sensors."""
51 if config_entry.data.get(CONF_TYPE, BRIDGE) == BRIDGE:
59 config_entry: ConfigEntry,
60 async_add_entities: AddEntitiesCallback,
62 """Set up Comelit Bridge sensors."""
64 coordinator: ComelitSerialBridge = hass.data[DOMAIN][config_entry.entry_id]
66 entities: list[ComelitBridgeSensorEntity] = []
67 for device
in coordinator.data[OTHER].values():
70 coordinator, device, config_entry.entry_id, sensor_desc
72 for sensor_desc
in SENSOR_BRIDGE_TYPES
79 config_entry: ConfigEntry,
80 async_add_entities: AddEntitiesCallback,
82 """Set up Comelit VEDO sensors."""
84 coordinator: ComelitVedoSystem = hass.data[DOMAIN][config_entry.entry_id]
86 entities: list[ComelitVedoSensorEntity] = []
87 for device
in coordinator.data[ALARM_ZONES].values():
90 coordinator, device, config_entry.entry_id, sensor_desc
92 for sensor_desc
in SENSOR_VEDO_TYPES
100 _attr_has_entity_name =
True
105 coordinator: ComelitSerialBridge,
106 device: ComelitSerialBridgeObject,
107 config_entry_entry_id: str,
108 description: SensorEntityDescription,
110 """Init sensor entity."""
111 self.
_api_api = coordinator.api
133 _attr_has_entity_name =
True
137 coordinator: ComelitVedoSystem,
138 zone: ComelitVedoZoneObject,
139 config_entry_entry_id: str,
140 description: SensorEntityDescription,
142 """Init sensor entity."""
143 self.
_api_api = coordinator.api
156 return self.coordinator.data[ALARM_ZONES][self.
_zone_zone.index]
160 """Sensor availability."""
161 return self.
_zone_object_zone_object.human_status != AlarmZoneState.UNAVAILABLE
166 if (status := self.
_zone_object_zone_object.human_status) == AlarmZoneState.UNKNOWN:
None __init__(self, ComelitSerialBridge coordinator, ComelitSerialBridgeObject device, str config_entry_entry_id, SensorEntityDescription description)
StateType native_value(self)
ComelitVedoZoneObject _zone_object(self)
None __init__(self, ComelitVedoSystem coordinator, ComelitVedoZoneObject zone, str config_entry_entry_id, SensorEntityDescription description)
StateType native_value(self)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
None async_setup_vedo_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
None async_setup_bridge_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)