Warum lokal statt Cloud
Die Hersteller-Cloud liefert Daten minutenverzögert, hat API-Limits, jeder Hersteller hat eine andere, und fällt das Internet aus, sind die Daten weg. Lokales Modbus TCP liefert alle paar Sekunden einen Messwert, ohne Konten und Schlüssel, mit demselben Mechanismus für Wechselrichter, Zähler und Speicher.
Modbus in fünf Sätzen
- Ein Gerät stellt 16-Bit-Register bereit: Holding (Funktion 03) und Input (04).
- Eine Anfrage besteht aus Unit-ID, Adresse des ersten Registers und Anzahl der Register.
- Ein 32-Bit-Wert belegt zwei Register, die Wortreihenfolge hängt vom Hersteller ab.
- Die Skalierung ist ein eigenes Register oder eine Konstante aus der Doku.
- Modbus RTU ist dasselbe über RS485, mit CRC sowie Baudrate und Parität zum Einstellen.
SunSpec: eine Registerkarte für viele Hersteller
Die SunSpec Alliance standardisiert das Registerlayout. Ab Adresse 40000 steht die Kennung SunS, danach folgt eine Kette von Blöcken (Modellen): 1 – Geräteinfo, 101/103 – ein- und dreiphasiger Wechselrichter, 201–204 – Zähler, 124 – Speichersteuerung. Jeder Block trägt ID und Länge; wer die Kette abläuft, weiß, was das Gerät kann. Ein Treiber deckt so Wechselrichter vieler Marken ab.
# Modell 103 (3-phasiger WR) – Wirkleistung W und Skalierung W_SF
regs = client.read_holding_registers(address=40083, count=2, slave=1).registers
power_w = int16(regs[0]) * 10 ** int16(regs[1]) # W × 10^W_SF
if regs[0] == 0x8000: # SunSpec „nicht verfügbar“
power_w = None
Fallen aus der Praxis
- Adressen ab 0 oder ab 1. „Register 40084“ im Handbuch ist oft Adresse 40083 in der Anfrage.
- „Nicht verfügbar“-Werte:
0x8000(int16),0xFFFF(uint16). Nicht als Messwert speichern. - Vorzeichen der Leistung. Netz: Plus ist Bezug, Minus Einspeisung. Beim Speicher unterscheidet sich die Konvention je Hersteller, darum lässt sich im Panel jede Quelle invertieren.
- Nur ein Client. Manche Wechselrichter akzeptieren nur eine Modbus-TCP-Verbindung; ein zweites System (z. B. das EMS des Installateurs) kann das Gateway verdrängen.
- Blockweise lesen. Eine Anfrage über 60 Register ist schneller und stabiler als 60 Einzelanfragen.
So machen wir es in Polbyte IoT
Das Gateway scannt das lokale Netz, findet Geräte auf Port 502 und schlägt einen Treiber vor. Die Variablendefinitionen (Name, Einheit) schickt es mit den Messwerten an den Server, ein neuer Gerätetyp braucht also keine Datenbankänderung. Getestet wird alles auf einem Haus-Simulator: sechs Modbus-TCP/SunSpec-Geräte, ganz ohne Dach voller Module.
Sie wollen einen bestimmten Wechselrichter, Zähler oder eine SPS anbinden? Eine Registerkarte reicht für den Start.
Ein ähnliches Problem?
Beschreiben Sie es in zwei Sätzen. Wir sagen Ihnen, ob und wie wir helfen können.
Kontakt aufnehmen →