1 """Support for TPLink select entities."""
3 from __future__
import annotations
5 from dataclasses
import dataclass
6 from typing
import Final, cast
8 from kasa
import Device, Feature
14 from .
import TPLinkConfigEntry
16 CoordinatedTPLinkFeatureEntity,
17 TPLinkDataUpdateCoordinator,
18 TPLinkFeatureEntityDescription,
23 @dataclass(frozen=True, kw_only=True)
25 SelectEntityDescription, TPLinkFeatureEntityDescription
27 """Base class for a TPLink feature based sensor entity description."""
30 SELECT_DESCRIPTIONS: Final = [
42 SELECT_DESCRIPTIONS_MAP = {desc.key: desc
for desc
in SELECT_DESCRIPTIONS}
47 config_entry: TPLinkConfigEntry,
48 async_add_entities: AddEntitiesCallback,
51 data = config_entry.runtime_data
52 parent_coordinator = data.parent_coordinator
53 children_coordinators = data.children_coordinators
54 device = parent_coordinator.device
56 entities = CoordinatedTPLinkFeatureEntity.entities_for_device_and_its_children(
59 coordinator=parent_coordinator,
60 feature_type=Feature.Type.Choice,
61 entity_class=TPLinkSelectEntity,
62 descriptions=SELECT_DESCRIPTIONS_MAP,
63 child_coordinators=children_coordinators,
69 """Representation of a tplink select entity."""
71 entity_description: TPLinkSelectEntityDescription
76 coordinator: TPLinkDataUpdateCoordinator,
79 description: TPLinkFeatureEntityDescription,
80 parent: Device |
None =
None,
82 """Initialize a select."""
84 device, coordinator, feature=feature, description=description, parent=parent
90 """Update the current selected option."""
91 await self.
_feature_feature.set_value(option)
95 """Update the entity's attributes."""
None __init__(self, Device device, TPLinkDataUpdateCoordinator coordinator, *Feature feature, TPLinkFeatureEntityDescription description, Device|None parent=None)
None async_select_option(self, str option)
None _async_update_attrs(self)
None async_setup_entry(HomeAssistant hass, TPLinkConfigEntry config_entry, AddEntitiesCallback async_add_entities)