From 839f1e8c80cb126f45388361e4e72c97b2deb675 Mon Sep 17 00:00:00 2001 From: sdb9696 Date: Mon, 10 Jun 2024 07:48:48 +0100 Subject: [PATCH] Better checking of child modules not supported by parent device --- kasa/smart/modules/lightpreset.py | 10 ++++++++++ kasa/smart/smartdevice.py | 4 ---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/kasa/smart/modules/lightpreset.py b/kasa/smart/modules/lightpreset.py index e0a775aff..0fb57952f 100644 --- a/kasa/smart/modules/lightpreset.py +++ b/kasa/smart/modules/lightpreset.py @@ -140,3 +140,13 @@ def query(self) -> dict: if self._state_in_sysinfo: # Child lights can have states in the child info return {} return {self.QUERY_GETTER_NAME: None} + + async def _check_supported(self): + """Additional check to see if the module is supported by the device. + + Parent devices that report components of children such as ks240 will not have + the brightness value is sysinfo. + """ + # Look in _device.sys_info here because self.data is either sys_info or + # get_preset_rules depending on whether it's a child device or not. + return "brightness" in self._device.sys_info diff --git a/kasa/smart/smartdevice.py b/kasa/smart/smartdevice.py index 9013fc934..6f02fad0d 100644 --- a/kasa/smart/smartdevice.py +++ b/kasa/smart/smartdevice.py @@ -202,10 +202,6 @@ async def _initialize_modules(self): child_modules_to_skip = {} if self._parent and self._parent.device_type != DeviceType.Hub: skip_parent_only_modules = True - elif self._children and self.device_type == DeviceType.WallSwitch: - # _initialize_modules is called on the parent after the children - for child in self._children.values(): - child_modules_to_skip.update(**child.modules) for mod in SmartModule.REGISTERED_MODULES.values(): _LOGGER.debug("%s requires %s", mod, mod.REQUIRED_COMPONENT)