Home Assistant Unofficial Reference 2024.12.1
number.py
Go to the documentation of this file.
1 """Support for sensors."""
2 
3 from __future__ import annotations
4 
5 from homeassistant.components.number import NumberEntity
6 from homeassistant.config_entries import ConfigEntry
7 from homeassistant.const import EntityCategory, UnitOfTime
8 from homeassistant.core import HomeAssistant
9 from homeassistant.helpers.device_registry import DeviceInfo
10 from homeassistant.helpers.entity import Entity
11 from homeassistant.helpers.entity_platform import AddEntitiesCallback
12 from homeassistant.helpers.update_coordinator import CoordinatorEntity
13 
14 from . import async_setup_entry_platform
15 from .coordinator import FjaraskupanCoordinator
16 
17 
19  hass: HomeAssistant,
20  config_entry: ConfigEntry,
21  async_add_entities: AddEntitiesCallback,
22 ) -> None:
23  """Set up number entities dynamically through discovery."""
24 
25  def _constructor(coordinator: FjaraskupanCoordinator) -> list[Entity]:
26  return [
27  PeriodicVentingTime(coordinator, coordinator.device_info),
28  ]
29 
30  async_setup_entry_platform(hass, config_entry, async_add_entities, _constructor)
31 
32 
33 class PeriodicVentingTime(CoordinatorEntity[FjaraskupanCoordinator], NumberEntity):
34  """Periodic Venting."""
35 
36  _attr_has_entity_name = True
37 
38  _attr_native_max_value: float = 59
39  _attr_native_min_value: float = 0
40  _attr_native_step: float = 1
41  _attr_entity_category = EntityCategory.CONFIG
42  _attr_native_unit_of_measurement = UnitOfTime.MINUTES
43  _attr_translation_key = "periodic_venting"
44 
45  def __init__(
46  self,
47  coordinator: FjaraskupanCoordinator,
48  device_info: DeviceInfo,
49  ) -> None:
50  """Init number entities."""
51  super().__init__(coordinator)
52  self._attr_unique_id_attr_unique_id = f"{coordinator.device.address}-periodic-venting"
53  self._attr_device_info_attr_device_info = device_info
54 
55  @property
56  def native_value(self) -> float | None:
57  """Return the entity value to represent the entity state."""
58  if data := self.coordinator.data:
59  return data.periodic_venting
60  return None
61 
62  async def async_set_native_value(self, value: float) -> None:
63  """Set new value."""
64  async with self.coordinator.async_connect_and_update() as device:
65  await device.send_periodic_venting(int(value))
None __init__(self, FjaraskupanCoordinator coordinator, DeviceInfo device_info)
Definition: number.py:49
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Definition: number.py:22
None async_setup_entry_platform(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities, Callable[[FjaraskupanCoordinator], list[Entity]] constructor)
Definition: __init__.py:111