1 """Support for RDW binary sensors."""
3 from __future__
import annotations
5 from collections.abc
import Callable
6 from dataclasses
import dataclass
8 from vehicle
import Vehicle
11 BinarySensorDeviceClass,
13 BinarySensorEntityDescription,
21 DataUpdateCoordinator,
24 from .const
import DOMAIN
27 @dataclass(frozen=True, kw_only=True)
29 """Describes RDW binary sensor entity."""
31 is_on_fn: Callable[[Vehicle], bool |
None]
34 BINARY_SENSORS: tuple[RDWBinarySensorEntityDescription, ...] = (
36 key=
"liability_insured",
37 translation_key=
"liability_insured",
38 is_on_fn=
lambda vehicle: vehicle.liability_insured,
42 translation_key=
"pending_recall",
43 device_class=BinarySensorDeviceClass.PROBLEM,
44 is_on_fn=
lambda vehicle: vehicle.pending_recall,
52 async_add_entities: AddEntitiesCallback,
54 """Set up RDW binary sensors based on a config entry."""
55 coordinator = hass.data[DOMAIN][entry.entry_id]
58 coordinator=coordinator,
59 description=description,
61 for description
in BINARY_SENSORS
62 if description.is_on_fn(coordinator.data)
is not None
67 CoordinatorEntity[DataUpdateCoordinator[Vehicle]], BinarySensorEntity
69 """Defines an RDW binary sensor."""
71 entity_description: RDWBinarySensorEntityDescription
72 _attr_has_entity_name =
True
77 coordinator: DataUpdateCoordinator[Vehicle],
78 description: RDWBinarySensorEntityDescription,
80 """Initialize RDW binary sensor."""
81 super().
__init__(coordinator=coordinator)
83 self.
_attr_unique_id_attr_unique_id = f
"{coordinator.data.license_plate}_{description.key}"
86 entry_type=DeviceEntryType.SERVICE,
87 identifiers={(DOMAIN, coordinator.data.license_plate)},
88 manufacturer=coordinator.data.brand,
89 name=f
"{coordinator.data.brand} {coordinator.data.license_plate}",
90 model=coordinator.data.model,
91 configuration_url=f
"https://ovi.rdw.nl/default.aspx?kenteken={coordinator.data.license_plate}",
96 """Return the state of the sensor."""
None __init__(self, *DataUpdateCoordinator[Vehicle] coordinator, RDWBinarySensorEntityDescription description)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)