1 """Support for hunterdouglas_powerview numbers."""
3 from collections.abc
import Callable
4 from dataclasses
import dataclass
5 from typing
import Final
7 from aiopvapi.helpers.constants
import ATTR_NAME, MOTION_VELOCITY
8 from aiopvapi.resources.shade
import BaseShade, ShadePosition
11 NumberEntityDescription,
19 from .coordinator
import PowerviewShadeUpdateCoordinator
20 from .entity
import ShadeEntity
21 from .model
import PowerviewConfigEntry, PowerviewDeviceInfo
24 @dataclass(frozen=True, kw_only=True)
26 """Class to describe a Number entity."""
28 create_entity_fn: Callable[[BaseShade], bool]
29 store_value_fn: Callable[[PowerviewShadeUpdateCoordinator, int, float |
None],
None]
30 entity_category: EntityCategory = EntityCategory.CONFIG
34 coordinator: PowerviewShadeUpdateCoordinator,
38 """Store the desired shade velocity in the coordinator."""
39 coordinator.data.update_shade_velocity(shade_id, ShadePosition(velocity=value))
46 mode=NumberMode.SLIDER,
47 icon=
"mdi:speedometer",
48 create_entity_fn=
lambda shade: shade.is_supported(MOTION_VELOCITY),
49 store_value_fn=store_velocity,
56 entry: PowerviewConfigEntry,
57 async_add_entities: AddEntitiesCallback,
59 """Set up the hunter douglas number entities."""
60 pv_entry = entry.runtime_data
61 entities: list[PowerViewNumber] = []
62 for shade
in pv_entry.shade_data.values():
63 room_name = getattr(pv_entry.room_data.get(shade.room_id), ATTR_NAME,
"")
73 for description
in NUMBERS
74 if description.create_entity_fn(shade)
80 """Representation of a number entity."""
82 entity_description: PowerviewNumberDescription
86 coordinator: PowerviewShadeUpdateCoordinator,
87 device_info: PowerviewDeviceInfo,
91 description: PowerviewNumberDescription,
93 """Initialize the number entity."""
94 super().
__init__(coordinator, device_info, room_name, shade, name)
99 """Update the current value."""
105 """Restore last state."""
108 value = last_number_data.native_value
if last_number_data
is not None else 0
None __init__(self, PowerviewShadeUpdateCoordinator coordinator, PowerviewDeviceInfo device_info, str room_name, BaseShade shade, str name, PowerviewNumberDescription description)
None async_set_native_value(self, float value)
None async_added_to_hass(self)
NumberExtraStoredData|None async_get_last_number_data(self)
None async_write_ha_state(self)
None store_velocity(PowerviewShadeUpdateCoordinator coordinator, int shade_id, float|None value)
None async_setup_entry(HomeAssistant hass, PowerviewConfigEntry entry, AddEntitiesCallback async_add_entities)