Repository navigation
Modbus Register
Vollständige Referenz der Holding-Register des Deye SUN-xK-SG04LP3 (3-Phase LV Hybrid), so wie sie diese Firmware verwendet und im Register-Explorer des Web-UI interpretiert.
Adressen sind dezimal und werden so gezählt, wie der Wechselrichter sie auf dem Bus erwartet - ohne den 40001-Offset mancher Modbus-Werkzeuge.
- Konventionen
- Poll-Blöcke der Bridge
- Geräte-Identifikation (0-23)
- Steuerung und Selbsttest (60-96)
- Batterie-Setup (98-120)
- Generator, Netzladen, Smart Load (121-139)
- System-Modus und Zero Export (140-147)
- Time-of-Use-Blöcke (148-177)
- Funktions-Flags und Netz-Standards (178-194)
- ARC-Diagnose (195-208)
- UPS, BMS, Batterie-Hersteller (209-235)
- Zellen, Parallelbetrieb, CT (310-351)
- Ride-Through und Volt-VAR (380-419)
- Betriebszustand, Warnungen, Fehler (500-558)
- Energiezähler (501-539)
- Temperaturen (540-543)
- Batterie live (586-592)
- Netz live (598-625)
- Inverter-Ausgang (627-638)
- UPS / Backup-Load (640-643)
- Load (644-655)
- Generator live (661-671)
- PV / MPPT (672-683)
- Batterie-Steuerung (schreibend)
- MQTT-Mapping
- Bekannte Abweichungen
- Quellen
| Thema | Festlegung |
|---|---|
| Transport | Modbus RTU über RS485, 9600 8N1, Slave-ID 1 (Default, im Web-UI änderbar) |
| Lesen | FC03 - Read Holding Registers |
| Schreiben | FC16 - Write Multiple Registers |
| Adressierung | dezimal, ohne 40001-Offset |
U16 |
16 Bit vorzeichenlos |
S16 |
16 Bit vorzeichenbehaftet (Zweierkomplement) |
U32 |
zwei Register, Low-Word zuerst: wert = (hi << 16) | lo
|
| Skalierung | Anzeigewert = Rohwert x Faktor |
| Temperatur |
°C = Rohwert x 0,1 - 100 (Deye-Offset-Konvention) |
| ASCII | zwei Zeichen pro Register, High-Byte zuerst |
Vorzeichen bei Leistungen. Die Bridge liest die Leistungsregister als S16.
Für die Batterie gilt nach Deye-Konvention positiv = Entladung,
negativ = Ladung. Bei Netz- und CT-Leistung steht positiv für Bezug,
negativ für Einspeisung. Beide Konventionen sind modell- und
firmwareabhängig - vor dem Bau von Automationen am realen Gerät
verifizieren (Live-Daten im Web-UI).
Wertebereich. Die Leistungsregister sind 16 Bit breit und laufen jenseits von ca. 32 kW über. Für den SG04LP3 (max. 12 kW) ist das unkritisch.
Die Firmware liest nicht Register für Register, sondern drei zusammenhängende Blöcke plus einen einmaligen Static-Read. Das hält die Buslast niedrig und die Live-Werte trotzdem aktuell.
| Block | Bereich | Register | Frequenz |
|---|---|---|---|
| HOT | 586..638 | 53 | jeder Zyklus (Default 2 s) |
| COLD | 500..558 | 59 | jeder N. Zyklus (Default N = 3) |
| COLD2 | 644..683 | 40 | jeder N. Zyklus |
| SN | 3..7 | 5 | einmal beim Boot |
Register außerhalb dieser Blöcke - etwa die Setup-Register unter 500 oder die UPS-Leistungen 640..643 - werden nicht zyklisch gelesen. Sie lassen sich im Web-UI unter Deye RTU Konfiguration mit der Probe-Funktion einzeln abfragen; die Interpretationstabelle dort deckt alle hier dokumentierten Register ab.
| Reg | Name | Typ | Skalierung | Anmerkung |
|---|---|---|---|---|
| 0 | Device Type | U16 | Enum | 2 = String, 3 = 1-Phase Hybrid, 4 = Micro, 5 = 3-Phase LV Hybrid, 6 = 3-Phase HV Hybrid |
| 1 | Modbus Address | U16 | - | Slave-ID |
| 2 | Protokoll-Version | U16 | - | |
| 3..7 | Seriennummer | ASCII | 10 Bytes | von der Bridge einmal beim Boot gelesen |
| 8 | Rated Power | U16 | - | |
| 11 | Assistant Prog Version | U16 | hex | |
| 14 | Ctrl FW Version Seg2 | U16 | - | |
| 15 | Ctrl FW Master Version | U16 | - | |
| 16 | Comm FW Version Seg1 | U16 | - | |
| 17 | Comm FW Version Seg2 | U16 | - | |
| 18 | Comm FW Master Version | U16 | - | |
| 19 | Safety Type | U16 | - | |
| 20 | Rated Power (low) | U16 | 0,1 W | Low-Word von U32 |
| 21 | Rated Power (high) | U16 | 0,1 W | High-Word |
| 22 | MPPT Num & Phases | U16 | Bitfeld | Anzahl MPPTs und Phasen |
| 23 | Rated Grid Voltage | U16 | Enum | 0 = 127/220 V, 1 = 220/380 V |
| Reg | Name | Typ | Skalierung | Anmerkung |
|---|---|---|---|---|
| 60 | Remote Lock | U16 | Enum | 0 = turn on, 2 = turn off |
| 61 | Self-Check Time (Boot) | U16 | s | |
| 62 | System Time Byte01 | U16 | Jahr | |
| 63 | System Time Byte03 | U16 | Tag | |
| 64 | System Time Byte05 | U16 | Minute | |
| 65 | Insulation Impedance | U16 | 0,1 kOhm | |
| 74 | Communication Address | U16 | - | |
| 75 | Communication Baudrate | U16 | - | |
| 77 | Active Power Regulation | U16 | 0,1 % | |
| 78 | Reactive Power Regulation | U16 | 0,1 % | |
| 79 | Apparent Power Regulation | U16 | 0,1 % | |
| 80 | Inverter enabled | U16 | Enum | 0 = aus, 1 = an |
| 81 | Factory Reset Enable | U16 | Enum | 0 = disable, 1 = enable |
| 82 | Self-Checking Time | U16 | s | |
| 83 | Island Protection Enable | U16 | Enum | |
| 84 | MPPT Number Enable | U16 | Enum | |
| 85 | GFDI Enable | U16 | Enum | Ground Fault Detection |
| 87 | RISO Enable | U16 | Enum | Isolationsüberwachung |
| 88 | Grid Standard (alt) | U16 | Enum | 1 = China, 2 = Brazil, 3 = India |
| 90 | Low Voltage Ride Through | U16 | Enum | |
| 91 | MCU EEPROM Init | U16 | Enum | 0 = normal, 1 = EEPROM initialisieren |
| 92 | Comm EEPROM Init | U16 | Enum | 0 = normal, 1 = EEPROM initialisieren |
| 96 | PowerWH Factor | U16 | 0,01 |
| Reg | Name | Typ | Skalierung | Anmerkung |
|---|---|---|---|---|
| 98 | Battery Control Mode | U16 | Enum | 0 = Blei 4-stufig, 1 = Lithium |
| 99 | Battery Equalization Voltage | U16 | 0,01 V | |
| 100 | Battery Absorption Voltage | U16 | 0,01 V | |
| 101 | Battery Float Voltage | U16 | 0,01 V | |
| 102 | Battery Capacity (aktuell) | U16 | Ah | |
| 103 | Battery Empty Voltage | U16 | 0,01 V | |
| 104 | System Zero-Export Power | U16 | W | |
| 105 | Battery Equalization Days | U16 | d | |
| 106 | Battery Equalization Hours | U16 | h | |
| 107 | Temp Compensation | U16 | mV/°C | |
| 108 | Battery Max Charge Current | U16 | A | |
| 109 | Battery Max Discharge Current | U16 | A | |
| 111 | Battery Type | U16 | Enum | 0 = über Spannung, 1 = Lithium (BMS), 2 = keine Batterie |
| 112 | Battery Wake Up | U16 | Enum | |
| 113 | Battery Resistance | U16 | mOhm | |
| 114 | Battery Charge Efficiency | U16 | 0,1 % | |
| 115 | Battery Shutdown Capacity | U16 | % | |
| 116 | Battery Restart Capacity | U16 | % | |
| 117 | Battery Low Capacity | U16 | % | |
| 118 | Battery Shutdown Voltage | U16 | 0,01 V | |
| 119 | Battery Restart Voltage | U16 | 0,01 V | |
| 120 | Battery Low Voltage Warn | U16 | 0,01 V |
| Reg | Name | Typ | Skalierung | Anmerkung |
|---|---|---|---|---|
| 121 | Generator Max Operating Time | U16 | 0,1 h | |
| 122 | Generator Cooling Time | U16 | 0,1 h | |
| 123 | Gen Charge Start Voltage | U16 | 0,01 V | laut Doku; auf realer Hardware ggf. abweichend |
| 124 | Gen Charge Start SOC | U16 | % | |
| 125 | Gen Charge Max Current | U16 | A | |
| 126 | Grid Charge Max Power | U16 | W | Doku nennt "Grid Charge Start Voltage", empirisch aber Maximalleistung |
| 127 | Grid Charge Start SOC | U16 | % | |
| 128 | Grid Charge Max Current | U16 | A | |
| 129 | Gen Charge Enable | U16 | Enum | 0 = aus, 1 = an |
| 130 | Grid Charge Enable | U16 | Enum | 0 = aus, 1 = an |
| 131 | AC Couple Freq Upper | U16 | 0,01 Hz | |
| 132 | Force Generator as Load | U16 | Enum | |
| 133 | Generator Port Usage | U16 | Enum | 0 = Generator, 1 = Smart Load, 2 = Micro Inverter |
| 134 | Smart Load Off Voltage | U16 | 0,01 V | |
| 135 | Smart Load Off SOC | U16 | % | |
| 136 | Smart Load On Voltage | U16 | 0,01 V | |
| 137 | Smart Load On SOC | U16 | % | |
| 138 | Lithium Battery Enable | U16 | Enum | |
| 139 | Battery Capacity | U16 | Ah |
| Reg | Name | Typ | Skalierung | Anmerkung |
|---|---|---|---|---|
| 140 | Signal Source | U16 | Enum | 0 = beide aus, 1 = Grid Signal, 2 = Gen Signal, 3 = beide an |
| 141 | Energy Mgmt Mode | U16 | Bitmaske | Bit0-1: 0 = Battery First / 1 = Load First; Bit2-3 passiv; Bit4-5 aktiver Grid Balance |
| 142 | System Work Mode | U16 | Enum | 0 = Self Use, 1 = Zero Export to Load, 2 = Zero Export to CT, 3 = Selling First - siehe Abweichungen |
| 143 | Max Sell Power | U16 | W | |
| 144 | External CT Clamp Phase | U16 | Bitfeld | |
| 145 | Solar Export | U16 | Enum | 0 = aus, 1 = an |
| 146 | TOU Day-Mask / Enable | U16 | Bitmaske | schaltet die Time-of-Use-Slots scharf |
| 147 | Grid Phase Sequence | U16 | Enum | 0 = 0/120/240, 1 = 0/240/120 |
Sechs Zeitslots, jeder Parameter liegt als zusammenhängender Sechserblock.
Slot n (1..6) findet sich also jeweils bei Basis + n - 1.
| Reg | Name | Typ | Skalierung | Anmerkung |
|---|---|---|---|---|
| 148..153 | TOU Time Slot 1..6 | U16 | HH*100 + MM |
aufsteigend, z.B. 1630 = 16:30 |
| 154..159 | TOU Power Slot 1..6 | U16 | W | Lade- bzw. Entlade-Sollleistung |
| 160..165 | TOU Voltage Slot 1..6 | U16 | 0,01 V | Alternative zum SOC-Ziel |
| 166..171 | TOU SOC Slot 1..6 | U16 | % | Ziel-SOC des Slots |
| 172..177 | TOU Grid Charge 1..6 | U16 | Enum | 0 = kein Netzladen, 1 = Netzladen erlaubt |
| Reg | Name | Typ | Skalierung | Anmerkung |
|---|---|---|---|---|
| 178 | Function Flags 1 | U16 | Bitmaske | paarweise Bits (10 = disable, 11 = enable): Bit0-1 MicroInv Export Cutoff, Bit2-3 Gen Peak Shave, Bit4-5 Grid Peak Shave, Bit6-7 On-Grid Always On |
| 179 | Function Flags 2 | U16 | Bitmaske | Bit0-1 externe CT-Richtungserkennung, Bit2-3 Forced Off-Grid |
| 180 | Restore Connection Time | U16 | s | Wiederzuschaltzeit nach Netzfehler |
| 181 | Solar Arc Fault Mode | U16 | Enum | |
| 182 | Grid Standard | U16 | Enum | 0 Generic, 1 IEEE1547, 2 RULE21, 3 SRD_UL1741, 4 CEI_0_21, 5 EN50549_CZ, 6 AS4777_A, 7 AS4777_B, 8 AS4777_C, 9 AS4777_NZ, 10 VDE4105, 11 OVE_R25, 12 EN50549_CZ_L16A |
| 183 | Grid Frequency Config | U16 | Enum | 0 = 50 Hz, 1 = 60 Hz |
| 184 | Grid Type | U16 | Enum | 0 = 1-phasig 220-240 V, 1 = Split-Phase 120/240 V, 2 = 3-phasig 208 V, 3 = 1-phasig 120 V |
| 185 | Grid Voltage High Limit | U16 | 0,1 V | |
| 186 | Grid Voltage Low Limit | U16 | 0,1 V | |
| 187 | Grid Frequency High Limit | U16 | 0,01 Hz | |
| 188 | Grid Frequency Low Limit | U16 | 0,01 Hz | |
| 189 | Gen connected to Grid Input | U16 | Enum | |
| 190 | Gen Peak Shaving Power | U16 | W | |
| 191 | Grid Peak Shaving Power | U16 | W | |
| 192 | Smart Load Open Delay | U16 | min | |
| 193 | Output PF Setting | U16 | 0,1 % | |
| 194 | External Relay Bits | U16 | Bitmaske | Bit0-8 = 8 Relais |
Werksdiagnose der Lichtbogenerkennung, je Größe ein High- und ein Low-Register. Nur zur Diagnose lesen.
| Reg | Name |
|---|---|
| 195 / 196 | ARC_factory_B High / Low |
| 197 / 198 | ARC_factory_I High / Low |
| 199 / 200 | ARC_factory_F High / Low |
| 201 / 202 | ARC_factory_D High / Low |
| 203 / 204 | ARC_factory_T High / Low |
| 205 / 206 | ARC_factory_C High / Low |
| 207 / 208 | ARC_factory_Frz High / Low |
| Reg | Name | Typ | Skalierung | Anmerkung |
|---|---|---|---|---|
| 209 | UPS Delay Time | U16 | s | |
| 210 | BMS Charge Voltage | U16 | 0,01 V | |
| 211 | BMS Discharge Voltage | U16 | 0,01 V | |
| 212 | BMS Charge Current Limit | U16 | A | |
| 213 | BMS Discharge Current Limit | U16 | A | |
| 214 | BMS SOC | U16 | % | Wert aus dem BMS, nicht der WR-eigene SOC (588) |
| 215 | BMS Voltage | U16 | 0,01 V | |
| 216 | BMS Current | U16 | 0,01 A | |
| 217 | BMS Temperatur | S16 | x0,1 - 100 °C | |
| 218 | BMS Max Charge Current | U16 | A | |
| 219 | BMS Max Discharge Current | U16 | A | |
| 220 | BMS Alarm Flags | U16 | Bitmaske | |
| 221 | Li Battery Fault Bits | U16 | Bitmaske | |
| 222 | Li Battery Flag 2 | U16 | Bitmaske | |
| 223 | Lithium Battery Protocol | U16 | Enum | 0 PYLON/SOLAX (CAN), 1 Tianbangda RS485, 2 KOK, 3 Keith, 4 Topai, 5 Pylon 485, 6 Jielisi 485, 7 Xinwangda 485, 8 Xinruineng 485, 9 Tianbangda 485, 10 Shenggao CAN |
| 224 | Lithium Battery SOH | U16 | % | |
| 227 | Upgrade LCD Test | U16 | Enum | |
| 228 | Comm Board Setup Bits | U16 | Bitmaske | Zeit / Beeper / AM-PM |
| 229 | Battery 1 Manufacturer | U16 | Enum | 0 HereYin, 1 PYLON, 2 SOLAX, 3 DYNESS_L, 4 CCGX, 5 Alpha_ESS, 6 SUNGO_CAN, 7 VISION_CAN, 8 WATTSONIC_CAN, 9 KUNLAN, 10 GSEnergy, 11 GS_HUB, 12 BYD_LV, 13 AOBO, 14 DEYE, 15 CFE, 16 DMEGC, 17 UZENERGY, 18 GROWATT |
| 235 | Track Grid Phase | U16 | Enum |
| Reg | Name | Typ | Skalierung | Anmerkung |
|---|---|---|---|---|
| 310 | Solar makes Wind Input | U16 | Bitmaske | Bit0 = String 1, Bit1 = String 2 |
| 311..322 | Cell Voltage 1..12 | U16 | 0,1 V | |
| 323..334 | Cell Current 1..12 | U16 | 0,1 A | |
| 336 | Parallel Bitfeld | U16 | Bitmaske | Master/Slave-Rolle im Parallelverbund |
| 340 | Max Solar Power | U16 | W | |
| 344 | Grid Check Mode | U16 | Bit0 | 0 = CT, 1 = Meter |
| 347 | External CT Ratio | U16 | :1 | |
| 348 | Meter CT Ratio | U16 | :1 | |
| 350 | Charge Slew Rate (positiv) | U16 | W | Rampe beim Hochfahren |
| 351 | Charge Slew Rate (negativ) | U16 | W | Rampe beim Herunterfahren |
Netzstützverhalten nach kalifornischem Regelwerk (CA). Spannungs- und Frequenzschwellen mit zugehörigen Auslösezeiten.
| Reg | Name | Typ | Skalierung |
|---|---|---|---|
| 380 | CA_LHVRT Enable | U16 | Enum |
| 381..385 | CA_HV2, CA_HV1, CA_LV1, CA_LV2, CA_LV3 | U16 | 0,1 V |
| 386..390 | zugehörige Zeiten | U16 | 0,01 s |
| 391 | CA_LHFRT Enable | U16 | Enum |
| 392..395 | CA_HF2, CA_HF1, CA_LF1, CA_LF2 | U16 | 0,01 Hz |
| 396..399 | zugehörige Zeiten | U16 | 0,01 s |
| 400 | CA_QV Enable (Volt-VAR) | U16 | Enum |
| 401..403 | CA_QV_V1..V3 | U16 | 0,1 V |
| 404 | CA_QV_V4 | U16 | 0,01 |
| 405..408 | CA_QV_Q1..Q4 | U16 | - |
| 409 | CA_FW Enable (Freq-Watt) | U16 | Enum |
| 410 / 411 | CA_F Start / Stop | U16 | 0,01 Hz |
| 412 | CA_VW Enable (Volt-Watt) | U16 | Enum |
| 413 / 414 | CA_V Start / Stop | U16 | 0,1 V |
| 415 | Normal Up Slope | U16 | % |
| 416 | Soft Start Rise Rate | U16 | % |
| 417..419 | QV / VW / FW Response Time | U16 | s |
| Reg | Name | Typ | Skalierung | Anmerkung |
|---|---|---|---|---|
| 500 | Running Status | U16 | Enum | 0 = Standby, 1 = Selfcheck, 2 = Normal, 3 = Alarm, 4 = Fault - als run_state nach MQTT |
| 508 | Inverter Status Flag 1 | U16 | Bitmaske | |
| 509 | Inverter Status Flag 2 | U16 | Bitmaske | |
| 544 | DRM Code | U16 | Bitmaske | Demand Response |
| 548 | Comm Board Fault Status | U16 | Bitmaske | |
| 549 | MCU Test Flag | U16 | Bitmaske | |
| 550 | LCD Test Flag | U16 | Bitmaske | |
| 551 | Turn Off/On Status | U16 | Bit0-3 | 0 = power off, sonst power on |
| 552 | AC Relay Status | U16 | Bitmaske | Bit0 = INV, Bit2 = Grid, Bit3 = Gen, Bit4 = Grid Supply |
| 553 | Warning Word 1 | U16 | Bitmaske | Bit1 = FAN_WARN, Bit2 = Grid Phase Wrong |
| 554 | Warning Word 2 | U16 | Bitmaske | |
| 555 | Fault Code 1 (low) | U16 | Bitmaske | 555/556 bilden zusammen ein U32 |
| 556 | Fault Code 1 (high) | U16 | Bitmaske | |
| 557 | Fault Code 2 (low) | U16 | Bitmaske | 557/558 bilden zusammen ein U32 |
| 558 | Fault Code 2 (high) | U16 | Bitmaske |
Alle Zähler in 0,1 kWh bzw. 0,1 kVarh. Total-Zähler sind U32 über zwei
Register, Low-Word zuerst.
| Reg | Name | Typ | Skalierung | Anmerkung |
|---|---|---|---|---|
| 501 | Day Active Energy | S16 | 0,1 kWh | |
| 502 | Day Reactive Energy | S16 | 0,1 kVarh | die Bridge liest 502 als e_day_active - siehe Abweichungen
|
| 503 | Day Grid Connection Time | U16 | s | |
| 504 / 505 | Total Active Energy | U32 | 0,1 kWh | |
| 506 / 507 | Total Reactive Energy | U32 | 0,1 kVarh | die Bridge liest 506/507 als e_tot_active
|
| 514 | Day Battery Charge | U16 | 0,1 kWh | |
| 515 | Day Battery Discharge | U16 | 0,1 kWh | |
| 516 / 517 | Total Battery Charge | U32 | 0,1 kWh | |
| 518 / 519 | Total Battery Discharge | U32 | 0,1 kWh | |
| 520 | Day Grid Import | U16 | 0,1 kWh | |
| 521 | Day Grid Export | U16 | 0,1 kWh | |
| 522 / 523 | Total Grid Import | U32 | 0,1 kWh | |
| 524 / 525 | Total Grid Export | U32 | 0,1 kWh | |
| 526 | Day Load Energy | U16 | 0,1 kWh | |
| 527 / 528 | Total Load Energy | U32 | 0,1 kWh | |
| 529 | Day PV Energy | U16 | 0,1 kWh | Summe aller Strings |
| 530..533 | Day PV-1..PV-4 Energy | U16 | 0,1 kWh | |
| 534 / 535 | Total PV Energy | U32 | 0,1 kWh | |
| 539 | Gen Working Hours / Day | U16 | 0,1 h |
Alle nach der Offset-Konvention °C = Rohwert x 0,1 - 100.
Rohwert 1247 entspricht also 24,7 °C.
| Reg | Name | Typ | Anmerkung |
|---|---|---|---|
| 540 | DC Transformer Temp | S16 | als temp_dc nach MQTT |
| 541 | Radiator Temp (IGBT) | S16 | als temp_ac nach MQTT |
| 542 | Reserved Temp 1 | S16 | firmwareabhängig belegt |
| 543 | Reserved Temp 2 | S16 | firmwareabhängig belegt |
| Reg | Name | Typ | Skalierung | Anmerkung |
|---|---|---|---|---|
| 586 | Battery Temperature | S16 | x0,1 - 100 °C | |
| 587 | Battery Voltage | U16 | 0,01 V | |
| 588 | Battery SOC | U16 | % | |
| 590 | Battery Power | S16 | W | positiv = Entladung, negativ = Ladung |
| 591 | Battery Current | S16 | 0,02 A | LV-Modell: 0,02-A-LSB, die Doku nennt 0,01 - siehe Abweichungen |
| 592 | Battery Corrected AH | U16 | Ah |
| Reg | Name | Typ | Skalierung | Anmerkung |
|---|---|---|---|---|
| 598..600 | Grid Voltage L1..L3 | U16 | 0,1 V | |
| 601..603 | Grid Line Voltage AB / BC / CA | U16 | 0,1 V | Außenleiterspannungen |
| 604..606 | Grid Inner Power A / B / C | S16 | W | interne Messung des WR |
| 607 | Grid Inner Total Active | S16 | W | |
| 608 | Grid Inner Apparent | U16 | VA | |
| 609 | Grid Frequency | U16 | 0,01 Hz | |
| 610..612 | Grid Current L1..L3 | S16 | 0,01 A | |
| 613..615 | Grid CT Current L1..L3 | S16 | 0,01 A | externe Zangen |
| 616..618 | Grid CT Power L1..L3 | S16 | W | externe Zangen, Messpunkt Hausanschluss |
| 619 | Grid CT Total Power | S16 | W | Summe der externen CTs |
| 620 | Grid Ext Total Apparent | U16 | VA | |
| 621 | Grid Power Factor | U16 | 0,001 | |
| 622..624 | Grid Power L1..L3 | S16 | W | interne Messung am Netzanschluss des WR |
| 625 | Grid Total Power | S16 | W |
Die Bridge publiziert sowohl die internen Netzleistungen (622..625) als auch die CT-Werte (616..619). Für Hausbilanz und Zero-Export ist in der Regel der CT-Wert der relevante, weil er den gesamten Hausanschluss sieht.
| Reg | Name | Typ | Skalierung |
|---|---|---|---|
| 627..629 | Inverter Voltage L1..L3 | U16 | 0,1 V |
| 630..632 | Inverter Current L1..L3 | S16 | 0,01 A |
| 633..635 | Inverter Power L1..L3 | S16 | W |
| 636 | Inverter Total Power | S16 | W |
| 637 | Inverter Total Apparent | U16 | VA |
| 638 | Inverter Frequency | U16 | 0,01 Hz |
| Reg | Name | Typ | Skalierung | Anmerkung |
|---|---|---|---|---|
| 640..642 | UPS Load Power L1..L3 | S16 | W | Notstromausgang |
| 643 | UPS Load Total Power | S16 | W | liegt außerhalb der Poll-Blöcke, nur per Probe lesbar |
| Reg | Name | Typ | Skalierung |
|---|---|---|---|
| 644..646 | Load Voltage L1..L3 | U16 | 0,1 V |
| 647..649 | Load Current L1..L3 | S16 | 0,01 A |
| 650..652 | Load Power L1..L3 | S16 | W |
| 653 | Load Total Power | S16 | W |
| 654 | Load Total Apparent | U16 | VA |
| 655 | Load Frequency | U16 | 0,01 Hz |
| Reg | Name | Typ | Skalierung |
|---|---|---|---|
| 661..663 | Gen Voltage L1..L3 | U16 | 0,1 V |
| 664..666 | Gen Power L1..L3 | S16 | W |
| 667 | Gen Total Power | S16 | W |
| 671 | Gen Current L1 | S16 | 0,01 A |
| Reg | Name | Typ | Skalierung | Anmerkung |
|---|---|---|---|---|
| 672 | PV1 Power | U16 | W | |
| 673 | PV2 Power | U16 | W | |
| 674 | PV3 Power | U16 | W | am SG04LP3 nicht bestückt |
| 675 | PV4 Power | U16 | W | am SG04LP3 nicht bestückt |
| 676 / 677 | PV1 Voltage / Current | U16 | 0,1 V / 0,1 A | |
| 678 / 679 | PV2 Voltage / Current | U16 | 0,1 V / 0,1 A | |
| 680 / 681 | PV3 Voltage / Current | U16 | 0,1 V / 0,1 A | |
| 682 / 683 | PV4 Voltage / Current | U16 | 0,1 V / 0,1 A |
| Reg | Name | Typ | Anmerkung |
|---|---|---|---|
| 1000 | Grid Power Check Mode | U16 | Bit0: 0 = CT, 1 = Meter |
Die Bridge steuert die Batterie nicht über ein einzelnes "Leistungs-Register", sondern über den Time-of-Use-Block: alle sechs Slots werden mit denselben Werten beschrieben, damit die Vorgabe rund um die Uhr gilt. Geschrieben wird mit FC16 in fünf Blöcken.
| Reihenfolge | Register | Inhalt |
|---|---|---|
| 1 | 142 | System Work Mode = 2 |
| 2 | 148..153 | Zeitraster 00:00, 04:00, 08:00, 12:00, 16:00, 20:00 |
| 3 | 154..159 | Sollleistung in W |
| 4 | 166..171 | Ziel-SOC in % |
| 5 | 172..177 | Netzladen erlauben (0/1) |
Die drei Modi der Bridge füllen diese Blöcke so:
| Modus | Power (154..159) | SOC (166..171) | Grid Charge (172..177) |
|---|---|---|---|
| Auto | 0 | 20 % | 0 |
| Force Charge | Sollleistung | SOC-Limit | 1 |
| Force Discharge | Sollleistung | SOC-Limit (Entlade-Untergrenze) | 0 |
Das SOC-Limit wird auf 5..100 % begrenzt. Der zuletzt gesetzte Modus liegt im NVS und wird ein paar Sekunden nach dem Boot erneut auf den Wechselrichter geschrieben.
Die 60 Sensoren, die als JSON-State auf deye/<deviceId>/state landen und per
Home-Assistant-Discovery angelegt werden - mit dem Register, aus dem sie
stammen.
| JSON-Key | Register | Einheit |
|---|---|---|
pv1_voltage |
676 | V |
pv1_current |
677 | A |
pv1_power |
672 | W |
pv2_voltage |
678 | V |
pv2_current |
679 | A |
pv2_power |
673 | W |
pv_total_power |
672 + 673 (berechnet) | W |
batt_temp |
586 | °C |
batt_voltage |
587 | V |
batt_current |
591 | A |
batt_power |
590 | W |
batt_soc |
588 | % |
grid_voltage_l1 |
598 | V |
grid_voltage_l2 |
599 | V |
grid_voltage_l3 |
600 | V |
grid_frequency |
609 | Hz |
grid_power_l1 |
622 | W |
grid_power_l2 |
623 | W |
grid_power_l3 |
624 | W |
grid_power_total |
625 | W |
ct_power_l1 |
616 | W |
ct_power_l2 |
617 | W |
ct_power_l3 |
618 | W |
ct_power_total |
619 | W |
inv_voltage_l1 |
627 | V |
inv_voltage_l2 |
628 | V |
inv_voltage_l3 |
629 | V |
inv_current_l1 |
630 | A |
inv_current_l2 |
631 | A |
inv_current_l3 |
632 | A |
inv_power_l1 |
633 | W |
inv_power_l2 |
634 | W |
inv_power_l3 |
635 | W |
inv_power_total |
636 | W |
inv_frequency |
638 | Hz |
load_voltage_l1 |
644 | V |
load_voltage_l2 |
645 | V |
load_voltage_l3 |
646 | V |
load_power_l1 |
650 | W |
load_power_l2 |
651 | W |
load_power_l3 |
652 | W |
load_power_total |
653 | W |
load_frequency |
655 | Hz |
temp_dc |
540 | °C |
temp_ac |
541 | °C |
run_state |
500 | - |
e_day_pv |
529 | kWh |
e_day_load |
526 | kWh |
e_day_grid_imp |
520 | kWh |
e_day_grid_exp |
521 | kWh |
e_day_batt_chg |
514 | kWh |
e_day_batt_dis |
515 | kWh |
e_day_active |
502 | kWh |
e_tot_pv |
534 / 535 | kWh |
e_tot_load |
527 / 528 | kWh |
e_tot_grid_imp |
522 / 523 | kWh |
e_tot_grid_exp |
524 / 525 | kWh |
e_tot_batt_chg |
516 / 517 | kWh |
e_tot_batt_dis |
518 / 519 | kWh |
e_tot_active |
506 / 507 | kWh |
Zusätzlich steht die Seriennummer (Register 3..7) als serial_number im
State-JSON.
Die Register-Map des SG04LP3 ist nicht offiziell dokumentiert; die öffentlichen Quellen widersprechen sich an einigen Stellen, und auch dieses Projekt trägt an zwei Stellen zwei Lesarten desselben Registers mit sich.
Der ausführliche Abgleich mit beiden Referenzen steht auf einer eigenen Seite: Findings: Register-Abweichungen - je Fall mit Belegstelle, praktischer Auswirkung, einer Prüfanleitung für das eigene Gerät und dem nötigen Eingriff. Kurzfassung:
| Register | Kurzfassung | Schwere |
|---|---|---|
| 591 | Parser rechnet mit 0,02 A/LSB, beide Referenzen nennen 0,01 - batt_current womöglich Faktor 2 zu hoch |
hoch |
| 142 | drei verschiedene Enum-Zuordnungen; der Register-Explorer zeigt Wert 0 vermutlich falsch an | mittel |
| 501/502, 504..507 | Wirk- vs. Blindenergie: der Parser ist belegt korrekt, die Web-UI-Beschriftung weicht ab | mittel |
| 500 | Betriebszustände im Kommentar verschoben, Zustand 5 fehlt | niedrig |
| 604..659 | High-Words der 32-Bit-Leistungen werden nicht gelesen (Überlauf > 32 kW) | niedrig |
| 672 / 673 | in der Quelle doppelt belegt (PV-Leistung vs. Generatorstrom) | niedrig |
Zwei weitere Punkte sind keine Quellenkonflikte, sondern hardwareabhängig und lassen sich nur am Gerät klären:
Temperaturkonvention. raw / 10 - 100 gilt auf den meisten
Firmware-Ständen, aber nicht auf allen; manche Sensoren liefern reines
x0,1 °C ohne Offset. Ein Wert um -75 °C statt 25 °C ist das typische
Symptom. Anpassbar in src/deye_master.cpp über decodeTempOffset bzw.
decodeTempPlain.
Vorzeichen Batterie. Ob Laden positiv oder negativ gezählt wird, ist modellabhängig. Im Web-UI unter Live-Daten gegen einen bekannten Betriebszustand prüfen.
-
kellerza/sunsynk -
three_phase_common.py,three_phase_lv.py -
kbialek/deye-inverter-mqtt -
src/deye_sensors_deye_sg04lp3.py - Deye Modbus RTU/TCP Protocol Spec (öffentlich kursierende Fassung)
- Verifikation am Gerät über den Register-Explorer im Web-UI