Home Assistant Unofficial Reference 2024.12.1
entity.py
Go to the documentation of this file.
1 """Base entity class for Schlage."""
2 
3 from pyschlage.lock import Lock
4 
5 from homeassistant.helpers.device_registry import DeviceInfo
6 from homeassistant.helpers.update_coordinator import CoordinatorEntity
7 
8 from .const import DOMAIN, MANUFACTURER
9 from .coordinator import LockData, SchlageDataUpdateCoordinator
10 
11 
12 class SchlageEntity(CoordinatorEntity[SchlageDataUpdateCoordinator]):
13  """Base Schlage entity."""
14 
15  _attr_has_entity_name = True
16 
17  def __init__(
18  self, coordinator: SchlageDataUpdateCoordinator, device_id: str
19  ) -> None:
20  """Initialize a Schlage entity."""
21  super().__init__(coordinator=coordinator)
22  self.device_iddevice_id = device_id
23  self._attr_unique_id_attr_unique_id = device_id
24  self._attr_device_info_attr_device_info = DeviceInfo(
25  identifiers={(DOMAIN, device_id)},
26  name=self._lock_lock.name,
27  manufacturer=MANUFACTURER,
28  model=self._lock_lock.model_name,
29  sw_version=self._lock_lock.firmware_version,
30  )
31 
32  @property
33  def _lock_data(self) -> LockData:
34  """Fetch the LockData from our coordinator."""
35  return self.coordinator.data.locks[self.device_iddevice_id]
36 
37  @property
38  def _lock(self) -> Lock:
39  """Fetch the Schlage lock from our coordinator."""
40  return self._lock_data_lock_data.lock
41 
42  @property
43  def available(self) -> bool:
44  """Return if entity is available."""
45  return super().available and self.device_iddevice_id in self.coordinator.data.locks
None __init__(self, SchlageDataUpdateCoordinator coordinator, str device_id)
Definition: entity.py:19