1 """Support for RDW sensors."""
3 from __future__
import annotations
5 from collections.abc
import Callable
6 from dataclasses
import dataclass
7 from datetime
import date
9 from vehicle
import Vehicle
14 SensorEntityDescription,
22 DataUpdateCoordinator,
25 from .const
import CONF_LICENSE_PLATE, DOMAIN
28 @dataclass(frozen=True, kw_only=True)
30 """Describes RDW sensor entity."""
32 value_fn: Callable[[Vehicle], date | str | float |
None]
35 SENSORS: tuple[RDWSensorEntityDescription, ...] = (
38 translation_key=
"apk_expiration",
39 device_class=SensorDeviceClass.DATE,
40 value_fn=
lambda vehicle: vehicle.apk_expiration,
43 key=
"ascription_date",
44 translation_key=
"ascription_date",
45 device_class=SensorDeviceClass.DATE,
46 value_fn=
lambda vehicle: vehicle.ascription_date,
54 async_add_entities: AddEntitiesCallback,
56 """Set up RDW sensors based on a config entry."""
57 coordinator = hass.data[DOMAIN][entry.entry_id]
60 coordinator=coordinator,
61 license_plate=entry.data[CONF_LICENSE_PLATE],
62 description=description,
64 for description
in SENSORS
69 """Defines an RDW sensor."""
71 entity_description: RDWSensorEntityDescription
72 _attr_has_entity_name =
True
77 coordinator: DataUpdateCoordinator[Vehicle],
79 description: RDWSensorEntityDescription,
81 """Initialize RDW sensor."""
82 super().
__init__(coordinator=coordinator)
87 entry_type=DeviceEntryType.SERVICE,
88 identifiers={(DOMAIN, f
"{license_plate}")},
89 manufacturer=coordinator.data.brand,
90 name=f
"{coordinator.data.brand} {coordinator.data.license_plate}",
91 model=coordinator.data.model,
92 configuration_url=f
"https://ovi.rdw.nl/default.aspx?kenteken={coordinator.data.license_plate}",
97 """Return the state of the sensor."""
None __init__(self, *DataUpdateCoordinator[Vehicle] coordinator, str license_plate, RDWSensorEntityDescription description)
date|str|float|None native_value(self)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)