diff --git a/kasa/cli.py b/kasa/cli.py index 167179e36..5efd6be6d 100755 --- a/kasa/cli.py +++ b/kasa/cli.py @@ -174,13 +174,12 @@ async def dump_discover(ctx, scrub): async def discover(ctx, timeout, discover_only, dump_raw): """Discover devices in the network.""" target = ctx.parent.params["target"] - click.echo(f"Discovering devices for {timeout} seconds") + click.echo(f"Discovering devices on {target} for {timeout} seconds") found_devs = await Discover.discover( target=target, timeout=timeout, return_raw=dump_raw ) if not discover_only: for ip, dev in found_devs.items(): - await dev.update() if dump_raw: click.echo(dev) continue diff --git a/kasa/discover.py b/kasa/discover.py index e4091512e..3e7f70207 100755 --- a/kasa/discover.py +++ b/kasa/discover.py @@ -77,7 +77,7 @@ def datagram_received(self, data, addr) -> None: device_class = Discover._get_device_class(info) device = device_class(ip) - asyncio.ensure_future(device.update()) + device.update_from_discover_info(info) self.discovered_devices[ip] = device self.discovered_devices_raw[ip] = info diff --git a/kasa/smartdevice.py b/kasa/smartdevice.py index 19589bbad..da5c0f65a 100755 --- a/kasa/smartdevice.py +++ b/kasa/smartdevice.py @@ -304,6 +304,11 @@ async def update(self): # TODO: keep accessible for tests self._sys_info = self._last_update["system"]["get_sysinfo"] + def update_from_discover_info(self, info): + """Update state from info from the discover call.""" + self._last_update = info + self._sys_info = info["system"]["get_sysinfo"] + @property # type: ignore @requires_update def sys_info(self) -> Dict[str, Any]: