mirror of
https://github.com/python-kasa/python-kasa.git
synced 2024-12-23 03:33:35 +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:
parent
98b40b5072
commit
d4a361dd3e
@ -174,13 +174,12 @@ async def dump_discover(ctx, scrub):
|
|||||||
async def discover(ctx, timeout, discover_only, dump_raw):
|
async def discover(ctx, timeout, discover_only, dump_raw):
|
||||||
"""Discover devices in the network."""
|
"""Discover devices in the network."""
|
||||||
target = ctx.parent.params["target"]
|
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(
|
found_devs = await Discover.discover(
|
||||||
target=target, timeout=timeout, return_raw=dump_raw
|
target=target, timeout=timeout, return_raw=dump_raw
|
||||||
)
|
)
|
||||||
if not discover_only:
|
if not discover_only:
|
||||||
for ip, dev in found_devs.items():
|
for ip, dev in found_devs.items():
|
||||||
await dev.update()
|
|
||||||
if dump_raw:
|
if dump_raw:
|
||||||
click.echo(dev)
|
click.echo(dev)
|
||||||
continue
|
continue
|
||||||
|
@ -77,7 +77,7 @@ class _DiscoverProtocol(asyncio.DatagramProtocol):
|
|||||||
|
|
||||||
device_class = Discover._get_device_class(info)
|
device_class = Discover._get_device_class(info)
|
||||||
device = device_class(ip)
|
device = device_class(ip)
|
||||||
asyncio.ensure_future(device.update())
|
device.update_from_discover_info(info)
|
||||||
|
|
||||||
self.discovered_devices[ip] = device
|
self.discovered_devices[ip] = device
|
||||||
self.discovered_devices_raw[ip] = info
|
self.discovered_devices_raw[ip] = info
|
||||||
|
@ -304,6 +304,11 @@ class SmartDevice:
|
|||||||
# TODO: keep accessible for tests
|
# TODO: keep accessible for tests
|
||||||
self._sys_info = self._last_update["system"]["get_sysinfo"]
|
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
|
@property # type: ignore
|
||||||
@requires_update
|
@requires_update
|
||||||
def sys_info(self) -> Dict[str, Any]:
|
def sys_info(self) -> Dict[str, Any]:
|
||||||
|
Loading…
Reference in New Issue
Block a user