Home Assistant Unofficial Reference 2024.12.1
lock.py
Go to the documentation of this file.
1 """Support for Yale Access Bluetooth locks."""
2 
3 from __future__ import annotations
4 
5 from typing import Any
6 
7 from yalexs_ble import ConnectionInfo, LockInfo, LockState, LockStatus
8 
9 from homeassistant.components.lock import LockEntity
10 from homeassistant.core import HomeAssistant, callback
11 from homeassistant.helpers.entity_platform import AddEntitiesCallback
12 
13 from . import YALEXSBLEConfigEntry
14 from .entity import YALEXSBLEEntity
15 
16 
18  hass: HomeAssistant,
19  entry: YALEXSBLEConfigEntry,
20  async_add_entities: AddEntitiesCallback,
21 ) -> None:
22  """Set up locks."""
23  async_add_entities([YaleXSBLELock(entry.runtime_data)])
24 
25 
27  """A yale xs ble lock."""
28 
29  _attr_name = None
30 
31  @callback
33  self, new_state: LockState, lock_info: LockInfo, connection_info: ConnectionInfo
34  ) -> None:
35  """Update the state."""
36  self._attr_is_locked_attr_is_locked = False
37  self._attr_is_locking_attr_is_locking = False
38  self._attr_is_unlocking_attr_is_unlocking = False
39  self._attr_is_jammed_attr_is_jammed = False
40  lock_state = new_state.lock
41  if lock_state is LockStatus.LOCKED:
42  self._attr_is_locked_attr_is_locked = True
43  elif lock_state is LockStatus.LOCKING:
44  self._attr_is_locking_attr_is_locking = True
45  elif lock_state is LockStatus.UNLOCKING:
46  self._attr_is_unlocking_attr_is_unlocking = True
47  elif lock_state in (
48  LockStatus.UNKNOWN_01,
49  LockStatus.UNKNOWN_06,
50  ):
51  self._attr_is_jammed_attr_is_jammed = True
52  elif lock_state is LockStatus.UNKNOWN:
53  self._attr_is_locked_attr_is_locked = None
54  super()._async_update_state(new_state, lock_info, connection_info)
55 
56  async def async_unlock(self, **kwargs: Any) -> None:
57  """Unlock the lock."""
58  await self._device_device.unlock()
59 
60  async def async_lock(self, **kwargs: Any) -> None:
61  """Lock the lock."""
62  await self._device_device.lock()
None unlock(self, **Any kwargs)
Definition: __init__.py:241
None lock(self, **Any kwargs)
Definition: __init__.py:228
None _async_update_state(self, LockState new_state, LockInfo lock_info, ConnectionInfo connection_info)
Definition: lock.py:34
None async_setup_entry(HomeAssistant hass, YALEXSBLEConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: lock.py:21