Home Assistant Unofficial Reference 2024.12.1
number.py
Go to the documentation of this file.
1 """Demo platform that offers a fake Number entity."""
2 
3 from __future__ import annotations
4 
5 from homeassistant.components.number import NumberDeviceClass, NumberEntity, NumberMode
6 from homeassistant.config_entries import ConfigEntry
7 from homeassistant.const import UnitOfTemperature
8 from homeassistant.core import HomeAssistant
9 from homeassistant.helpers.device_registry import DeviceInfo
10 from homeassistant.helpers.entity_platform import AddEntitiesCallback
11 
12 from . import DOMAIN
13 
14 
16  hass: HomeAssistant,
17  config_entry: ConfigEntry,
18  async_add_entities: AddEntitiesCallback,
19 ) -> None:
20  """Set up the demo number platform."""
22  [
23  DemoNumber(
24  "volume1",
25  "volume",
26  42.0,
27  "volume",
28  False,
29  mode=NumberMode.SLIDER,
30  ),
31  DemoNumber(
32  "pwm1",
33  "PWM 1",
34  0.42,
35  "pwm",
36  False,
37  native_min_value=0.0,
38  native_max_value=1.0,
39  native_step=0.01,
40  mode=NumberMode.BOX,
41  ),
42  DemoNumber(
43  "large_range",
44  "Large Range",
45  500,
46  "range",
47  False,
48  native_min_value=1,
49  native_max_value=1000,
50  native_step=1,
51  ),
52  DemoNumber(
53  "small_range",
54  "Small Range",
55  128,
56  "range",
57  False,
58  native_min_value=1,
59  native_max_value=255,
60  native_step=1,
61  ),
62  DemoNumber(
63  "temp1",
64  "Temperature setting",
65  22,
66  None,
67  False,
68  device_class=NumberDeviceClass.TEMPERATURE,
69  native_min_value=15.0,
70  native_max_value=35.0,
71  native_step=1,
72  mode=NumberMode.BOX,
73  unit_of_measurement=UnitOfTemperature.CELSIUS,
74  ),
75  ]
76  )
77 
78 
80  """Representation of a demo Number entity."""
81 
82  _attr_has_entity_name = True
83  _attr_name = None
84  _attr_should_poll = False
85 
86  def __init__(
87  self,
88  unique_id: str,
89  device_name: str,
90  state: float,
91  translation_key: str | None,
92  assumed_state: bool,
93  *,
94  device_class: NumberDeviceClass | None = None,
95  mode: NumberMode = NumberMode.AUTO,
96  native_min_value: float | None = None,
97  native_max_value: float | None = None,
98  native_step: float | None = None,
99  unit_of_measurement: str | None = None,
100  ) -> None:
101  """Initialize the Demo Number entity."""
102  self._attr_assumed_state_attr_assumed_state = assumed_state
103  self._attr_device_class_attr_device_class = device_class
104  self._attr_translation_key_attr_translation_key = translation_key
105  self._attr_mode_attr_mode = mode
106  self._attr_native_unit_of_measurement_attr_native_unit_of_measurement = unit_of_measurement
107  self._attr_native_value_attr_native_value = state
108  self._attr_unique_id_attr_unique_id = unique_id
109 
110  if native_min_value is not None:
111  self._attr_native_min_value_attr_native_min_value = native_min_value
112  if native_max_value is not None:
113  self._attr_native_max_value_attr_native_max_value = native_max_value
114  if native_step is not None:
115  self._attr_native_step_attr_native_step = native_step
116 
117  self._attr_device_info_attr_device_info = DeviceInfo(
118  identifiers={
119  # Serial numbers are unique identifiers within a specific domain
120  (DOMAIN, unique_id)
121  },
122  name=device_name,
123  )
124 
125  async def async_set_native_value(self, value: float) -> None:
126  """Update the current value."""
127  self._attr_native_value_attr_native_value = value
128  self.async_write_ha_stateasync_write_ha_state()
None async_set_native_value(self, float value)
Definition: number.py:125
None __init__(self, str unique_id, str device_name, float state, str|None translation_key, bool assumed_state, *NumberDeviceClass|None device_class=None, NumberMode mode=NumberMode.AUTO, float|None native_min_value=None, float|None native_max_value=None, float|None native_step=None, str|None unit_of_measurement=None)
Definition: number.py:100
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Definition: number.py:19