diff --git a/kasa/iot/iotplug.py b/kasa/iot/iotplug.py index 89cfef95..3a119318 100644 --- a/kasa/iot/iotplug.py +++ b/kasa/iot/iotplug.py @@ -9,7 +9,7 @@ from ..deviceconfig import DeviceConfig from ..module import Module from ..protocol import BaseProtocol from .iotdevice import IotDevice, requires_update -from .modules import Antitheft, Cloud, Led, Schedule, Time, Usage +from .modules import AmbientLight, Antitheft, Cloud, Led, Motion, Schedule, Time, Usage _LOGGER = logging.getLogger(__name__) @@ -92,3 +92,12 @@ class IotWallSwitch(IotPlug): ) -> None: super().__init__(host=host, config=config, protocol=protocol) self._device_type = DeviceType.WallSwitch + + async def _initialize_modules(self) -> None: + """Initialize modules.""" + await super()._initialize_modules() + if (dev_name := self.sys_info["dev_name"]) and "PIR" in dev_name: + self.add_module(Module.IotMotion, Motion(self, "smartlife.iot.PIR")) + self.add_module( + Module.IotAmbientLight, AmbientLight(self, "smartlife.iot.LAS") + ) diff --git a/kasa/tests/iot/test_wallswitch.py b/kasa/tests/iot/test_wallswitch.py new file mode 100644 index 00000000..07f5976d --- /dev/null +++ b/kasa/tests/iot/test_wallswitch.py @@ -0,0 +1,9 @@ +from kasa.tests.device_fixtures import wallswitch_iot + + +@wallswitch_iot +def test_wallswitch_motion(dev): + """Check that wallswitches with motion sensor get modules enabled.""" + has_motion = "PIR" in dev.sys_info["dev_name"] + assert "motion" in dev.modules if has_motion else True + assert "ambient" in dev.modules if has_motion else True