Home Assistant Unofficial Reference 2024.12.1
number.py
Go to the documentation of this file.
1 """Number entities for musiccast."""
2 
3 from __future__ import annotations
4 
5 from aiomusiccast.capabilities import NumberSetter
6 
7 from homeassistant.components.number import NumberEntity
8 from homeassistant.config_entries import ConfigEntry
9 from homeassistant.core import HomeAssistant
10 from homeassistant.helpers.entity_platform import AddEntitiesCallback
11 
12 from .const import DOMAIN
13 from .coordinator import MusicCastDataUpdateCoordinator
14 from .entity import MusicCastCapabilityEntity
15 
16 
18  hass: HomeAssistant,
19  entry: ConfigEntry,
20  async_add_entities: AddEntitiesCallback,
21 ) -> None:
22  """Set up MusicCast number entities based on a config entry."""
23  coordinator: MusicCastDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
24 
25  number_entities = [
26  NumberCapability(coordinator, capability)
27  for capability in coordinator.data.capabilities
28  if isinstance(capability, NumberSetter)
29  ]
30 
31  number_entities.extend(
32  NumberCapability(coordinator, capability, zone)
33  for zone, data in coordinator.data.zones.items()
34  for capability in data.capabilities
35  if isinstance(capability, NumberSetter)
36  )
37 
38  async_add_entities(number_entities)
39 
40 
42  """Representation of a MusicCast Number entity."""
43 
44  capability: NumberSetter
45 
46  def __init__(
47  self,
48  coordinator: MusicCastDataUpdateCoordinator,
49  capability: NumberSetter,
50  zone_id: str | None = None,
51  ) -> None:
52  """Initialize the number entity."""
53  super().__init__(coordinator, capability, zone_id)
54  self._attr_native_min_value_attr_native_min_value = capability.value_range.minimum
55  self._attr_native_max_value_attr_native_max_value = capability.value_range.maximum
56  self._attr_native_step_attr_native_step = capability.value_range.step
57 
58  @property
59  def native_value(self) -> float | None:
60  """Return the current value."""
61  return self.capabilitycapability.current
62 
63  async def async_set_native_value(self, value: float) -> None:
64  """Set a new value."""
65  await self.capabilitycapability.set(value)
None __init__(self, MusicCastDataUpdateCoordinator coordinator, NumberSetter capability, str|None zone_id=None)
Definition: number.py:51
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: number.py:21