1 """Lock for Yale Alarm."""
3 from __future__
import annotations
7 from yalesmartalarmclient
import YaleLock, YaleLockState
15 from .
import YaleConfigEntry
17 CONF_LOCK_CODE_DIGITS,
18 DEFAULT_LOCK_CODE_DIGITS,
22 from .coordinator
import YaleDataUpdateCoordinator
23 from .entity
import YaleLockEntity
26 YaleLockState.LOCKED: LockState.LOCKED,
27 YaleLockState.UNLOCKED: LockState.UNLOCKED,
28 YaleLockState.DOOR_OPEN: LockState.OPEN,
33 hass: HomeAssistant, entry: YaleConfigEntry, async_add_entities: AddEntitiesCallback
35 """Set up the Yale lock entry."""
37 coordinator = entry.runtime_data
38 code_format = entry.options.get(CONF_LOCK_CODE_DIGITS, DEFAULT_LOCK_CODE_DIGITS)
41 YaleDoorlock(coordinator, lock, code_format)
for lock
in coordinator.locks
46 """Representation of a Yale doorlock."""
51 self, coordinator: YaleDataUpdateCoordinator, lock: YaleLock, code_format: int
53 """Initialize the Yale Lock Device."""
58 """Send unlock command."""
59 code: str |
None = kwargs.get(ATTR_CODE)
60 return await self.
async_set_lockasync_set_lock(YaleLockState.UNLOCKED, code)
63 """Send lock command."""
64 return await self.
async_set_lockasync_set_lock(YaleLockState.LOCKED,
None)
66 async
def async_set_lock(self, state: YaleLockState, code: str |
None) ->
None:
68 if state
is YaleLockState.UNLOCKED
and not code:
70 translation_domain=DOMAIN,
71 translation_key=
"no_code",
76 if state
is YaleLockState.LOCKED:
77 lock_state = await self.
hasshasshass.async_add_executor_job(
80 if code
and state
is YaleLockState.UNLOCKED:
81 lock_state = await self.
hasshasshass.async_add_executor_job(
84 except YALE_ALL_ERRORS
as error:
86 translation_domain=DOMAIN,
87 translation_key=
"set_lock",
88 translation_placeholders={
99 translation_domain=DOMAIN,
100 translation_key=
"could_not_change_lock",
105 """Return true if the lock is locked."""
106 return LOCK_STATE_MAP.get(self.
lock_datalock_data.
state()) == LockState.LOCKED
110 """Return true if the lock is open."""
111 return LOCK_STATE_MAP.get(self.
lock_datalock_data.
state()) == LockState.OPEN
None async_unlock(self, **Any kwargs)
None async_lock(self, **Any kwargs)
bool|None is_locked(self)
None async_set_lock(self, YaleLockState state, str|None code)
None __init__(self, YaleDataUpdateCoordinator coordinator, YaleLock lock, int code_format)
None async_write_ha_state(self)
None async_setup_entry(HomeAssistant hass, YaleConfigEntry entry, AddEntitiesCallback async_add_entities)