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