1 """Support for LaMetric numbers."""
3 from __future__
import annotations
5 from collections.abc
import Awaitable, Callable
6 from dataclasses
import dataclass
9 from demetriek
import Device, LaMetricDevice
17 from .const
import DOMAIN
18 from .coordinator
import LaMetricDataUpdateCoordinator
19 from .entity
import LaMetricEntity
20 from .helpers
import lametric_exception_handler
23 @dataclass(frozen=True, kw_only=True)
25 """Class describing LaMetric number entities."""
27 value_fn: Callable[[Device], int |
None]
28 set_value_fn: Callable[[LaMetricDevice, float], Awaitable[Any]]
34 translation_key=
"brightness",
36 entity_category=EntityCategory.CONFIG,
40 native_unit_of_measurement=PERCENTAGE,
41 value_fn=
lambda device: device.display.brightness,
42 set_value_fn=
lambda device, bri: device.display(brightness=
int(bri)),
46 translation_key=
"volume",
48 entity_category=EntityCategory.CONFIG,
52 value_fn=
lambda device: device.audio.volume,
53 set_value_fn=
lambda api, volume: api.audio(volume=
int(volume)),
61 async_add_entities: AddEntitiesCallback,
63 """Set up LaMetric number based on a config entry."""
64 coordinator: LaMetricDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
67 coordinator=coordinator,
68 description=description,
70 for description
in NUMBERS
75 """Representation of a LaMetric number."""
77 entity_description: LaMetricNumberEntityDescription
81 coordinator: LaMetricDataUpdateCoordinator,
82 description: LaMetricNumberEntityDescription,
84 """Initiate LaMetric Number."""
87 self.
_attr_unique_id_attr_unique_id = f
"{coordinator.data.serial_number}-{description.key}"
91 """Return the number value."""
94 @lametric_exception_handler
96 """Change to new number value."""
97 await self.
entity_descriptionentity_description.set_value_fn(self.coordinator.lametric, value)
int|None native_value(self)
None __init__(self, LaMetricDataUpdateCoordinator coordinator, LaMetricNumberEntityDescription description)
None async_set_native_value(self, float value)
None async_request_refresh(self)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)