1 """Support for TPLink number entities."""
3 from __future__
import annotations
5 from dataclasses
import dataclass
7 from typing
import Final, cast
9 from kasa
import Device, Feature
13 NumberEntityDescription,
19 from .
import TPLinkConfigEntry
21 CoordinatedTPLinkFeatureEntity,
22 TPLinkDataUpdateCoordinator,
23 TPLinkFeatureEntityDescription,
27 _LOGGER = logging.getLogger(__name__)
30 @dataclass(frozen=True, kw_only=True)
32 NumberEntityDescription, TPLinkFeatureEntityDescription
34 """Base class for a TPLink feature based sensor entity description."""
37 NUMBER_DESCRIPTIONS: Final = (
39 key=
"smooth_transition_on",
43 key=
"smooth_transition_off",
47 key=
"auto_off_minutes",
51 key=
"temperature_offset",
56 NUMBER_DESCRIPTIONS_MAP = {desc.key: desc
for desc
in NUMBER_DESCRIPTIONS}
61 config_entry: TPLinkConfigEntry,
62 async_add_entities: AddEntitiesCallback,
65 data = config_entry.runtime_data
66 parent_coordinator = data.parent_coordinator
67 children_coordinators = data.children_coordinators
68 device = parent_coordinator.device
69 entities = CoordinatedTPLinkFeatureEntity.entities_for_device_and_its_children(
72 coordinator=parent_coordinator,
73 feature_type=Feature.Type.Number,
74 entity_class=TPLinkNumberEntity,
75 descriptions=NUMBER_DESCRIPTIONS_MAP,
76 child_coordinators=children_coordinators,
83 """Representation of a feature-based TPLink sensor."""
85 entity_description: TPLinkNumberEntityDescription
90 coordinator: TPLinkDataUpdateCoordinator,
93 description: TPLinkFeatureEntityDescription,
94 parent: Device |
None =
None,
96 """Initialize the a switch."""
98 device, coordinator, feature=feature, description=description, parent=parent
105 """Set feature value."""
110 """Update the entity's attributes."""
None set_value(self, float value)
None _async_update_attrs(self)
None __init__(self, Device device, TPLinkDataUpdateCoordinator coordinator, *Feature feature, TPLinkFeatureEntityDescription description, Device|None parent=None)
None async_set_native_value(self, float value)
None async_setup_entry(HomeAssistant hass, TPLinkConfigEntry config_entry, AddEntitiesCallback async_add_entities)