Modbus-Stromzähler: So liest du ihn aus und bindest ihn ein

Ein Modbus-Stromzähler stellt seine Messwerte (Leistung, Strom, Spannung, Energie) über die Modbus-Schnittstelle bereit, sodass ein Steuergerät sie zyklisch abfragen kann. Du liest die Werte aus, indem du dich per RS485 (Modbus RTU) oder Netzwerk (Modbus TCP, Port 502) auf die richtige Slave-Adresse und Register verbindest.
Das ist ein digitaler Energiezähler mit Modbus-Schnittstelle. Er misst wie jeder Zähler Wirkleistung, Blindleistung, Strom, Spannung und Zählerstände – legt diese Werte aber in sogenannten Registern ab, die ein übergeordnetes Gerät (Master) auslesen kann. Bei Stromfee nutzen wir dafür z. B. den Eastron SDM630(MCT) an einem Trafo für die Wirkleistungs-Messung, ausgelesen von einem Raspberry Pi als Modbus-Master.

Zwei Wege sind üblich: Modbus RTU läuft über eine RS485-Zweidrahtleitung (A/B) – typisch bei DIN-Schienen-Zählern wie der Eastron-SDM-Reihe. Modbus TCP läuft übers Netzwerk auf Port 502 – typisch bei Wechselrichtern und BESS-Controllern. Beides nutzt dieselbe Register-Logik, nur der Transportweg unterscheidet sich. Prüfe im Datenblatt, welche Schnittstelle dein Zähler hat.

Du brauchst drei Angaben: Host/Port (bei TCP) oder Schnittstelle (bei RTU), die Slave-ID (Geräteadresse, oft 1) und die Register-Adresse. Mit der Bibliothek pymodbus geht das so: from pymodbus.client import ModbusTcpClient c = ModbusTcpClient('HOST', port=502) c.connect() rr = c.read_holding_registers(0, 10, slave=1) print(rr.registers if not rr.isError() else rr) c.close() Weißt du die genaue Register-Adresse nicht, taste dich über mehrere Basis-Adressen (0, 100, 1000) heran und schau, wo plausible Werte zurückkommen.

Ohne die Register-Map deines Geräts geht nichts Verlässliches. Die Map sagt dir, welche Adresse welchen Messwert liefert und in welchem Format (z. B. 32-Bit-Float über zwei Register). Bei schreibfähigen Geräten wie Wechselrichtern gehören dazu auch die Schreib-Register für Sollwerte (Wirkleistung, Blindleistung, Modus). Besorg dir die aktuelle, vollständige Map vom Hersteller, bevor du fest verdrahtest.

Bei RS485 müssen alle Geräte am Bus die gleiche Baudrate/Parität haben, jede Slave-ID darf nur einmal vorkommen, und A/B dürfen nicht vertauscht sein. Bei TCP muss der Zähler bzw. Controller vom auslesenden Gerät im Netz erreichbar sein (Port 502 offen). Ein häufiger Stolperstein: die Werte kommen an, werden aber im falschen Format interpretiert – dann stimmt die Register-Definition nicht.
- Warum fast jede Stromabrechnung 2026 falsch ist
- Blind- & Scheinleistung auf der Rechnung
- Lohnt sich ein Batteriespeicher (BESS)?
- Negative Strompreise 2026 automatisch abregeln
- Lastspitzen vermeiden (Flex)
- §51-Schaden berechnen