1 """IMGW-PIB binary sensor platform."""
3 from __future__
import annotations
5 from collections.abc
import Callable
6 from dataclasses
import dataclass
8 from imgw_pib.model
import HydrologicalData
11 BinarySensorDeviceClass,
13 BinarySensorEntityDescription,
18 from .
import ImgwPibConfigEntry
19 from .coordinator
import ImgwPibDataUpdateCoordinator
20 from .entity
import ImgwPibEntity
25 @dataclass(frozen=True, kw_only=True)
27 """IMGW-PIB sensor entity description."""
29 value: Callable[[HydrologicalData], bool |
None]
32 BINARY_SENSOR_TYPES: tuple[ImgwPibBinarySensorEntityDescription, ...] = (
35 translation_key=
"flood_warning",
36 device_class=BinarySensorDeviceClass.SAFETY,
37 value=
lambda data: data.flood_warning,
41 translation_key=
"flood_alarm",
42 device_class=BinarySensorDeviceClass.SAFETY,
43 value=
lambda data: data.flood_alarm,
50 entry: ImgwPibConfigEntry,
51 async_add_entities: AddEntitiesCallback,
53 """Add a IMGW-PIB binary sensor entity from a config_entry."""
54 coordinator = entry.runtime_data.coordinator
58 for description
in BINARY_SENSOR_TYPES
59 if getattr(coordinator.data, description.key)
is not None
64 """Define IMGW-PIB binary sensor entity."""
66 entity_description: ImgwPibBinarySensorEntityDescription
70 coordinator: ImgwPibDataUpdateCoordinator,
71 description: ImgwPibBinarySensorEntityDescription,
76 self.
_attr_unique_id_attr_unique_id = f
"{coordinator.station_id}_{description.key}"
81 """Return true if the binary sensor is on."""
None __init__(self, ImgwPibDataUpdateCoordinator coordinator, ImgwPibBinarySensorEntityDescription description)
None async_setup_entry(HomeAssistant hass, ImgwPibConfigEntry entry, AddEntitiesCallback async_add_entities)