about summary refs log tree commit diff
diff options
context:
space:
mode:
authorDaniel Høyer Iversen <mail@dahoiv.net>2020-03-04T21·25+0100
committerGitHub <noreply@github.com>2020-03-04T21·25+0100
commite84becd05b3bb879899bb7a8492e1441af3b491e (patch)
treebcecc9ddad1b6f2e7486ef7060d6c23d340305a4
parentec4df3966553250ec0973d50442f024aa0989468 (diff)
Add support for specifying destination IP address to use in discovery (#313)
Co-authored-by: Kja64 <Ken@lkv20.dk>
-rw-r--r--broadlink/__init__.py4
-rwxr-xr-xcli/broadlink_discovery3
2 files changed, 4 insertions, 3 deletions
diff --git a/broadlink/__init__.py b/broadlink/__init__.py
index 41c8010cd6..4c0ea4b137 100644
--- a/broadlink/__init__.py
+++ b/broadlink/__init__.py
@@ -63,7 +63,7 @@ def gendevice(devtype, host, mac):
     return device_class(host=host, mac=mac, devtype=devtype)
 
 
-def discover(timeout=None, local_ip_address=None):
+def discover(timeout=None, local_ip_address=None, discover_ip_address='255.255.255.255'):
     if local_ip_address is None:
         local_ip_address = socket.gethostbyname(socket.gethostname())
     if local_ip_address.startswith('127.'):
@@ -116,7 +116,7 @@ def discover(timeout=None, local_ip_address=None):
     packet[0x20] = checksum & 0xff
     packet[0x21] = checksum >> 8
 
-    cs.sendto(packet, ('255.255.255.255', 80))
+    cs.sendto(packet, (discover_ip_address, 80))
     if timeout is None:
         response = cs.recvfrom(1024)
         responsepacket = bytearray(response[0])
diff --git a/cli/broadlink_discovery b/cli/broadlink_discovery
index 1edbafcbec..1c6b80b148 100755
--- a/cli/broadlink_discovery
+++ b/cli/broadlink_discovery
@@ -7,10 +7,11 @@ import broadlink
 parser = argparse.ArgumentParser(fromfile_prefix_chars='@')
 parser.add_argument("--timeout", type=int, default=5, help="timeout to wait for receiving discovery responses")
 parser.add_argument("--ip", default=None, help="ip address to use in the discovery")
+parser.add_argument("--dst-ip", default=None, help="destination ip address to use in the discovery")
 args = parser.parse_args()
 
 print("Discovering...")
-devices = broadlink.discover(timeout=args.timeout, local_ip_address=args.ip)
+devices = broadlink.discover(timeout=args.timeout, local_ip_address=args.ip, discover_ip_address=args.dst_ip)
 for device in devices:
     if device.auth():
         print("###########################################")