1 """Code to handle a Livisi Binary Sensor."""
3 from __future__
import annotations
8 BinarySensorDeviceClass,
16 from .const
import DOMAIN, LIVISI_STATE_CHANGE, LOGGER, WDS_DEVICE_TYPE
17 from .coordinator
import LivisiDataUpdateCoordinator
18 from .entity
import LivisiEntity
23 config_entry: ConfigEntry,
24 async_add_entities: AddEntitiesCallback,
26 """Set up binary_sensor device."""
27 coordinator: LivisiDataUpdateCoordinator = hass.data[DOMAIN][config_entry.entry_id]
31 def handle_coordinator_update() -> None:
32 """Add Window Sensor."""
33 shc_devices: list[dict[str, Any]] = coordinator.data
34 entities: list[BinarySensorEntity] = []
35 for device
in shc_devices:
36 if device[
"id"]
not in known_devices
and device[
"type"] == WDS_DEVICE_TYPE:
38 config_entry, coordinator, device
40 LOGGER.debug(
"Include device type: %s", device[
"type"])
41 coordinator.devices.add(device[
"id"])
42 known_devices.add(device[
"id"])
43 entities.append(livisi_binary)
46 config_entry.async_on_unload(
47 coordinator.async_add_listener(handle_coordinator_update)
52 """Represents a Livisi Binary Sensor."""
56 config_entry: ConfigEntry,
57 coordinator: LivisiDataUpdateCoordinator,
58 device: dict[str, Any],
61 """Initialize the Livisi sensor."""
62 super().
__init__(config_entry, coordinator, device)
66 """Register callbacks."""
72 f
"{LIVISI_STATE_CHANGE}_{self._capability_id}",
79 """Update the state of the device."""
85 """Represents a Livisi Window/Door Sensor as a Binary Sensor Entity."""
89 config_entry: ConfigEntry,
90 coordinator: LivisiDataUpdateCoordinator,
91 device: dict[str, Any],
93 """Initialize the Livisi window/door sensor."""
94 super().
__init__(config_entry, coordinator, device,
"WindowDoorSensor")
97 BinarySensorDeviceClass.DOOR
98 if (device.get(
"tags", {}).
get(
"typeCategory") ==
"TCDoorId")
99 else BinarySensorDeviceClass.WINDOW
103 """Get current state."""
None async_added_to_hass(self)
None update_states(self, bool state)
None __init__(self, ConfigEntry config_entry, LivisiDataUpdateCoordinator coordinator, dict[str, Any] device, str capability_name)
None __init__(self, ConfigEntry config_entry, LivisiDataUpdateCoordinator coordinator, dict[str, Any] device)
None async_added_to_hass(self)
Any|None async_get_device_state(self, str capability, str key)
None async_write_ha_state(self)
None async_on_remove(self, CALLBACK_TYPE func)
web.Response get(self, web.Request request, str config_key)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Callable[[], None] async_dispatcher_connect(HomeAssistant hass, str signal, Callable[..., Any] target)