Home Assistant Unofficial Reference 2024.12.1
sensor.py
Go to the documentation of this file.
1 """Support for Envisalink sensors (shows panel info)."""
2 
3 from __future__ import annotations
4 
5 import logging
6 
7 from homeassistant.components.sensor import SensorEntity
8 from homeassistant.core import HomeAssistant, callback
9 from homeassistant.helpers.dispatcher import async_dispatcher_connect
10 from homeassistant.helpers.entity_platform import AddEntitiesCallback
11 from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
12 
13 from . import (
14  CONF_PARTITIONNAME,
15  DATA_EVL,
16  PARTITION_SCHEMA,
17  SIGNAL_KEYPAD_UPDATE,
18  SIGNAL_PARTITION_UPDATE,
19 )
20 from .entity import EnvisalinkEntity
21 
22 _LOGGER = logging.getLogger(__name__)
23 
24 
26  hass: HomeAssistant,
27  config: ConfigType,
28  async_add_entities: AddEntitiesCallback,
29  discovery_info: DiscoveryInfoType | None = None,
30 ) -> None:
31  """Perform the setup for Envisalink sensor entities."""
32  if not discovery_info:
33  return
34  configured_partitions = discovery_info["partitions"]
35 
36  entities = []
37  for part_num in configured_partitions:
38  entity_config_data = PARTITION_SCHEMA(configured_partitions[part_num])
39  entity = EnvisalinkSensor(
40  hass,
41  entity_config_data[CONF_PARTITIONNAME],
42  part_num,
43  hass.data[DATA_EVL].alarm_state["partition"][part_num],
44  hass.data[DATA_EVL],
45  )
46 
47  entities.append(entity)
48 
49  async_add_entities(entities)
50 
51 
53  """Representation of an Envisalink keypad."""
54 
55  def __init__(self, hass, partition_name, partition_number, info, controller):
56  """Initialize the sensor."""
57  self._icon_icon = "mdi:alarm"
58  self._partition_number_partition_number = partition_number
59 
60  _LOGGER.debug("Setting up sensor for partition: %s", partition_name)
61  super().__init__(f"{partition_name} Keypad", info, controller)
62 
63  async def async_added_to_hass(self) -> None:
64  """Register callbacks."""
65  self.async_on_removeasync_on_remove(
67  self.hasshass, SIGNAL_KEYPAD_UPDATE, self.async_update_callbackasync_update_callback
68  )
69  )
70  self.async_on_removeasync_on_remove(
72  self.hasshass, SIGNAL_PARTITION_UPDATE, self.async_update_callbackasync_update_callback
73  )
74  )
75 
76  @property
77  def icon(self):
78  """Return the icon if any."""
79  return self._icon_icon
80 
81  @property
82  def native_value(self):
83  """Return the overall state."""
84  return self._info_info["status"]["alpha"]
85 
86  @property
88  """Return the state attributes."""
89  return self._info_info["status"]
90 
91  @callback
92  def async_update_callback(self, partition):
93  """Update the partition state in HA, if needed."""
94  if partition is None or int(partition) == self._partition_number_partition_number:
95  self.async_write_ha_stateasync_write_ha_state()
None async_on_remove(self, CALLBACK_TYPE func)
Definition: entity.py:1331
Callable[[], None] async_dispatcher_connect(HomeAssistant hass, str signal, Callable[..., Any] target)
Definition: dispatcher.py:103