Home Assistant Unofficial Reference 2024.12.1
lock.py
Go to the documentation of this file.
1 """Demo platform that has a couple of fake locks."""
2 
3 from __future__ import annotations
4 
5 from typing import Any
6 
7 from homeassistant.components.lock import LockEntity, LockEntityFeature, LockState
8 from homeassistant.config_entries import ConfigEntry
9 from homeassistant.core import HomeAssistant
10 from homeassistant.helpers.entity_platform import AddEntitiesCallback
11 from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
12 
13 
15  hass: HomeAssistant,
16  config: ConfigType,
17  async_add_entities: AddEntitiesCallback,
18  discovery_info: DiscoveryInfoType | None = None,
19 ) -> None:
20  """Set up the Demo locks."""
22  [
23  DemoLock(
24  "kitchen_sink_lock_001",
25  "Openable lock",
26  LockState.LOCKED,
27  LockEntityFeature.OPEN,
28  ),
29  DemoLock(
30  "kitchen_sink_lock_002",
31  "Another openable lock",
32  LockState.UNLOCKED,
33  LockEntityFeature.OPEN,
34  ),
35  DemoLock(
36  "kitchen_sink_lock_003",
37  "Basic lock",
38  LockState.LOCKED,
39  ),
40  DemoLock(
41  "kitchen_sink_lock_004",
42  "Another basic lock",
43  LockState.UNLOCKED,
44  ),
45  ]
46  )
47 
48 
50  hass: HomeAssistant,
51  config_entry: ConfigEntry,
52  async_add_entities: AddEntitiesCallback,
53 ) -> None:
54  """Set up the Everything but the Kitchen Sink config entry."""
55  await async_setup_platform(hass, {}, async_add_entities)
56 
57 
59  """Representation of a Demo lock."""
60 
61  def __init__(
62  self,
63  unique_id: str,
64  name: str,
65  state: str,
66  features: LockEntityFeature = LockEntityFeature(0),
67  ) -> None:
68  """Initialize the sensor."""
69  self._attr_name_attr_name = name
70  self._attr_unique_id_attr_unique_id = unique_id
71  self._attr_supported_features_attr_supported_features = features
72  self._state_state = state
73  self._attr_is_locking_attr_is_locking = False
74  self._attr_is_unlocking_attr_is_unlocking = False
75 
76  @property
77  def is_locked(self) -> bool:
78  """Return true if lock is locked."""
79  return self._state_state == LockState.LOCKED
80 
81  @property
82  def is_open(self) -> bool:
83  """Return true if lock is open."""
84  return self._state_state == LockState.OPEN
85 
86  async def async_lock(self, **kwargs: Any) -> None:
87  """Lock the device."""
88  self._attr_is_locking_attr_is_locking = True
89  self.async_write_ha_stateasync_write_ha_state()
90  self._attr_is_locking_attr_is_locking = False
91  self._state_state = LockState.LOCKED
92  self.async_write_ha_stateasync_write_ha_state()
93 
94  async def async_unlock(self, **kwargs: Any) -> None:
95  """Unlock the device."""
96  self._attr_is_unlocking_attr_is_unlocking = True
97  self.async_write_ha_stateasync_write_ha_state()
98  self._attr_is_unlocking_attr_is_unlocking = False
99  self._state_state = LockState.UNLOCKED
100  self.async_write_ha_stateasync_write_ha_state()
101 
102  async def async_open(self, **kwargs: Any) -> None:
103  """Open the door latch."""
104  self._state_state = LockState.OPEN
105  self.async_write_ha_stateasync_write_ha_state()
None __init__(self, str unique_id, str name, str state, LockEntityFeature features=LockEntityFeature(0))
Definition: lock.py:67
None async_setup_platform(HomeAssistant hass, ConfigType config, AddEntitiesCallback async_add_entities, DiscoveryInfoType|None discovery_info=None)
Definition: lock.py:19
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Definition: lock.py:53