1 """Binary Sensor platform for Garages Amsterdam."""
3 from __future__
import annotations
5 from collections.abc
import Callable
6 from dataclasses
import dataclass
8 from odp_amsterdam
import Garage
11 BinarySensorDeviceClass,
13 BinarySensorEntityDescription,
18 from .
import GaragesAmsterdamConfigEntry
19 from .coordinator
import GaragesAmsterdamDataUpdateCoordinator
20 from .entity
import GaragesAmsterdamEntity
23 @dataclass(frozen=True, kw_only=True)
25 """Class describing Garages Amsterdam binary sensor entity."""
27 is_on: Callable[[Garage], bool]
30 BINARY_SENSORS: tuple[GaragesAmsterdamBinarySensorEntityDescription, ...] = (
33 translation_key=
"state",
34 device_class=BinarySensorDeviceClass.PROBLEM,
35 is_on=
lambda garage: garage.state !=
"ok",
42 entry: GaragesAmsterdamConfigEntry,
43 async_add_entities: AddEntitiesCallback,
45 """Defer sensor setup to the shared sensor module."""
46 coordinator = entry.runtime_data
50 coordinator=coordinator,
51 garage_name=entry.data[
"garage_name"],
52 description=description,
54 for description
in BINARY_SENSORS
59 """Binary Sensor representing garages amsterdam data."""
61 entity_description: GaragesAmsterdamBinarySensorEntityDescription
66 coordinator: GaragesAmsterdamDataUpdateCoordinator,
68 description: GaragesAmsterdamBinarySensorEntityDescription,
70 """Initialize garages amsterdam binary sensor."""
71 super().
__init__(coordinator, garage_name)
77 """If the binary sensor is currently on or off."""
None __init__(self, *GaragesAmsterdamDataUpdateCoordinator coordinator, str garage_name, GaragesAmsterdamBinarySensorEntityDescription description)
None async_setup_entry(HomeAssistant hass, GaragesAmsterdamConfigEntry entry, AddEntitiesCallback async_add_entities)