BYD Battery-Box HVM: SOC und Leistung nach KNX via Wechselrichter Modbus TCP
Auslesen des SOC und der Lade-/Entladeleistung der BYD Battery-Box HVM über die Modbus TCP-Schnittstelle des gekoppelten Wechselrichters — SolarEdge StorEdge Register, Fronius SunSpec Model 802 und SMA Sunny Boy Storage Register. Node-RED Abfrageflow und KNX DPT-Zuordnung für die Eigenverbrauchsautomatisierung.
Warum BYD keinen direkten Modbus-Port hat
BYD Battery-Box HVM (403,2-V-Hochvoltanlage, 2,76–22,1 kWh pro Stack) kommuniziert mit dem Wechselrichter über ein proprietäres CAN-Bus-/EnergyLink-Protokoll am CAN-Port zwischen Batterie und Wechselrichter. BYD stellt keinen benutzerzugänglichen Modbus TCP- oder RS485-Port an der Batterie bereit. Alle Batteriedaten müssen indirekt über den zertifizierten Wechselrichterpartner ausgelesen werden.
SolarEdge StorEdge + BYD: Registerkarte
SolarEdge SE5K-RWS00BNN4 (StorEdge) mit BYD Battery-Box HVM: Modbus TCP Port 1502, Unit-ID 1.
Batteriespezifische Holding-Register (FC3, uint16 / int16):
| Register | Beschreibung | Typ / Skalierung |
|---|---|---|
| 62784 (0xF540) | Batterie 1 Durchschnittstemperatur | int16, °C x10 |
| 62786 (0xF542) | Batterie 1 DC-Spannung | uint16, V x100 |
| 62794 (0xF54A) | Batterie 1 Momentanleistung | int16, W — positiv=Laden, negativ=Entladen |
| 62798 (0xF54E) | Batterie 1 Ladezustand | uint16, % |
| 62800 (0xF550) | Batterie 1 Gesundheitszustand | uint16, % |
| 62852 (0xF584) | Batterie 1 Statusbitmask | uint16: Bit 3=Laden, Bit 4=Entladen, Bit 11=Fehler |
KNX-Zuordnung: Register 62794 (int16, W) durch 1000 dividiert ergibt KNX DPT 9.001 (Batterieleistung kW), Register 62798 auf KNX DPT 5.001 (SOC %). Hinweis: Register 62794 ist ein vorzeichenbehafteter Integer — das MDT Modbus-Gateway muss für dieses Register auf den Datentyp signed int16 konfiguriert werden.
Fronius Symo Gen24 + BYD: SunSpec Model 802
Fronius Symo Gen24 5.0-1 mit BYD Battery-Box HVM: Modbus TCP Port 502, Unit-ID 1. SunSpec-Register beginnen bei 40001 (Basisadresse).
SunSpec Model 802 (Battery Base Model) wird nach Model 103 (Wechselrichter) angehängt. Um Model 802 dynamisch zu lokalisieren: SunSpec-Blockliste ab Basis scannen. In der Praxis bei Fronius Gen24 mit Firmware 1.24.x beginnen die Batterieregister bei ca. 40331:
Fronius Gen24 SunSpec Model 802 — wichtige Register
Register 40331: SunSpec Model 802 ID (value 802) Register 40333: Battery SOC (uint16, SF from register 40372) Register 40337: Battery instantaneous power (int16, W — positive=charging) Register 40341: Battery status (enum16: 1=off, 3=charging, 4=discharging, 7=fault) Register 40361: Battery SOC (float32 alternative, direct %)
Für den Produktionseinsatz: MDT Modbus-Gateway liest Register 40361 (2 Register, float32 Big-Endian) für SOC und Register 40337 (int16) für Leistung. Zuordnung zu KNX-Gruppenadressen.
SMA Sunny Boy Storage + BYD: Registeradressen
SMA SBS6.0-10 mit BYD Battery-Box: Modbus TCP Port 502, Unit-ID 3 (SMA verwendet für Speicherwechselrichter typischerweise Unit-ID 3).
| Register | Beschreibung | Typ |
|---|---|---|
| 30845-30846 | Batterie SOC (0–100 %) | uint32 |
| 30851-30852 | Batterie Gesundheitszustand (0–100 %) | uint32 |
| 30775-30776 | Batterie Ladeleistung (W — positiv=Laden, negativ=Entladen) | int32 |
| 30843-30844 | Batterie Betriebsstatus (2291=leer, 2292=Laden, 2293=Entladen, 2294=voll) | uint32 |
Hinweis: SMA verwendet den Datentyp uint32 (je 2 Register) auch für Prozentwerte. MDT Modbus-Gateway: Datentyp 'unsigned 32-bit integer', Bytereihenfolge 'Big-Endian', SOC-Registerwert durch 1 dividieren (bereits Prozent, keine Skalierung erforderlich).
Node-RED Abfrageflow
Node-RED-Pakete installieren: node-red-contrib-modbus (Modbus TCP Polling). Flow-Struktur:
Node-RED Flow — SolarEdge BYD SOC und Leistung nach KNX
Inject (30s interval)
→ Modbus Read (server: 192.168.1.100, port 1502, unit 1,
FC3, start 62798, count 1, datatype INT)
→ Function: msg.payload = msg.payload[0]; return msg;
→ KNX-Classic Out (GA: 6/4/1, DPT 5.001 — Battery SOC %)
Second branch from inject (register 62794 — battery power):
→ Modbus Read (same server, start 62794, count 1, datatype INT)
→ Function:
var value = msg.payload[0];
if (value > 32767) { value = value - 65536; }
msg.payload = value / 1000;
return msg;
→ KNX-Classic Out (GA: 6/4/2, DPT 9.001 — Battery power kW,
positive = charging)KNX Eigenverbrauchsautomatisierung
ETS6 Logikcontroller (MDT Logic Controller oder Weinzierl IP 731): Regel — Wenn GA 6/4/1 (Batterie-SOC) über 85 UND GA 7/0/0 (PV-Einspeisung, DPT 9.001) über 0,5 kW, KNX-Ausgang GA 1/5/4 aktivieren (Warmwasser-Boost, 30-Min.-Timer). Regel — Wenn GA 6/4/1 (SOC) unter 20 fällt, KNX-Ausgang GA 1/6/1 deaktivieren (EV-Ladefreigabe, DPT 1.001). Hysterese: SOC muss über 30 steigen, bevor EV-Laden wieder freigegeben wird.
Vorzeichenbehaftete Integer-Behandlung: SolarEdge Register 62794 (Batterieleistung) ist ein vorzeichenbehaftetes 16-Bit-Integer. Wenn es von manchen Gateways als vorzeichenloser Wert gelesen wird, erscheint die Ladeleistung als große positive Zahl (z. B. 65436 statt -100W). Das MDT SCN-MOD.02 oder ein gleichwertiges Gateway immer auf signed int16 für dieses Register konfigurieren oder die Subtraktionsformel (wenn Wert über 32767: 65536 subtrahieren) in Node-RED oder im Logikcontroller anwenden.
Benötigen Sie ein KNX-Schaltschrank mit BYD-Batterie-Modbus-Integration nach Spezifikation?
Wir entwickeln Niederspannungsschaltschränke mit SolarEdge-, Fronius- und SMA-Modbus-Batterieintegration, KNX-Eigenverbrauchslogik und vollständiger Inbetriebnahmedokumentation — geliefert, getestet und verifiziert auf Ihrer Baustelle.
Angebot anfordern →