Home Assistant Unofficial Reference 2024.12.1
select.py
Go to the documentation of this file.
1 """Platform for Schlage select integration."""
2 
3 from __future__ import annotations
4 
5 from homeassistant.components.select import SelectEntity, SelectEntityDescription
6 from homeassistant.config_entries import ConfigEntry
7 from homeassistant.const import EntityCategory
8 from homeassistant.core import HomeAssistant
9 from homeassistant.helpers.entity_platform import AddEntitiesCallback
10 
11 from .const import DOMAIN
12 from .coordinator import LockData, SchlageDataUpdateCoordinator
13 from .entity import SchlageEntity
14 
15 _DESCRIPTIONS = (
17  key="auto_lock_time",
18  translation_key="auto_lock_time",
19  entity_category=EntityCategory.CONFIG,
20  # valid values are from Schlage UI and validated by pyschlage
21  options=[
22  "0",
23  "15",
24  "30",
25  "60",
26  "120",
27  "240",
28  "300",
29  ],
30  ),
31 )
32 
33 
35  hass: HomeAssistant,
36  config_entry: ConfigEntry,
37  async_add_entities: AddEntitiesCallback,
38 ) -> None:
39  """Set up selects based on a config entry."""
40  coordinator: SchlageDataUpdateCoordinator = hass.data[DOMAIN][config_entry.entry_id]
41 
42  def _add_new_locks(locks: dict[str, LockData]) -> None:
45  coordinator=coordinator,
46  description=description,
47  device_id=device_id,
48  )
49  for device_id in locks
50  for description in _DESCRIPTIONS
51  )
52 
53  _add_new_locks(coordinator.data.locks)
54  coordinator.new_locks_callbacks.append(_add_new_locks)
55 
56 
58  """Schlage select entity."""
59 
60  def __init__(
61  self,
62  coordinator: SchlageDataUpdateCoordinator,
63  description: SelectEntityDescription,
64  device_id: str,
65  ) -> None:
66  """Initialize a SchlageSelect."""
67  super().__init__(coordinator, device_id)
68  self.entity_descriptionentity_description = description
69  self._attr_unique_id_attr_unique_id_attr_unique_id = f"{device_id}_{self.entity_description.key}"
70 
71  @property
72  def current_option(self) -> str:
73  """Return the current option."""
74  return str(self._lock_data_lock_data.lock.auto_lock_time)
75 
76  def select_option(self, option: str) -> None:
77  """Set the current option."""
78  self._lock_lock.set_auto_lock_time(int(option))
None __init__(self, SchlageDataUpdateCoordinator coordinator, SelectEntityDescription description, str device_id)
Definition: select.py:65
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Definition: select.py:38
None _add_new_locks(dict[str, LockData] locks)
Definition: sensor.py:39