Register maps for the hybrid inverters people most often wire to their own monitoring: Deye (and Sunsynk, which uses Deye's map) and Growatt. They look alike — RS485, 9600 baud, battery and grid values — but they disagree on almost every detail that matters: function code, 32-bit word order, signs, even which map applies to which model. This page gives the registers for each and the differences side by side.
| Inverter | Register map |
|---|---|
| Deye SUN-xK-SG0xLP1 single-phase hybrids, and the Sunsynk equivalents | Deye "Modbus RTU Protocol" (V118) — real-time data at 59–197 |
| Deye SG04LP3 / SG01HP3 three-phase hybrids (LV and HV battery) | Deye three-phase energy-storage protocol — real-time data at 500–730 |
| Growatt MIN TL-XH, MOD TL3-XH | Growatt "Inverter Modbus RTU Protocol" V1.24 — input registers 3000 and up |
| Growatt SPH, SPA | Same document — input registers 0–124 and 1000 and up |
| Growatt SPF off-grid | Separate "OffGrid SPF5000 Modbus Protocol" — not covered here |
0x0300 is a single-phase hybrid, 0x0500 a low-voltage three-phase, 0x0600 / 0x0601 a high-voltage three-phase. The single- and three-phase maps are completely different — read register 0 before anything else.
| Deye / Sunsynk | Growatt | |
|---|---|---|
| Interface | RS485, 9600 baud, 8N1 | RS485, 9600 baud (38400 selectable), 8N1 |
| Slave ID | Register 1 / "Modbus SN" on the display, 1–247 — usually 1 | 1–254, default 1 |
| Function codes | FC03 only for reading (everything is a holding register); write with FC16 | FC04 input registers = measurements; FC03 holding registers = settings; write with FC06/FC16 |
| 32-bit values | Low word first | High word first |
| Timing | Keep requests short — 16–20 registers if the link is slow or a gateway times out | At least 850 ms between requests (Growatt suggests 1 s) |
| Modbus TCP | None on the inverter; use an RS485-to-Ethernet gateway | None in the protocol; use an RS485-to-Ethernet gateway |
Holding registers, read with FC03, addresses as written (no offset). 32-bit values: the first register is the low word.
| Register | Parameter | Type | Scale | Unit |
|---|---|---|---|---|
| 0 | Device type (0x0300 = single-phase hybrid) | U16 | — | — |
| 59 | Run state (0 standby, 1 self-check, 2 normal, 3 alarm, 4 fault) | U16 | — | — |
| 70 / 71 | Battery charge / discharge today | U16 | 0.1 | kWh |
| 72–73 / 74–75 | Battery charge / discharge total | U32 | 0.1 | kWh |
| 76 / 77 | Grid bought / sold today | U16 | 0.1 | kWh |
| 78 + 80 | Grid bought total (low word 78, high word 80) | U32 | 0.1 | kWh |
| 79 | Grid frequency | U16 | 0.01 | Hz |
| 81–82 | Grid sold total | U32 | 0.1 | kWh |
| 84 / 85–86 | Load energy today / total | U16 / U32 | 0.1 | kWh |
| 90 / 91 | DC transformer / radiator temperature | U16 | (raw − 1000) ÷ 10 | °C |
| 96–97 | PV energy total | U32 | 0.1 | kWh |
| 101–102 / 103–106 | Warning words / fault words | bits | — | — |
| 108 | PV energy today | U16 | 0.1 | kWh |
| 109 / 110 | PV1 voltage / current | U16 | 0.1 | V / A |
| 111 / 112 | PV2 voltage / current | U16 | 0.1 | V / A |
| 150 | Grid voltage L1-N | U16 | 0.1 | V |
| 169 | Grid power: >0 buying, <0 selling | S16 | 1 | W |
| 172 | External CT power | S16 | 1 | W |
| 175 | Inverter output power | S16 | 1 | W |
| 178 | Load power | S16 | 1 | W |
| 182 | Battery temperature | U16 | (raw − 1000) ÷ 10 | °C |
| 183 | Battery voltage | U16 | 0.01 | V |
| 184 | Battery SOC | U16 | 1 | % |
| 186 / 187 | PV1 / PV2 power | U16 | 1 | W |
| 190 | Battery power (see signs below) | S16 | 1 | W |
| 191 | Battery current | S16 | 0.01 | A |
| 193 | Inverter output frequency | U16 | 0.01 | Hz |
| 194 | Grid relay (0 open, 1 closed) | U16 | — | — |
Also FC03 holding registers. The high-voltage (HV) models use different scales from the low-voltage (LV) ones for battery voltage and power, and the 32-bit power values keep their high word in a separate block (687–709).
| Register | Parameter | Scale / unit |
|---|---|---|
| 500 | Run state (0 standby, 1 self-check, 2 normal, 3 alarm, 4 fault, 5 activating) | — |
| 514 / 515 | Battery charge / discharge today | 0.1 kWh |
| 520 / 521 | Grid bought / sold today | 0.1 kWh |
| 522–523 / 524–525 | Grid bought / sold total (low word first) | 0.1 kWh |
| 526 / 527–528 | Load energy today / total | 0.1 kWh |
| 529 / 534–535 | PV energy today / total | 0.1 kWh |
| 540 / 541 | DC transformer / heat sink temperature | (raw − 1000) ÷ 10 °C |
| 586 | Battery temperature | (raw − 1000) ÷ 10 °C |
| 587 | Battery voltage | LV 0.01 V, HV 0.1 V |
| 588 | Battery SOC | 1 % |
| 590 | Battery power (S16) | LV 1 W, HV 10 W |
| 598 / 599 / 600 | Grid phase voltage A / B / C | 0.1 V |
| 625 (+690 high) | Grid total power | 1 W |
| 636 (+694 high) | Inverter output total power | 1 W |
| 653 (+659 high) | Load total power | 1 W |
| 672 / 673 | PV1 / PV2 power | LV 1 W, HV 10 W |
| 676 / 677, 678 / 679 | DC1 voltage / current, DC2 voltage / current | 0.1 V / 0.1 A |
Registers 553–554 hold the warning words and 555–558 the fault words. Some HV firmware versions changed scale factors; check a known value before trusting a scale.
Measurements are input registers, read with FC04 — FC03 at the same numbers returns settings. Every register is unsigned 16-bit; 32-bit values are high word first. Import and export, charge and discharge are separate unsigned registers, not one signed value.
| Register (FC04) | Parameter | Scale / unit |
|---|---|---|
| 0 | Inverter status (0 waiting, 1 normal, 3 fault) | — |
| 1–2 | PV total input power | 0.1 W |
| 3 / 4 | PV1 voltage / current | 0.1 V / 0.1 A |
| 7 / 8 | PV2 voltage / current | 0.1 V / 0.1 A |
| 35–36 | Output power | 0.1 W |
| 37 / 38 | Grid frequency / grid voltage | 0.01 Hz / 0.1 V |
| 53–54 / 55–56 | Energy today / total | 0.1 kWh |
| 93 | Inverter temperature | 0.1 °C |
| 1009–1010 / 1011–1012 | Battery discharge / charge power | 0.1 W |
| 1013 | Battery voltage | 0.1 V |
| 1014 | Battery SOC | 1 % |
| 1021–1022 | Power from grid (import) | 0.1 W |
| 1029–1030 | Power to grid (export) | 0.1 W |
| 1037–1038 | Power to local load | 0.1 W |
| 1044–1047 | Energy from grid today / total | 0.1 kWh |
| 1048–1051 | Energy to grid today / total | 0.1 kWh |
| 1052–1055 / 1056–1059 | Battery discharge / charge energy today, total | 0.1 kWh |
| Register (FC04) | Parameter | Scale / unit |
|---|---|---|
| 3000 | Status (high byte mode, low byte 0 standby, 1 normal, 3 fault) | — |
| 3001–3002 | PV total power | 0.1 W |
| 3003 / 3004, 3007 / 3008 | PV1, PV2 voltage / current | 0.1 V / 0.1 A |
| 3023–3024 | Output power | 0.1 W |
| 3041–3042 / 3043–3044 | Import / export power | 0.1 W |
| 3045–3046 | Load power | 0.1 W |
| 3049–3052 | Energy today / total | 0.1 kWh |
| 3093 | Inverter temperature | 0.1 °C |
| 3169 / 3170 | Battery voltage / current | 0.01 V / 0.1 A |
| 3171 | Battery SOC | 1 % |
| 3178–3179 / 3180–3181 | Battery discharge / charge power | 0.1 W |
| Deye single-phase | Setting | Growatt | Setting |
|---|---|---|---|
| 43 | On / off | 0 | On / off |
| 210 / 211 | Max charge / discharge current (A) | 3 | Active power rate (0–100 %, 255 unlimited) |
| 243 | Energy management (battery / load first) | 122 / 123 | Export limit mode / rate |
| 244 / 245 | Limit control / max sell power (W) | 2 | Store settings to memory (set 0 for frequent setpoints) |
| 248–279 | Time-of-use slots | 1090–1092 (SPH) | Battery-first charge rate, stop SOC, AC charge |
1 Connect — Modbus RTU on a USB-RS485 adapter (9600 8N1, slave ID 1), or Modbus TCP to an RS485-to-Ethernet gateway.
2 Poll windows — Deye: FC03 at 59 (39 registers), 108 (5), 150 (45). Growatt: FC04 at the blocks of your family, with an interval of a second or more.
3 Scaled tags (Pro) — register tags with the right type and word order (little for Deye, big for Growatt) and Scale / Offset from the tables. A Deye temperature becomes Scale 0.1, Offset −100 — that is (raw − 1000) ÷ 10.
4 Derived values — a line of Structured Text adds PV1 and PV2, or splits Deye's signed grid power into import and export for a chart.
Deye / Sunsynk single-phase hybrid workspace. Open via Workspace › Open in ModbusManager Pro.
Scaled tags, scripts, dashboard and historian for your hybrid system. Free 14-day trial. No credit card. Windows 10/11.
In practice, yes: Sunsynk inverters are built by Deye and the community integrations read them with Deye's map. Sunsynk has not published its own register document, so confirm a few values (SOC, grid power) on your unit.
Not directly. The inverter speaks Modbus RTU on RS485; the Wi-Fi logger's port 8899 uses Solarman's own protocol. Put an RS485-to-Ethernet gateway on the RS485 port to get Modbus TCP.
You are reading holding registers (FC03). Growatt measurements are input registers: use FC04.
Deye adds 1000 to temperatures. Subtract 1000 and divide by 10: a raw 1215 is 21.5 °C.
Deye's document only says the value is signed. In practice it is positive while discharging and negative while charging; confirm it once on your system.
Deye, Modbus RTU Protocol V118 (single-phase hybrids; last revision entry 2021-04-08), and Deye's three-phase energy-storage Modbus RTU protocol (revision entries 2020–2025); Growatt, Growatt Inverter Modbus RTU Protocol V1.24. These are manufacturer documents, but none of the copies used is hosted on the manufacturer's own website: they came from a Deye distributor and from public integration projects. Sunsynk has not published a register document of its own. Ask your distributor for the issue that matches your model and firmware, and check a few known values before relying on a register.
One RS485 port, one master. ModbusManager Pro can be that master — reading the hybrid, a heat-pump or EV charger meter and anything else on the bus — and republish the values as one Modbus TCP map for home automation, an EMS or a PLC.
Modbus gateway software →We use Google Analytics cookies to see how the site is used. You can accept or decline — declining keeps analytics off. See our Privacy Policy.