Home Assistant Unofficial Reference 2024.12.1
lock.py
Go to the documentation of this file.
1 """Support for Fibaro locks."""
2 
3 from __future__ import annotations
4 
5 from typing import Any
6 
7 from pyfibaro.fibaro_device import DeviceModel
8 
9 from homeassistant.components.lock import ENTITY_ID_FORMAT, LockEntity
10 from homeassistant.config_entries import ConfigEntry
11 from homeassistant.const import Platform
12 from homeassistant.core import HomeAssistant
13 from homeassistant.helpers.entity_platform import AddEntitiesCallback
14 
15 from . import FibaroController
16 from .const import DOMAIN
17 from .entity import FibaroEntity
18 
19 
21  hass: HomeAssistant,
22  entry: ConfigEntry,
23  async_add_entities: AddEntitiesCallback,
24 ) -> None:
25  """Set up the Fibaro locks."""
26  controller: FibaroController = hass.data[DOMAIN][entry.entry_id]
28  [FibaroLock(device) for device in controller.fibaro_devices[Platform.LOCK]],
29  True,
30  )
31 
32 
34  """Representation of a Fibaro Lock."""
35 
36  def __init__(self, fibaro_device: DeviceModel) -> None:
37  """Initialize the Fibaro device."""
38  super().__init__(fibaro_device)
39  self.entity_identity_identity_id = ENTITY_ID_FORMAT.format(self.ha_idha_id)
40 
41  def lock(self, **kwargs: Any) -> None:
42  """Lock the device."""
43  self.actionaction("secure")
44  self._attr_is_locked_attr_is_locked = True
45 
46  def unlock(self, **kwargs: Any) -> None:
47  """Unlock the device."""
48  self.actionaction("unsecure") # codespell:ignore unsecure
49  self._attr_is_locked_attr_is_locked = False
50 
51  def update(self) -> None:
52  """Update device state."""
53  super().update()
54  self._attr_is_locked_attr_is_locked = self.current_binary_statecurrent_binary_state
None action(self, str cmd, *Any args)
Definition: entity.py:98
None __init__(self, DeviceModel fibaro_device)
Definition: lock.py:36
None unlock(self, **Any kwargs)
Definition: lock.py:46
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: lock.py:24