mirror of
https://github.com/python-kasa/python-kasa.git
synced 2024-12-23 03:33:35 +00:00
11719991c0
The initial steps to modularize the smartdevice. Modules are initialized based on the component negotiation, and each module can indicate which features it supports and which queries should be run during the update cycle.
39 lines
1.3 KiB
Python
39 lines
1.3 KiB
Python
"""Child device implementation."""
|
|
from typing import Optional
|
|
|
|
from ..device_type import DeviceType
|
|
from ..deviceconfig import DeviceConfig
|
|
from ..smartprotocol import SmartProtocol, _ChildProtocolWrapper
|
|
from .smartdevice import SmartDevice
|
|
|
|
|
|
class SmartChildDevice(SmartDevice):
|
|
"""Presentation of a child device.
|
|
|
|
This wraps the protocol communications and sets internal data for the child.
|
|
"""
|
|
|
|
def __init__(
|
|
self,
|
|
parent: SmartDevice,
|
|
child_id: str,
|
|
config: Optional[DeviceConfig] = None,
|
|
protocol: Optional[SmartProtocol] = None,
|
|
) -> None:
|
|
super().__init__(parent.host, config=parent.config, protocol=parent.protocol)
|
|
self._parent = parent
|
|
self._id = child_id
|
|
self.protocol = _ChildProtocolWrapper(child_id, parent.protocol)
|
|
self._device_type = DeviceType.StripSocket
|
|
|
|
async def update(self, update_children: bool = True):
|
|
"""Noop update. The parent updates our internals."""
|
|
|
|
def update_internal_state(self, info):
|
|
"""Set internal state for the child."""
|
|
# TODO: cleanup the _last_update, _sys_info, _info, _data mess.
|
|
self._last_update = self._sys_info = self._info = info
|
|
|
|
def __repr__(self):
|
|
return f"<ChildDevice {self.alias} of {self._parent}>"
|