Home Assistant Unofficial Reference 2024.12.1
binary_sensor.py
Go to the documentation of this file.
1 """Support for Aseko Pool Live binary sensors."""
2 
3 from __future__ import annotations
4 
5 from collections.abc import Callable
6 from dataclasses import dataclass
7 
8 from aioaseko import Unit
9 
11  BinarySensorEntity,
12  BinarySensorEntityDescription,
13 )
14 from homeassistant.core import HomeAssistant
15 from homeassistant.helpers.entity_platform import AddEntitiesCallback
16 
17 from .coordinator import AsekoConfigEntry
18 from .entity import AsekoEntity
19 
20 
21 @dataclass(frozen=True, kw_only=True)
23  """Describes an Aseko binary sensor entity."""
24 
25  value_fn: Callable[[Unit], bool | None]
26 
27 
28 BINARY_SENSORS: tuple[AsekoBinarySensorEntityDescription, ...] = (
30  key="water_flow",
31  translation_key="water_flow_to_probes",
32  value_fn=lambda unit: unit.water_flow_to_probes,
33  ),
34 )
35 
36 
38  hass: HomeAssistant,
39  config_entry: AsekoConfigEntry,
40  async_add_entities: AddEntitiesCallback,
41 ) -> None:
42  """Set up the Aseko Pool Live binary sensors."""
43  coordinator = config_entry.runtime_data
44  units = coordinator.data.values()
46  AsekoBinarySensorEntity(unit, coordinator, description)
47  for description in BINARY_SENSORS
48  for unit in units
49  if description.value_fn(unit) is not None
50  )
51 
52 
54  """Representation of an Aseko binary sensor entity."""
55 
56  entity_description: AsekoBinarySensorEntityDescription
57 
58  @property
59  def is_on(self) -> bool | None:
60  """Return the state of the sensor."""
61  return self.entity_descriptionentity_description.value_fn(self.unitunit)
None async_setup_entry(HomeAssistant hass, AsekoConfigEntry config_entry, AddEntitiesCallback async_add_entities)