Home Assistant Unofficial Reference 2024.12.1
binary_sensor.py
Go to the documentation of this file.
1 """Support for Rheem EcoNet water heaters."""
2 
3 from __future__ import annotations
4 
5 from pyeconet.equipment import EquipmentType
6 
8  BinarySensorDeviceClass,
9  BinarySensorEntity,
10  BinarySensorEntityDescription,
11 )
12 from homeassistant.config_entries import ConfigEntry
13 from homeassistant.core import HomeAssistant
14 from homeassistant.helpers.entity_platform import AddEntitiesCallback
15 
16 from .const import DOMAIN, EQUIPMENT
17 from .entity import EcoNetEntity
18 
19 BINARY_SENSOR_TYPES: tuple[BinarySensorEntityDescription, ...] = (
21  key="shutoff_valve_open",
22  name="shutoff_valve",
23  device_class=BinarySensorDeviceClass.OPENING,
24  ),
26  key="running",
27  name="running",
28  device_class=BinarySensorDeviceClass.POWER,
29  ),
31  key="screen_locked",
32  name="screen_locked",
33  device_class=BinarySensorDeviceClass.LOCK,
34  ),
36  key="beep_enabled",
37  name="beep_enabled",
38  device_class=BinarySensorDeviceClass.SOUND,
39  ),
40 )
41 
42 
44  hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
45 ) -> None:
46  """Set up EcoNet binary sensor based on a config entry."""
47  equipment = hass.data[DOMAIN][EQUIPMENT][entry.entry_id]
48  all_equipment = equipment[EquipmentType.WATER_HEATER].copy()
49  all_equipment.extend(equipment[EquipmentType.THERMOSTAT].copy())
50 
51  entities = [
52  EcoNetBinarySensor(_equip, description)
53  for _equip in all_equipment
54  for description in BINARY_SENSOR_TYPES
55  if getattr(_equip, description.key, None) is not None
56  ]
57 
58  async_add_entities(entities)
59 
60 
62  """Define a Econet binary sensor."""
63 
64  def __init__(
65  self, econet_device, description: BinarySensorEntityDescription
66  ) -> None:
67  """Initialize."""
68  super().__init__(econet_device)
69  self.entity_descriptionentity_description = description
70  self._attr_name_attr_name_attr_name = f"{econet_device.device_name}_{description.name}"
71  self._attr_unique_id_attr_unique_id_attr_unique_id = (
72  f"{econet_device.device_id}_{econet_device.device_name}_{description.name}"
73  )
74 
75  @property
76  def is_on(self):
77  """Return true if the binary sensor is on."""
78  return getattr(self._econet_econet, self.entity_descriptionentity_description.key)
None __init__(self, econet_device, BinarySensorEntityDescription description)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)