1 """Number platform for Plugwise integration."""
3 from __future__
import annotations
5 from dataclasses
import dataclass
10 NumberEntityDescription,
17 from .
import PlugwiseConfigEntry
18 from .const
import NumberType
19 from .coordinator
import PlugwiseDataUpdateCoordinator
20 from .entity
import PlugwiseEntity
21 from .util
import plugwise_command
24 @dataclass(frozen=True, kw_only=True)
26 """Class describing Plugwise Number entities."""
33 key=
"maximum_boiler_temperature",
34 translation_key=
"maximum_boiler_temperature",
35 device_class=NumberDeviceClass.TEMPERATURE,
36 entity_category=EntityCategory.CONFIG,
37 native_unit_of_measurement=UnitOfTemperature.CELSIUS,
40 key=
"max_dhw_temperature",
41 translation_key=
"max_dhw_temperature",
42 device_class=NumberDeviceClass.TEMPERATURE,
43 entity_category=EntityCategory.CONFIG,
44 native_unit_of_measurement=UnitOfTemperature.CELSIUS,
47 key=
"temperature_offset",
48 translation_key=
"temperature_offset",
49 device_class=NumberDeviceClass.TEMPERATURE,
50 entity_category=EntityCategory.CONFIG,
51 native_unit_of_measurement=UnitOfTemperature.CELSIUS,
58 entry: PlugwiseConfigEntry,
59 async_add_entities: AddEntitiesCallback,
61 """Set up Plugwise number platform."""
62 coordinator = entry.runtime_data
65 def _add_entities() -> None:
67 if not coordinator.new_devices:
72 for device_id
in coordinator.new_devices
73 for description
in NUMBER_TYPES
74 if description.key
in coordinator.data.devices[device_id]
78 entry.async_on_unload(coordinator.async_add_listener(_add_entities))
82 """Representation of a Plugwise number."""
84 entity_description: PlugwiseNumberEntityDescription
88 coordinator: PlugwiseDataUpdateCoordinator,
90 description: PlugwiseNumberEntityDescription,
92 """Initiate Plugwise Number."""
93 super().
__init__(coordinator, device_id)
101 native_step = self.
devicedevice[description.key][
"resolution"]
102 if description.key !=
"temperature_offset":
103 native_step =
max(native_step, 0.5)
108 """Return the present setpoint value."""
113 """Change to the new setpoint value."""
114 await self.coordinator.api.set_number(
GwEntityData device(self)
None async_set_native_value(self, float value)
None __init__(self, PlugwiseDataUpdateCoordinator coordinator, str device_id, PlugwiseNumberEntityDescription description)
None async_setup_entry(HomeAssistant hass, PlugwiseConfigEntry entry, AddEntitiesCallback async_add_entities)