Home Assistant Unofficial Reference 2024.12.1
number.py
Go to the documentation of this file.
1 """Number entities for Wyoming integration."""
2 
3 from __future__ import annotations
4 
5 from typing import TYPE_CHECKING, Final
6 
7 from homeassistant.components.number import NumberEntityDescription, RestoreNumber
8 from homeassistant.config_entries import ConfigEntry
9 from homeassistant.const import EntityCategory
10 from homeassistant.core import HomeAssistant
11 from homeassistant.helpers.entity_platform import AddEntitiesCallback
12 
13 from .const import DOMAIN
14 from .entity import WyomingSatelliteEntity
15 
16 if TYPE_CHECKING:
17  from .models import DomainDataItem
18 
19 _MAX_AUTO_GAIN: Final = 31
20 _MIN_VOLUME_MULTIPLIER: Final = 0.1
21 _MAX_VOLUME_MULTIPLIER: Final = 10.0
22 
23 
25  hass: HomeAssistant,
26  config_entry: ConfigEntry,
27  async_add_entities: AddEntitiesCallback,
28 ) -> None:
29  """Set up Wyoming number entities."""
30  item: DomainDataItem = hass.data[DOMAIN][config_entry.entry_id]
31 
32  # Setup is only forwarded for satellites
33  assert item.device is not None
34 
36  [
37  WyomingSatelliteAutoGainNumber(item.device),
39  ]
40  )
41 
42 
44  """Entity to represent auto gain amount."""
45 
46  entity_description = NumberEntityDescription(
47  key="auto_gain",
48  translation_key="auto_gain",
49  entity_category=EntityCategory.CONFIG,
50  )
51  _attr_should_poll = False
52  _attr_native_min_value = 0
53  _attr_native_max_value = _MAX_AUTO_GAIN
54  _attr_native_value = 0
55 
56  async def async_added_to_hass(self) -> None:
57  """When entity is added to Home Assistant."""
58  await super().async_added_to_hass()
59 
60  state = await self.async_get_last_stateasync_get_last_state()
61  if state is not None:
62  await self.async_set_native_valueasync_set_native_valueasync_set_native_value(float(state.state))
63 
64  async def async_set_native_value(self, value: float) -> None:
65  """Set new value."""
66  auto_gain = int(max(0, min(_MAX_AUTO_GAIN, value)))
67  self._attr_native_value_attr_native_value_attr_native_value = auto_gain
68  self.async_write_ha_stateasync_write_ha_state()
69  self._device_device.set_auto_gain(auto_gain)
70 
71 
73  """Entity to represent microphone volume multiplier."""
74 
75  entity_description = NumberEntityDescription(
76  key="volume_multiplier",
77  translation_key="volume_multiplier",
78  entity_category=EntityCategory.CONFIG,
79  )
80  _attr_should_poll = False
81  _attr_native_min_value = _MIN_VOLUME_MULTIPLIER
82  _attr_native_max_value = _MAX_VOLUME_MULTIPLIER
83  _attr_native_step = 0.1
84  _attr_native_value = 1.0
85 
86  async def async_added_to_hass(self) -> None:
87  """When entity is added to Home Assistant."""
88  await super().async_added_to_hass()
89  last_number_data = await self.async_get_last_number_dataasync_get_last_number_data()
90  if (last_number_data is not None) and (
91  last_number_data.native_value is not None
92  ):
93  await self.async_set_native_valueasync_set_native_valueasync_set_native_value(last_number_data.native_value)
94 
95  async def async_set_native_value(self, value: float) -> None:
96  """Set new value."""
97  self._attr_native_value_attr_native_value_attr_native_value = float(
98  max(_MIN_VOLUME_MULTIPLIER, min(_MAX_VOLUME_MULTIPLIER, value))
99  )
100  self.async_write_ha_stateasync_write_ha_state()
101  self._device_device.set_volume_multiplier(self._attr_native_value_attr_native_value_attr_native_value)
None async_set_native_value(self, float value)
Definition: __init__.py:418
NumberExtraStoredData|None async_get_last_number_data(self)
Definition: __init__.py:549
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Definition: number.py:28