mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 21:27:38 +00:00
Move Faa delays state attributes to entity description (#104748)
This commit is contained in:
parent
7638b9bba1
commit
9126b00dfe
@ -25,6 +25,7 @@ class FaaDelaysBinarySensorEntityDescription(BinarySensorEntityDescription):
|
|||||||
"""Mixin for required keys."""
|
"""Mixin for required keys."""
|
||||||
|
|
||||||
is_on_fn: Callable[[Airport], bool | None]
|
is_on_fn: Callable[[Airport], bool | None]
|
||||||
|
extra_state_attributes_fn: Callable[[Airport], Mapping[str, Any]]
|
||||||
|
|
||||||
|
|
||||||
FAA_BINARY_SENSORS: tuple[FaaDelaysBinarySensorEntityDescription, ...] = (
|
FAA_BINARY_SENSORS: tuple[FaaDelaysBinarySensorEntityDescription, ...] = (
|
||||||
@ -33,30 +34,54 @@ FAA_BINARY_SENSORS: tuple[FaaDelaysBinarySensorEntityDescription, ...] = (
|
|||||||
name="Ground Delay",
|
name="Ground Delay",
|
||||||
icon="mdi:airport",
|
icon="mdi:airport",
|
||||||
is_on_fn=lambda airport: airport.ground_delay.status,
|
is_on_fn=lambda airport: airport.ground_delay.status,
|
||||||
|
extra_state_attributes_fn=lambda airport: {
|
||||||
|
"average": airport.ground_delay.average,
|
||||||
|
"reason": airport.ground_delay.reason,
|
||||||
|
},
|
||||||
),
|
),
|
||||||
FaaDelaysBinarySensorEntityDescription(
|
FaaDelaysBinarySensorEntityDescription(
|
||||||
key="GROUND_STOP",
|
key="GROUND_STOP",
|
||||||
name="Ground Stop",
|
name="Ground Stop",
|
||||||
icon="mdi:airport",
|
icon="mdi:airport",
|
||||||
is_on_fn=lambda airport: airport.ground_stop.status,
|
is_on_fn=lambda airport: airport.ground_stop.status,
|
||||||
|
extra_state_attributes_fn=lambda airport: {
|
||||||
|
"endtime": airport.ground_stop.endtime,
|
||||||
|
"reason": airport.ground_stop.reason,
|
||||||
|
},
|
||||||
),
|
),
|
||||||
FaaDelaysBinarySensorEntityDescription(
|
FaaDelaysBinarySensorEntityDescription(
|
||||||
key="DEPART_DELAY",
|
key="DEPART_DELAY",
|
||||||
name="Departure Delay",
|
name="Departure Delay",
|
||||||
icon="mdi:airplane-takeoff",
|
icon="mdi:airplane-takeoff",
|
||||||
is_on_fn=lambda airport: airport.depart_delay.status,
|
is_on_fn=lambda airport: airport.depart_delay.status,
|
||||||
|
extra_state_attributes_fn=lambda airport: {
|
||||||
|
"minimum": airport.depart_delay.minimum,
|
||||||
|
"maximum": airport.depart_delay.maximum,
|
||||||
|
"trend": airport.depart_delay.trend,
|
||||||
|
"reason": airport.depart_delay.reason,
|
||||||
|
},
|
||||||
),
|
),
|
||||||
FaaDelaysBinarySensorEntityDescription(
|
FaaDelaysBinarySensorEntityDescription(
|
||||||
key="ARRIVE_DELAY",
|
key="ARRIVE_DELAY",
|
||||||
name="Arrival Delay",
|
name="Arrival Delay",
|
||||||
icon="mdi:airplane-landing",
|
icon="mdi:airplane-landing",
|
||||||
is_on_fn=lambda airport: airport.arrive_delay.status,
|
is_on_fn=lambda airport: airport.arrive_delay.status,
|
||||||
|
extra_state_attributes_fn=lambda airport: {
|
||||||
|
"minimum": airport.arrive_delay.minimum,
|
||||||
|
"maximum": airport.arrive_delay.maximum,
|
||||||
|
"trend": airport.arrive_delay.trend,
|
||||||
|
"reason": airport.arrive_delay.reason,
|
||||||
|
},
|
||||||
),
|
),
|
||||||
FaaDelaysBinarySensorEntityDescription(
|
FaaDelaysBinarySensorEntityDescription(
|
||||||
key="CLOSURE",
|
key="CLOSURE",
|
||||||
name="Closure",
|
name="Closure",
|
||||||
icon="mdi:airplane:off",
|
icon="mdi:airplane:off",
|
||||||
is_on_fn=lambda airport: airport.closure.status,
|
is_on_fn=lambda airport: airport.closure.status,
|
||||||
|
extra_state_attributes_fn=lambda airport: {
|
||||||
|
"begin": airport.closure.start,
|
||||||
|
"end": airport.closure.end,
|
||||||
|
},
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -89,10 +114,6 @@ class FAABinarySensor(CoordinatorEntity[FAADataUpdateCoordinator], BinarySensorE
|
|||||||
"""Initialize the sensor."""
|
"""Initialize the sensor."""
|
||||||
super().__init__(coordinator)
|
super().__init__(coordinator)
|
||||||
self.entity_description = description
|
self.entity_description = description
|
||||||
|
|
||||||
self.coordinator = coordinator
|
|
||||||
self._entry_id = entry_id
|
|
||||||
self._attrs: dict[str, Any] = {}
|
|
||||||
_id = coordinator.data.code
|
_id = coordinator.data.code
|
||||||
self._attr_name = f"{_id} {description.name}"
|
self._attr_name = f"{_id} {description.name}"
|
||||||
self._attr_unique_id = f"{_id}_{description.key}"
|
self._attr_unique_id = f"{_id}_{description.key}"
|
||||||
@ -105,24 +126,4 @@ class FAABinarySensor(CoordinatorEntity[FAADataUpdateCoordinator], BinarySensorE
|
|||||||
@property
|
@property
|
||||||
def extra_state_attributes(self) -> Mapping[str, Any]:
|
def extra_state_attributes(self) -> Mapping[str, Any]:
|
||||||
"""Return attributes for sensor."""
|
"""Return attributes for sensor."""
|
||||||
sensor_type = self.entity_description.key
|
return self.entity_description.extra_state_attributes_fn(self.coordinator.data)
|
||||||
if sensor_type == "GROUND_DELAY":
|
|
||||||
self._attrs["average"] = self.coordinator.data.ground_delay.average
|
|
||||||
self._attrs["reason"] = self.coordinator.data.ground_delay.reason
|
|
||||||
elif sensor_type == "GROUND_STOP":
|
|
||||||
self._attrs["endtime"] = self.coordinator.data.ground_stop.endtime
|
|
||||||
self._attrs["reason"] = self.coordinator.data.ground_stop.reason
|
|
||||||
elif sensor_type == "DEPART_DELAY":
|
|
||||||
self._attrs["minimum"] = self.coordinator.data.depart_delay.minimum
|
|
||||||
self._attrs["maximum"] = self.coordinator.data.depart_delay.maximum
|
|
||||||
self._attrs["trend"] = self.coordinator.data.depart_delay.trend
|
|
||||||
self._attrs["reason"] = self.coordinator.data.depart_delay.reason
|
|
||||||
elif sensor_type == "ARRIVE_DELAY":
|
|
||||||
self._attrs["minimum"] = self.coordinator.data.arrive_delay.minimum
|
|
||||||
self._attrs["maximum"] = self.coordinator.data.arrive_delay.maximum
|
|
||||||
self._attrs["trend"] = self.coordinator.data.arrive_delay.trend
|
|
||||||
self._attrs["reason"] = self.coordinator.data.arrive_delay.reason
|
|
||||||
elif sensor_type == "CLOSURE":
|
|
||||||
self._attrs["begin"] = self.coordinator.data.closure.start
|
|
||||||
self._attrs["end"] = self.coordinator.data.closure.end
|
|
||||||
return self._attrs
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user