Erweiterte Register-Referenz größtenteils ungeprüft
Ergänzung zur kurzen, bei uns bestätigten Register-Tabelle auf der Startseite: eine deutlich längere Liste, zusammengetragen aus zwei Community-Repositories. Der Großteil davon haben wir selbst nicht nachgeprüft – lies zuerst den Hinweis direkt darunter, bevor du irgendetwas davon verwendest.
Wichtiger Hinweis, bitte zuerst lesen: Die Register mit dem Badge ungeprüft stammen aus einem öffentlichen Community-Scan eines Marstek Venus D (nicht unser A-Modell!) sowie aus der ViperRNMC-Integration für Home Assistant. D und A sind unterschiedliche Geräte mit teils abweichender Registerbelegung (z. B. 13 vs. 16 Zellen pro Pack, teils andere SOC-Adresse). Vieles davon scheint auch beim A-Modell zu existieren und ähnlich zu funktionieren – in den von uns bislang stichprobenartig verglichenen Fällen deckte es sich häufig, bewiesen ist das aber nicht für jedes einzelne Register. Nur Register mit dem Badge bestätigt haben wir selbst live an unserem Venus A verifiziert.
Vor jeder Nutzung: selbst mit modbus.py testen (Download und Anleitung auf der Startseite). Bei Schreibregistern (42xxx, 43xxx, 44xxx) besonders vorsichtig sein – falsche Werte in unbekannte Register können im schlimmsten Fall den Akku in einen unerwünschten Zustand bringen. Wir übernehmen keine Haftung für Schäden durch die Nutzung dieser Liste.
Quellen
- ViperRNMC/marstek_venus_modbus – Home-Assistant-Integration mit Registertabelle für mehrere Modellvarianten (A, D, E v1/v2/v3)
- sphings79/Marstek_Modbus_Register – vollständiger Modbus-TCP-Scan (Register 30000–49999) eines Venus D, abgeglichen mit obiger README, inkl. bislang undokumentierter Register
Messwerte (30000er-Block)
| Register | Bedeutung | Skalierung | Status |
|---|---|---|---|
| 30001 | Batterieleistung (signed): + = Laden, − = Entladen | roh, W | bestätigt |
| 30006 | AC-Leistung | roh, W | bestätigt |
| 30020–30023 | MPPT1–4 Spannung | ×0.1 V | bestätigt |
| 30024–30027 | MPPT1–4 Strom | ×0.1 A | bestätigt |
| 30037–30040 | MPPT1–4 Leistung | ×0.1 W | bestätigt |
| 30100 | Batteriespannung | ×0.01 V | bestätigt |
| 30101 | Batteriestrom (signed) | ×0.1 A | bestätigt |
| 30200 | EMS-Firmware-Version | roh | ungeprüft |
| 30202 | VMS-Firmware-Version | roh | ungeprüft |
| 30204 | BMS-Firmware-Version | roh | ungeprüft |
| 30300 | WLAN verbunden (0/1) | roh | ungeprüft |
| 30301 | Bluetooth-Status | roh | ungeprüft |
| 30302 | Cloud verbunden (0/1) | roh | ungeprüft |
| 30303 | WLAN-Signalstärke | ×−1, dBm | bestätigt |
| 30304–30309 | MAC-Adresse (ASCII) | – | ungeprüft |
| 30350–30355 | Kommunikationsmodul-Firmware (ASCII, Datum) | – | ungeprüft |
| 30400–30401 | Geräte-IP (2×uint16, Oktett-Paare) | roh | ungeprüft |
| 30402–30403 | Gateway-IP (2×uint16, Oktett-Paare) | roh | ungeprüft |
| 31000–31009 | Gerätename (ASCII) | – | ungeprüft |
Batterie / SOC / Energie (32000–33000er)
| Register | Bedeutung | Skalierung | Status |
|---|---|---|---|
| 32104 | SOC (%) – auf unserem Gerät gültig | roh | bestätigt (A) |
| 32105 | Nennkapazität („Battery Total Energy", nicht der aktuelle Ladezustand!) | ×0.001 kWh | bestätigt |
| 34002 | SOC (%) – laut D-Scan anderes Register als bei uns, evtl. nur beim D gültig | ×0.1 % | ungeprüft, ggf. nur D |
| 32200 | AC-Spannung | ×0.1 V | bestätigt |
| 32204 | AC-Frequenz | ×0.1 Hz | bestätigt |
| 32300 | AC-Offgrid-Spannung | ×0.1 V | ungeprüft |
| 32301 | AC-Offgrid-Strom | ×0.01 A | ungeprüft |
| 32302–32303 | AC-Offgrid-Leistung (int32) | roh, W | ungeprüft |
| 33000–33001 | Kumulierte Akku-Entladung (32-Bit) – Vendor-Label nennt es „Charging", ist bei uns aber Entladung | ×0.01 kWh | bestätigt, Label invertiert |
| 33002–33003 | Kumulierte Akku-Ladung (32-Bit) – Vendor-Label nennt es „Discharging", ist bei uns aber Ladung | ×0.01 kWh | bestätigt, Label invertiert |
| 33004–33005 | Tages-Ladeenergie (32-Bit) | ×0.01 kWh | ungeprüft |
| 33006–33007 | Tages-Entladeenergie (32-Bit) | ×0.01 kWh | ungeprüft |
| 33008–33009 | Monats-Ladeenergie (32-Bit) | ×0.01 kWh | ungeprüft |
| 33010–33011 | Monats-Entladeenergie (32-Bit) | ×0.01 kWh | 33010 bestätigt |
Zellen / Pack-Details (34000er)
Unser eigener battery_collector.py (siehe Battery-Stats) liest bereits einen Teil dieses Blocks produktiv aus, entsprechend als bestätigt markiert. Bestätigt: Der Marstek Venus A hat 13 Zellen (nicht 16 wie der Venus D) – die Register für Zelle 14–16 liefern bei uns folglich keinen sinnvollen Wert.
| Register | Bedeutung | Skalierung | Status |
|---|---|---|---|
| 34000 | Pack-1-Gesamtspannung | ×0.01 V | ungeprüft |
| 34003 | Zyklenanzahl Pack 1 | roh | bestätigt |
| 34005 | Pack-1 Max-Zellspannung | ×0.001 V | ungeprüft (bei uns über 37007 abgedeckt) |
| 34006 | Pack-1 Min-Zellspannung | ×0.001 V | ungeprüft (bei uns über 37008 abgedeckt) |
| 34010 | Pack-1-Temperatur | ×0.1 °C | ungeprüft (bei uns über 35010 abgedeckt) |
| 34011 | Pack-1 Max-Zelltemperatur | ×0.1 °C | ungeprüft |
| 34012–34016 | Pack-1-Temperatursensoren 1–5 | ×0.1 °C | ungeprüft |
| 34018–34030 | Pack-1-Einzelzellspannungen, Zelle 1–13 | ×0.001 V | bestätigt |
| 34031–34033 | Einzelzellspannungen Zelle 14–16 (nur Venus D, 16 Zellen) | ×0.001 V | bei uns nicht vorhanden – A hat nur 13 Zellen |
| 34100–34133 | Pack-2-Register (Spiegel von Pack 1, Offset +100) – nur relevant bei 2 verbauten Packs | wie Pack 1 | ungeprüft, bei uns vermutlich nicht relevant (1 Pack) |
| 35011 | Min. Zelltemperatur (global) | ×0.1 °C | bestätigt |
Temperatur / Wechselrichter-Status (35000er)
| Register | Bedeutung | Skalierung | Status |
|---|---|---|---|
| 35000 | Geräte-Innentemperatur | ×0.1 °C | bestätigt |
| 35001 | MOS1-Temperatur (Leistungstransistor) | ×0.1 °C | bestätigt |
| 35002 | MOS2-Temperatur (Leistungstransistor) | ×0.1 °C | bestätigt |
| 35010 | Max. Zelltemperatur (global) | ×0.1 °C | bestätigt |
| 35100 | Wechselrichter-Status | roh | bestätigt |
Alarme / Diagnose (36000–37000er)
| Register | Bedeutung | Skalierung | Status |
|---|---|---|---|
| 36000–36001 | Alarm-Status (32-Bit Bitmask, Bedeutung der einzelnen Bits unbekannt) | roh | ungeprüft |
| 36100–36103 | Fault-Status (64-Bit Bitmask, Bedeutung der einzelnen Bits unbekannt) | roh | ungeprüft |
| 37004 | AC-Strom (negativ = Einspeisung) | ×0.01 A laut Community-Quelle, bei uns im Script mit ×0.004 hinterlegt – Widerspruch, Skalierung noch nicht abschließend geklärt | Register bestätigt, Skalierung unklar |
| 37007 | Max. Zellspannung, aggregiert (Alternative zu Einzelabfrage 34018ff.) | ×0.001 V | bestätigt |
| 37008 | Min. Zellspannung, aggregiert | ×0.001 V | bestätigt |
Steuerregister (40000er-Block, schreibbar)
Dieser Block enthält Schreibregister, die das Geräteverhalten direkt beeinflussen (erzwungenes Laden/Entladen, Leistungslimits, Reset). Bei den ungeprüften Einträgen unbedingt zuerst nur lesen, nicht schreiben, bis der Wert und seine Wirkung am eigenen Gerät nachvollzogen sind.
| Register | Funktion | Werte | Status |
|---|---|---|---|
| 41000 | Gerät zurücksetzen (BMS-Reset) | Schreiben löst Reset aus | ungeprüft |
| 41100 | Modbus Unit-/Slave-ID | roh | ungeprüft |
| 41200 | Backup-/USV-Funktion | 0/1 | ungeprüft |
| 41500–41509 | WLAN-SSID des Kommunikationsmoduls (Klartext-ASCII im D-Scan) | ASCII | sensibel – nicht auslesen/loggen |
| 41510–41515 | evtl. WLAN-Passwort/Verschlüsselungsparameter (teils binär, teils ASCII) | – | sensibel – nicht auslesen/loggen |
| 42000 | RS485-Kontrolle aktivieren | 21930 (0x55AA) = ein, 21947 (0x55BB) = aus | bestätigt |
| 42010 | Force Mode | 0 = Stop/Idle, 1 = Laden, 2 = Entladen | bestätigt |
| 42011 | Ziel-SOC für Force Mode – Gerät soll Laden/Entladen bei Erreichen selbst stoppen | 0–100 % | ungeprüft, vielversprechend |
| 42020 | Ladeleistung (Force Mode) | 0–2500 W | bestätigt |
| 42021 | Entladeleistung (Force Mode) | 0–2500 W | bestätigt |
| 43000 | Work Mode | 0 = Manual, 1 = Anti-Feed, 2 = Trade Mode | bestätigt |
| 43100–43104 | Zeitplan 1 (Tage-Bitmask, Start HHMM, Ende HHMM, Modus in W, Enabled) | siehe Beschreibung | ungeprüft |
| 43105–43109 | Zeitplan 2 (gleiche Struktur wie Zeitplan 1) | siehe oben | ungeprüft |
| 43110–43114 | Zeitplan 3 | siehe oben | ungeprüft |
| 43115–43119 | Zeitplan 4 | siehe oben | ungeprüft |
| 43120–43124 | Zeitplan 5 | siehe oben | ungeprüft |
| 43125–43129 | Zeitplan 6 | siehe oben | ungeprüft |
| 44002 | Max. Ladeleistung | 800–2500 W | bestätigt |
| 44003 | Max. Entladeleistung | 800–2500 W (D-Scan zeigte 2200 W statt 2500 W – Wert am eigenen Gerät prüfen) | Register bestätigt, Wertebereich abweichend geprüft |
| 47400 | evtl. Magic-Number/Testpattern (0xAABB) – reine Vermutung, niedrige Priorität | roh | sehr unsicher |
Was nachweislich nicht existiert
- Kein eigenes Register für die aktuell gespeicherte Energie in Wh – berechnet sich nur als
SOC% × Nennkapazität. - Kein Register für kumulierte PV-Gesamterzeugung – nur die Momentanleistung je MPPT-String (30037–30040).
So testest du selbst
Mit dem modbus.py-Script von der Startseite lässt sich jedes einzelne Register unkompliziert lesen:
python3 modbus.py <IP-deines-Akkus> <REGISTER>
Vorgehen für ungeprüfte Register: erst lesen und den Wert mit einer bekannten Größe plausibilisieren (z. B. Temperatur mit Umgebungstemperatur vergleichen, Spannung mit der Multimeter-Messung), bevor du dich im eigenen Code darauf verlässt. Bei Schreibregistern zusätzlich: erst mit einem unkritischen Wert testen (z. B. sehr niedrige Lade-/Entladeleistung) und die Reaktion des Akkus beobachten, bevor du produktiv damit arbeitest.
Und wie immer: nicht zu häufig abfragen (siehe Fallstricke auf der Startseite) – ein Poll-Intervall von einigen Sekunden pro Register reicht, mehr sollte man dem Gerät nicht zumuten.
Bestätigt sich bei dir eines der ungeprüften Register – oder stellt sich ein Wert als falsch heraus? Diese Liste lebt von genau solchem Abgleich zwischen A- und D-Modell.
Häufig gestellte Fragen (FAQ)
Gibt es beim Marstek Venus A ein Register für die aktuell gespeicherte Energie in Wh?
Nein, ein solches Register existiert nicht. Weder in unserer eigenen, live getesteten Registerliste noch in den ausgewerteten Community-Quellen (ViperRNMC-Integration, Venus-D-Vollscan) taucht ein Register auf, das direkt die aktuell im Akku gespeicherte Energiemenge in Wh oder kWh liefert. Der Wert lässt sich nur indirekt berechnen: SOC in % (Register 32104) multipliziert mit der Nennkapazität in kWh (Register 32105, „Battery Total Energy"). Genau das macht z. B. auch die Berechnung in unserem battery_collector.py.
Gibt es beim Marstek Venus A ein Register für die kumulierte PV-Gesamterzeugung?
Nein. Es gibt nur Register für die aktuelle Momentanleistung je MPPT-String (30037–30040, vier Strings, ×0.1 W) sowie die zugehörigen Spannungen (30020–30023) und Ströme (30024–30027) – alle vier bei uns bestätigt. Eine über die Zeit aufsummierte PV-Gesamterzeugung in kWh liefert der Akku selbst nicht. Wer diesen Wert braucht, muss die Momentanleistung selbst zeitlich integrieren (z. B. per Cron-Collector wie unserem battery_collector.py oder einer Home-Assistant-Integration-Platform).
Wie viele Zellen hat der Marstek Venus A pro Batteriepack?
13 Zellen in Serie (13S), bei uns live über die Register 34018–34030 bestätigt. Der größere Venus D hat dagegen 16 Zellen pro Pack (Register bis 34033) – Register für Zelle 14–16 liefern beim Venus A folglich keinen sinnvollen Wert.