8000 Use broadcast target for aes discovery request · python-kasa/python-kasa@3f366db · GitHub
[go: up one dir, main page]

Skip to content

Commit 3f366db

Browse files
committed
Use broadcast target for aes discovery request
1 parent b13d916 commit 3f366db

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

kasa/discover.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,9 @@ def __init__(
212212
self.target = target
213213
self.target_1 = (target, self.discovery_port)
214214
self.target_2 = (target, Discover.DISCOVERY_PORT_2)
215+
broadcast_target = ".".join(target.split(".")[:3]) + ".255"
216+
self.single_host = broadcast_target != target
217+
self.target_3 = (broadcast_target, Discover.DISCOVERY_PORT_2)
215218

216219
self.discovered_devices = {}
217220
self.unsupported_device_exceptions: dict = {}
@@ -277,7 +280,7 @@ async def do_discover(self) -> None:
277280
break
278281
self.transport.sendto(encrypted_req[4:], self.target_1) # type: ignore
279282
self.transport.sendto(Discover.DISCOVERY_QUERY_2, self.target_2) # type: ignore
280-
self.transport.sendto(aes_discovery_query, self.target_2) # type: ignore
283+
self.transport.sendto(aes_discovery_query, self.target_3) # type: ignore
281284
await asyncio.sleep(sleep_between_packets)
282285

283286
def datagram_received(self, data, addr) -> None:
@@ -287,7 +290,7 @@ def datagram_received(self, data, addr) -> None:
287290

288291
ip, port = addr
289292
# Prevent multiple entries due multiple broadcasts
290-
if ip in self.seen_hosts:
293+
if ip in self.seen_hosts or (self.single_host and ip != self.target):
291294
return
292295
self.seen_hosts.add(ip)
293296

0 commit comments

Comments
 (0)
0