Home Assistant Unofficial Reference 2024.12.1
binary_sensor.py
Go to the documentation of this file.
1 """Support for control of ElkM1 binary sensors."""
2 
3 from __future__ import annotations
4 
5 from typing import Any
6 
7 from elkm1_lib.const import ZoneLogicalStatus, ZoneType
8 from elkm1_lib.elements import Element
9 from elkm1_lib.zones import Zone
10 
11 from homeassistant.components.binary_sensor import BinarySensorEntity
12 from homeassistant.core import HomeAssistant
13 from homeassistant.helpers.entity_platform import AddEntitiesCallback
14 
15 from . import ElkM1ConfigEntry
16 from .entity import ElkAttachedEntity, ElkEntity
17 
18 
20  hass: HomeAssistant,
21  config_entry: ElkM1ConfigEntry,
22  async_add_entities: AddEntitiesCallback,
23 ) -> None:
24  """Create the Elk-M1 sensor platform."""
25  elk_data = config_entry.runtime_data
26  elk = elk_data.elk
27  auto_configure = elk_data.auto_configure
28 
29  entities: list[ElkEntity] = []
30  for element in elk.zones:
31  # Don't create binary sensors for zones that are analog
32  if element.definition in {ZoneType.TEMPERATURE, ZoneType.ANALOG_ZONE}: # type: ignore[attr-defined]
33  continue
34 
35  if auto_configure:
36  if not element.configured:
37  continue
38  elif not elk_data.config["zone"]["included"][element.index]:
39  continue
40 
41  entities.append(ElkBinarySensor(element, elk, elk_data))
42 
43  async_add_entities(entities)
44 
45 
47  """Representation of ElkM1 binary sensor."""
48 
49  _element: Zone
50  _attr_entity_registry_enabled_default = False
51 
52  def _element_changed(self, _: Element, changeset: Any) -> None:
53  # Zone in NORMAL state is OFF; any other state is ON
54  self._attr_is_on_attr_is_on = bool(
55  self._element_element.logical_status != ZoneLogicalStatus.NORMAL
56  )
None _element_changed(self, Element _, Any changeset)
None async_setup_entry(HomeAssistant hass, ElkM1ConfigEntry config_entry, AddEntitiesCallback async_add_entities)