1 """Platform for FAA Delays sensor component."""
3 from __future__
import annotations
5 from collections.abc
import Callable, Mapping
6 from dataclasses
import dataclass
9 from faadelays
import Airport
13 BinarySensorEntityDescription,
21 from .
import FAADataUpdateCoordinator
22 from .const
import DOMAIN
25 @dataclass(frozen=True, kw_only=True)
27 """Mixin for required keys."""
29 is_on_fn: Callable[[Airport], bool |
None]
30 extra_state_attributes_fn: Callable[[Airport], Mapping[str, Any]]
33 FAA_BINARY_SENSORS: tuple[FaaDelaysBinarySensorEntityDescription, ...] = (
36 translation_key=
"ground_delay",
37 is_on_fn=
lambda airport: airport.ground_delay.status,
38 extra_state_attributes_fn=
lambda airport: {
39 "average": airport.ground_delay.average,
40 "reason": airport.ground_delay.reason,
45 translation_key=
"ground_stop",
46 is_on_fn=
lambda airport: airport.ground_stop.status,
47 extra_state_attributes_fn=
lambda airport: {
48 "endtime": airport.ground_stop.endtime,
49 "reason": airport.ground_stop.reason,
54 translation_key=
"depart_delay",
55 is_on_fn=
lambda airport: airport.depart_delay.status,
56 extra_state_attributes_fn=
lambda airport: {
57 "minimum": airport.depart_delay.minimum,
58 "maximum": airport.depart_delay.maximum,
59 "trend": airport.depart_delay.trend,
60 "reason": airport.depart_delay.reason,
65 translation_key=
"arrive_delay",
66 is_on_fn=
lambda airport: airport.arrive_delay.status,
67 extra_state_attributes_fn=
lambda airport: {
68 "minimum": airport.arrive_delay.minimum,
69 "maximum": airport.arrive_delay.maximum,
70 "trend": airport.arrive_delay.trend,
71 "reason": airport.arrive_delay.reason,
76 translation_key=
"closure",
77 is_on_fn=
lambda airport: airport.closure.status,
78 extra_state_attributes_fn=
lambda airport: {
79 "begin": airport.closure.start,
80 "end": airport.closure.end,
87 hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
89 """Set up a FAA sensor based on a config entry."""
90 coordinator = hass.data[DOMAIN][entry.entry_id]
94 for description
in FAA_BINARY_SENSORS
101 """Define a binary sensor for FAA Delays."""
103 _attr_has_entity_name =
True
105 entity_description: FaaDelaysBinarySensorEntityDescription
109 coordinator: FAADataUpdateCoordinator,
111 description: FaaDelaysBinarySensorEntityDescription,
113 """Initialize the sensor."""
116 _id = coordinator.data.code
119 identifiers={(DOMAIN, _id)},
121 manufacturer=
"Federal Aviation Administration",
122 entry_type=DeviceEntryType.SERVICE,
127 """Return the status of the sensor."""
132 """Return attributes for sensor."""
133 return self.
entity_descriptionentity_description.extra_state_attributes_fn(self.coordinator.data)
Mapping[str, Any] extra_state_attributes(self)
None __init__(self, FAADataUpdateCoordinator coordinator, str entry_id, FaaDelaysBinarySensorEntityDescription description)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)