Add state features to iot strip sockets (#960)

Fixes iot strip sockets not creating their own state and on_since features.
This commit is contained in:
Steven B
2024-06-07 10:52:11 +01:00
committed by GitHub
parent 5befe51c42
commit e1e2a396b8
2 changed files with 37 additions and 0 deletions

View File

@@ -10,6 +10,7 @@ from typing import Any
from ..device_type import DeviceType
from ..deviceconfig import DeviceConfig
from ..exceptions import KasaException
from ..feature import Feature
from ..module import Module
from ..protocol import BaseProtocol
from .iotdevice import (
@@ -125,6 +126,8 @@ class IotStrip(IotDevice):
)
for child in children
}
for child in self._children.values():
await child._initialize_features()
if update_children and self.has_emeter:
for plug in self.children:
@@ -250,6 +253,32 @@ class IotStripPlug(IotPlug):
await super()._initialize_modules()
self.add_module("time", Time(self, "time"))
async def _initialize_features(self):
"""Initialize common features."""
self._add_feature(
Feature(
self,
id="state",
name="State",
attribute_getter="is_on",
attribute_setter="set_state",
type=Feature.Type.Switch,
category=Feature.Category.Primary,
)
)
self._add_feature(
Feature(
device=self,
id="on_since",
name="On since",
attribute_getter="on_since",
icon="mdi:clock",
)
)
# If the strip plug has it's own modules we should call initialize
# features for the modules here. However the _initialize_modules function
# above does not seem to be called.
async def update(self, update_children: bool = True):
"""Query the device to update the data.