Home Assistant Unofficial Reference 2024.12.1
entity.py
Go to the documentation of this file.
1 """The Nibe Heat Pump coordinator."""
2 
3 from __future__ import annotations
4 
5 from nibe.coil import Coil, CoilData
6 
7 from homeassistant.helpers.entity import async_generate_entity_id
8 from homeassistant.helpers.update_coordinator import CoordinatorEntity
9 
10 from .coordinator import CoilCoordinator
11 
12 
13 class CoilEntity(CoordinatorEntity[CoilCoordinator]):
14  """Base for coil based entities."""
15 
16  _attr_has_entity_name = True
17  _attr_entity_registry_enabled_default = False
18 
19  def __init__(
20  self, coordinator: CoilCoordinator, coil: Coil, entity_format: str
21  ) -> None:
22  """Initialize base entity."""
23  super().__init__(coordinator, {coil.address})
25  entity_format, coil.name, hass=coordinator.hass
26  )
27  self._attr_name_attr_name = coil.title
28  self._attr_unique_id_attr_unique_id = f"{coordinator.unique_id}-{coil.address}"
29  self._attr_device_info_attr_device_info = coordinator.device_info
30  self._coil_coil = coil
31 
32  @property
33  def available(self) -> bool:
34  """Return if entity is available."""
35  return self.coordinator.last_update_success and self._coil_coil.address in (
36  self.coordinator.data or {}
37  )
38 
39  def _async_read_coil(self, data: CoilData):
40  """Update state of entity based on coil data."""
41 
42  async def _async_write_coil(self, value: float | str):
43  """Write coil and update state."""
44  await self.coordinator.async_write_coil(self._coil_coil, value)
45 
46  def _handle_coordinator_update(self) -> None:
47  data = self.coordinator.data.get(self._coil_coil.address)
48  if data is not None:
49  self._async_read_coil_async_read_coil(data)
50  self.async_write_ha_state()
None __init__(self, CoilCoordinator coordinator, Coil coil, str entity_format)
Definition: entity.py:21
str async_generate_entity_id(str entity_id_format, str|None name, Iterable[str]|None current_ids=None, HomeAssistant|None hass=None)
Definition: entity.py:119