Utilities#

Solarman Scan Utility#

 1""" Scan local network for Solarman data loggers """
 2
 3import socket
 4
 5
 6def main():
 7    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
 8    sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
 9    sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
10    sock.settimeout(1.0)
11
12    request = "WIFIKIT-214028-READ"
13    address = ("<broadcast>", 48899)
14
15    sock.sendto(request.encode(), address)
16    while True:
17        try:
18            data = sock.recv(1024)
19        except socket.timeout:
20            break
21        keys = dict.fromkeys(['ipaddress', 'mac', 'serial'])
22        values = data.decode().split(",")
23        result = dict(zip(keys, values))
24        print(result)
25
26
27if __name__ == "__main__":
28    main()