1 """Number entity platform for Tailwind."""
3 from __future__
import annotations
5 from collections.abc
import Awaitable, Callable
6 from dataclasses
import dataclass
9 from gotailwind
import Tailwind, TailwindDeviceStatus, TailwindError
17 from .const
import DOMAIN
18 from .entity
import TailwindEntity
19 from .typing
import TailwindConfigEntry
22 @dataclass(frozen=True, kw_only=True)
24 """Class describing Tailwind number entities."""
26 value_fn: Callable[[TailwindDeviceStatus], int]
27 set_value_fn: Callable[[Tailwind, float], Awaitable[Any]]
33 translation_key=
"brightness",
34 entity_category=EntityCategory.CONFIG,
38 native_unit_of_measurement=PERCENTAGE,
39 value_fn=
lambda data: data.led_brightness,
40 set_value_fn=
lambda tailwind, brightness: tailwind.status_led(
41 brightness=
int(brightness),
49 entry: TailwindConfigEntry,
50 async_add_entities: AddEntitiesCallback,
52 """Set up Tailwind number based on a config entry."""
58 for description
in DESCRIPTIONS
63 """Representation of a Tailwind number entity."""
65 entity_description: TailwindNumberEntityDescription
69 """Return the number value."""
73 """Change to new number value."""
75 await self.
entity_descriptionentity_description.set_value_fn(self.coordinator.tailwind, value)
76 except TailwindError
as exc:
78 translation_domain=DOMAIN,
79 translation_key=
"communication_error",
None async_set_native_value(self, float value)
int|None native_value(self)
None async_request_refresh(self)
None async_setup_entry(HomeAssistant hass, TailwindConfigEntry entry, AddEntitiesCallback async_add_entities)