Home Assistant Unofficial Reference 2024.12.1
lock.py
Go to the documentation of this file.
1 """Dormakaba dKey integration lock platform."""
2 
3 from __future__ import annotations
4 
5 from typing import Any
6 
7 from py_dormakaba_dkey import DKEYLock
8 from py_dormakaba_dkey.commands import UnlockStatus
9 
10 from homeassistant.components.lock import LockEntity
11 from homeassistant.config_entries import ConfigEntry
12 from homeassistant.core import HomeAssistant, callback
13 from homeassistant.helpers.entity_platform import AddEntitiesCallback
14 from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
15 
16 from .const import DOMAIN
17 from .entity import DormakabaDkeyEntity
18 from .models import DormakabaDkeyData
19 
20 
22  hass: HomeAssistant,
23  entry: ConfigEntry,
24  async_add_entities: AddEntitiesCallback,
25 ) -> None:
26  """Set up the lock platform for Dormakaba dKey."""
27  data: DormakabaDkeyData = hass.data[DOMAIN][entry.entry_id]
28  async_add_entities([DormakabaDkeyLock(data.coordinator, data.lock)])
29 
30 
32  """Representation of Dormakaba dKey lock."""
33 
34  _attr_has_entity_name = True
35 
36  def __init__(
37  self, coordinator: DataUpdateCoordinator[None], lock: DKEYLock
38  ) -> None:
39  """Initialize a Dormakaba dKey lock."""
40  self._attr_unique_id_attr_unique_id = lock.address
41  super().__init__(coordinator, lock)
42 
43  @callback
44  def _async_update_attrs(self) -> None:
45  """Handle updating _attr values."""
46  self._attr_is_locked_attr_is_locked = self._lock_lock.state.unlock_status in (
47  UnlockStatus.LOCKED,
48  UnlockStatus.SECURITY_LOCKED,
49  )
50 
51  async def async_lock(self, **kwargs: Any) -> None:
52  """Lock the lock."""
53  await self._lock_lock.lock()
54 
55  async def async_unlock(self, **kwargs: Any) -> None:
56  """Unlock the lock."""
57  await self._lock_lock.unlock()
None __init__(self, DataUpdateCoordinator[None] coordinator, DKEYLock lock)
Definition: lock.py:38
None unlock(self, **Any kwargs)
Definition: __init__.py:241
None lock(self, **Any kwargs)
Definition: __init__.py:228
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: lock.py:25