Home Assistant Unofficial Reference 2024.12.1
binary_sensor.py
Go to the documentation of this file.
1 """The Flexit Nordic (BACnet) integration."""
2 
3 from collections.abc import Callable
4 from dataclasses import dataclass
5 
6 from flexit_bacnet import FlexitBACnet
7 
9  BinarySensorDeviceClass,
10  BinarySensorEntity,
11  BinarySensorEntityDescription,
12 )
13 from homeassistant.config_entries import ConfigEntry
14 from homeassistant.core import HomeAssistant
15 from homeassistant.helpers.entity_platform import AddEntitiesCallback
16 
17 from . import FlexitCoordinator
18 from .const import DOMAIN
19 from .entity import FlexitEntity
20 
21 
22 @dataclass(kw_only=True, frozen=True)
24  """Describes a Flexit binary sensor entity."""
25 
26  value_fn: Callable[[FlexitBACnet], bool]
27 
28 
29 SENSOR_TYPES: tuple[FlexitBinarySensorEntityDescription, ...] = (
31  key="air_filter_polluted",
32  device_class=BinarySensorDeviceClass.PROBLEM,
33  translation_key="air_filter_polluted",
34  value_fn=lambda data: data.air_filter_polluted,
35  ),
36 )
37 
38 
40  hass: HomeAssistant,
41  config_entry: ConfigEntry,
42  async_add_entities: AddEntitiesCallback,
43 ) -> None:
44  """Set up Flexit (bacnet) binary sensor from a config entry."""
45  coordinator: FlexitCoordinator = hass.data[DOMAIN][config_entry.entry_id]
46 
48  FlexitBinarySensor(coordinator, description) for description in SENSOR_TYPES
49  )
50 
51 
53  """Representation of a Flexit binary Sensor."""
54 
55  entity_description: FlexitBinarySensorEntityDescription
56 
57  def __init__(
58  self,
59  coordinator: FlexitCoordinator,
60  entity_description: FlexitBinarySensorEntityDescription,
61  ) -> None:
62  """Initialize Flexit (bacnet) sensor."""
63  super().__init__(coordinator)
64 
65  self.entity_descriptionentity_description = entity_description
66  self._attr_unique_id_attr_unique_id = (
67  f"{coordinator.device.serial_number}-{entity_description.key}"
68  )
69 
70  @property
71  def is_on(self) -> bool:
72  """Return value of binary sensor."""
73  return self.entity_descriptionentity_description.value_fn(self.coordinator.data)
None __init__(self, FlexitCoordinator coordinator, FlexitBinarySensorEntityDescription entity_description)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)