mirror of
				https://github.com/python-kasa/python-kasa.git
				synced 2025-11-03 22:22:06 +00:00 
			
		
		
		
	Leverage data from UDP discovery to initialize device structure (#132)
* avoid talking to devices after UDP discovery * formatting fix * more formatting * more formatting changes * undo gitignore changes * fixing git ignore for black Co-authored-by: dlee1j1 <dlee1j@yahoo.comm>
This commit is contained in:
		@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -77,7 +77,7 @@ class _DiscoverProtocol(asyncio.DatagramProtocol):
 | 
			
		||||
 | 
			
		||||
        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
 | 
			
		||||
 
 | 
			
		||||
@@ -304,6 +304,11 @@ class SmartDevice:
 | 
			
		||||
        # 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]:
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user