import socketimport structimport timeZ21_IP = '192.168.1.25'Z21_PORT = 21105# ✅ Socket openen op poort 21105 (zoals Z21 verwacht)sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)sock.bind(('', 21105)) # Belangrijk!sock.settimeout(1)# 🔐 Stap 1 – Aanmelden bij Z21broadcast_cmd = bytes([0x40, 0x01, 0x00, 0x00, 0x00, 0x00])sock.sendto(broadcast_cmd, (Z21_IP, Z21_PORT))time.sleep(0.1)# 📦 Stap 2 – Vraag serienummer opget_serial_cmd = bytes([0x40, 0x00, 0x00, 0x00, 0x00, 0x00])success = Falsefor poging in range(3): try: sock.sendto(get_serial_cmd, (Z21_IP, Z21_PORT)) time.sleep(0.1) data, addr = sock.recvfrom(1024) print(f"[Poging {poging+1}] Ontvangen {len(data)} bytes van {addr}: {data.hex()}") if data[0] == 0x40 and len(data) >= 8: serial_bytes = data[4:8] serial_number = struct.unpack('<I', serial_bytes)[0] print(f"Serienummer van Z21: {serial_number}") success = True break else: print("Onverwacht antwoord ontvangen") except socket.timeout: print(f"[Poging {poging+1}] Geen antwoord (timeout)")sock.close()if not success: print("Serienummer niet ontvangen.")input("Druk op Enter om af te sluiten...")
get_serial_cmd = bytes([0x04, 0x00, 0x10, 0x00])
JIk heb de indruk dat meestal het eigenlijke dcc signaal wordt uitgelezen/aangestuurd. Maakt de z21 alle dcc signalen ook via z'n eigen protocol beschikbaar? Op zich moet de app enzo erbij kunnen via het protocol, dus misschien wel.