1 """Support for Lektrico number entities."""
3 from collections.abc
import Callable, Coroutine
4 from dataclasses
import dataclass
7 from lektricowifi
import Device
15 UnitOfElectricCurrent,
20 from .
import LektricoConfigEntry, LektricoDeviceDataUpdateCoordinator
21 from .entity
import LektricoEntity
24 @dataclass(frozen=True, kw_only=True)
26 """Describes Lektrico number entity."""
28 value_fn: Callable[[dict[str, Any]], int]
29 set_value_fn: Callable[[Device, int], Coroutine[Any, Any, dict[Any, Any]]]
32 NUMBERS: tuple[LektricoNumberEntityDescription, ...] = (
34 key=
"led_max_brightness",
35 translation_key=
"led_max_brightness",
36 entity_category=EntityCategory.CONFIG,
40 native_unit_of_measurement=PERCENTAGE,
41 value_fn=
lambda data:
int(data[
"led_max_brightness"]),
42 set_value_fn=
lambda data, value: data.set_led_max_brightness(value),
46 translation_key=
"dynamic_limit",
47 entity_category=EntityCategory.CONFIG,
51 native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
52 value_fn=
lambda data:
int(data[
"dynamic_current"]),
53 set_value_fn=
lambda data, value: data.set_dynamic_current(value),
60 entry: LektricoConfigEntry,
61 async_add_entities: AddEntitiesCallback,
63 """Set up Lektrico number entities based on a config entry."""
64 coordinator = entry.runtime_data
70 f
"{entry.data[CONF_TYPE]}_{entry.data[ATTR_SERIAL_NUMBER]}",
72 for description
in NUMBERS
77 """Defines a Lektrico number entity."""
79 entity_description: LektricoNumberEntityDescription
83 description: LektricoNumberEntityDescription,
84 coordinator: LektricoDeviceDataUpdateCoordinator,
87 """Initialize Lektrico number."""
88 super().
__init__(coordinator, device_name)
90 self.
_attr_unique_id_attr_unique_id = f
"{coordinator.serial_number}_{description.key}"
94 """Return the state of the number."""
98 """Set the selected value."""
100 await self.coordinator.async_request_refresh()
None __init__(self, LektricoNumberEntityDescription description, LektricoDeviceDataUpdateCoordinator coordinator, str device_name)
None async_set_native_value(self, float value)
int|None native_value(self)
None async_setup_entry(HomeAssistant hass, LektricoConfigEntry entry, AddEntitiesCallback async_add_entities)