Features Compatibility Gateway Docs Download Українська
Deye · Modbus RTU · Solarman V5 · register map

Deye over Modbus: what we learned while writing our own integration

Looking for a register map to read Deye yourself? We walked this path while writing Svitgrid, and we share what is not in the documentation, register addresses included. And if you need a result and not a project, it is ready.

Download on the App StoreGet it on Google Play

Deye does not speak Modbus TCP directly

Through the logger: Solarman V5

The Wi-Fi logger wraps Modbus RTU in its own Solarman V5 protocol on TCP port 8899. Every request carries the logger serial number. An ordinary Modbus TCP client with an MBAP header does not build these frames.

Loggers with a serial starting with 26

The new generation of Deye loggers does not accept local requests: data goes only to the Deye cloud. That leaves the cable.

Over a cable: Modbus RTU

RS-485, 9600 8N1, holding registers (function 0x03). The address is the Modbus SN field on the inverter screen, usually 01. Address 00 is the broadcast address, and Deye never answers on it. Pinout and cable traps.

Register map traps we measured ourselves

Most Deye maps online are assembled from manufacturer documents and community projects. Here is what turned out differently on real inverters. Addresses are decimal.

The three-phase and single-phase maps differ

On the SG04LP3, PV1 power is register 672, battery charge is 588, and grid is 625. On the single-phase SG01LP1, SG02LP1, and SG05LP1 they are 186, 184, and 169. Temperatures are also in different blocks, 540/541 and 90/91, and the wrong block reads zeros or 65535. Battery power (590 and 190) is positive on discharge.

Power in units of 10 W

Some firmware versions report a power register ten times too small while the other fields are correct. On the SG02LP1 this happens to load 178 and 179, and on the high-voltage SG01HP3 to battery power 590. Check against the inverter's own daily counters (on single-phase units: 76 is import, 84 is load, 108 is solar), not instantaneous values.

Grid current is not there

The documented grid current addresses (610–612 on three-phase, 160 on single-phase) hold something else on real inverters: register 160 showed about 5.6 A when grid exchange was zero. Calculate the current as |P| / U.

Time of Use is not what enables grid charging

The grid charge permission is bit 0 of register 130 on three-phase units and 232 on single-phase units. The Time of Use master switch, bit 0 of register 146 or 248, only turns on the slot schedule. In our data, inverters charged from the grid with Time of Use off too, and none did with bit 0 of 130/232 off.

A slot has no end

The six Time of Use slots divide the day without gaps: the end of slot N is the start of slot N+1 (148–153 on three-phase, 250–255 on single-phase). Writing one slot shifts the boundary of its neighbour, and the start times must go in ascending order.

Unknown bits in slot enable

In registers 172–177 (three-phase) and 274–279 (single-phase), bit 0 enables the slot, and higher bits can be set too, with an unknown meaning. Change only bit 0 with a read, modify, and write. Never write 0 or 1 as a whole word.

Before you write to any register, read it on your inverter and save what was there.

What else it takes to turn registers into a station

StepWhat it involvesApproximate time
ClientSolarman V5 or RTU, retries, timeouts, and dropped connectionsdays
Your model's mapScales, signs, 16 or 32 bits, and a check on a live inverterdays
WritesTime slots and modes without the risk of leaving the inverter in a strange statea week
Everything around itWhere this runs 24/7, history storage, alerts, and access from a phoneweeks
Totalseveral weeks

The time is approximate: up to the first station you can use every day.

Questions

Does Deye support Modbus TCP?

Not directly. The Wi-Fi logger speaks Solarman V5 on port 8899: that is Modbus RTU wrapped in a frame with the logger serial number. Loggers with a serial starting with 26 do not accept even that. Over an RS-485 cable, the inverter answers in ordinary Modbus RTU.

What are the Deye Modbus RTU settings?

9600 baud, 8 data bits, no parity, 1 stop bit (8N1). The address is the Modbus SN field on the inverter screen. Deye never answers on address 00, so set 01, and set 02, 03 on each next inverter on the same bus.

How do I read Deye grid current?

You cannot, because it is not in the registers: the documented addresses (610–612 on three-phase, 160 on single-phase) hold something else. We divide the absolute grid power by the grid voltage.

Why does Deye not charge the battery from the grid even with Time of Use on?

Check bit 0 of register 130 (three-phase) or 232 (single-phase): that is the grid charge permission. The Time of Use master switch, register 146 or 248, only turns on the schedule and does not permit grid charging by itself.

Where can I get the Deye register map?

The key addresses are above. The three-phase SG04LP3 and the single-phase models have different maps, and some firmware versions report power in units of 10 W, so check every address on your own inverter.

Read next

Try it before you write your own

You can return the gateway within 14 days. If Svitgrid does not suit you, you lose an evening, not a month.

Download on the App StoreGet it on Google Play