1 """Support for UPnP/IGD Binary Sensors."""
3 from __future__
import annotations
5 from dataclasses
import dataclass
8 BinarySensorDeviceClass,
10 BinarySensorEntityDescription,
16 from .
import UpnpConfigEntry, UpnpDataUpdateCoordinator
17 from .const
import LOGGER, WAN_STATUS
18 from .entity
import UpnpEntity, UpnpEntityDescription
21 @dataclass(frozen=True)
23 UpnpEntityDescription, BinarySensorEntityDescription
25 """A class that describes binary sensor UPnP entities."""
28 SENSOR_DESCRIPTIONS: tuple[UpnpBinarySensorEntityDescription, ...] = (
31 translation_key=
"wan_status",
32 device_class=BinarySensorDeviceClass.CONNECTIVITY,
33 entity_category=EntityCategory.DIAGNOSTIC,
40 config_entry: UpnpConfigEntry,
41 async_add_entities: AddEntitiesCallback,
43 """Set up the UPnP/IGD sensors."""
44 coordinator = config_entry.runtime_data
48 coordinator=coordinator,
49 entity_description=entity_description,
51 for entity_description
in SENSOR_DESCRIPTIONS
52 if coordinator.data.get(entity_description.key)
is not None
55 LOGGER.debug(
"Added binary_sensor entities: %s", entities)
59 """Class for UPnP/IGD binary sensors."""
61 entity_description: UpnpBinarySensorEntityDescription
65 coordinator: UpnpDataUpdateCoordinator,
66 entity_description: UpnpBinarySensorEntityDescription,
68 """Initialize the base sensor."""
69 super().
__init__(coordinator=coordinator, entity_description=entity_description)
73 """Return true if the binary sensor is on."""
74 return self.coordinator.data[self.
entity_descriptionentity_description.key] ==
"Connected"
77 """Subscribe to updates."""
None async_added_to_hass(self)
None __init__(self, UpnpDataUpdateCoordinator coordinator, UpnpBinarySensorEntityDescription entity_description)
Callable[[], None] register_entity(self, str key, str entity_id)
None async_on_remove(self, CALLBACK_TYPE func)
None async_setup_entry(HomeAssistant hass, UpnpConfigEntry config_entry, AddEntitiesCallback async_add_entities)