Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import socket
- import struct
- from datetime import datetime
- TOPICS = (
- "id",
- "row",
- "cycle",
- "capacity",
- "error",
- "voltage",
- "current",
- "charge",
- "temperature",
- "timestamp",
- )
- ST = struct.Struct("<5i9f")
- BROADCAST = "255.255.255.255"
- PORT = 2020
- ADDR = (BROADCAST, PORT)
- print("Size:", ST.size)
- with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as sock:
- sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
- sock.bind(ADDR)
- while data := sock.recvfrom(ST.size):
- msg, (ip, port) = data
- size = len(msg)
- if size != ST.size:
- continue
- result = dict(zip(TOPICS, (ST.unpack(msg))))
- try:
- result["timestamp"] = datetime.fromtimestamp(result["timestamp"])
- except ArithmeticError:
- pass
- print(result)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement