1 """Support for deCONZ locks."""
3 from __future__
import annotations
7 from pydeconz.models.event
import EventType
8 from pydeconz.models.light.lock
import Lock
9 from pydeconz.models.sensor.door_lock
import DoorLock
16 from .entity
import DeconzDevice
17 from .hub
import DeconzHub
22 config_entry: ConfigEntry,
23 async_add_entities: AddEntitiesCallback,
25 """Set up locks for deCONZ component."""
26 hub = DeconzHub.get_hub(hass, config_entry)
27 hub.entities[LOCK_DOMAIN] = set()
30 def async_add_lock_from_light(_: EventType, lock_id: str) ->
None:
31 """Add lock from deCONZ."""
32 lock = hub.api.lights.locks[lock_id]
35 hub.register_platform_add_device_callback(
36 async_add_lock_from_light,
41 def async_add_lock_from_sensor(_: EventType, lock_id: str) ->
None:
42 """Add lock from deCONZ."""
43 lock = hub.api.sensors.door_lock[lock_id]
46 hub.register_platform_add_device_callback(
47 async_add_lock_from_sensor,
48 hub.api.sensors.door_lock,
49 always_ignore_clip_sensors=
True,
54 """Representation of a deCONZ lock."""
60 """Return true if lock is on."""
61 return self._device.is_locked
65 if isinstance(self._device, DoorLock):
66 await self.hub.api.sensors.door_lock.set_config(
67 id=self._device.resource_id,
71 await self.hub.api.lights.locks.set_state(
72 id=self._device.resource_id,
77 """Unlock the lock."""
78 if isinstance(self._device, DoorLock):
79 await self.hub.api.sensors.door_lock.set_config(
80 id=self._device.resource_id,
84 await self.hub.api.lights.locks.set_state(
85 id=self._device.resource_id,
None async_unlock(self, **Any kwargs)
None async_lock(self, **Any kwargs)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)