Modbus Reference · Reference
Solar inverter Modbus TCP register reference
Verified register maps, default ports, function codes, and data formats for reading solar inverters, batteries, and grid meters over local Modbus TCP. Compiled from SolarMark's tested implementation.
Brand register maps
- SolarEdge & SunSpec: SolarEdge, SMA, Fronius, Fimer: SunSpec models, StorEdge battery, Model 201 meter
- Huawei SUN2000: inverter, LUNA2000 battery, smart meter
- Sungrow: SG string and SH hybrid, battery, grid meter
- Growatt: MIN / MIC / MAX, SPH battery, grid meter
- Solis (Ginlong): standard and hybrid, RHI battery, grid meter
- GoodWe: DNS / SDT / MT, ET / EH battery, grid meter
- Deye: inverter, HV and LV battery, grid meter
Function codes and data formats
Two Modbus function codes cover everything on these pages: FC03 (Read Holding Registers) and FC04 (Read Input Registers). Which one a brand uses is listed on its page, and mixing them up returns errors or zeros.
| Type | Meaning |
|---|---|
| U16 | Unsigned 16-bit value; one register |
| S16 | Signed 16-bit value; one register |
| U32 | Unsigned 32-bit value; two consecutive registers |
| S32 / I32 | Signed 32-bit value; two consecutive registers |
| Float32 | IEEE-754 floating-point value; two consecutive registers |
| BE | Big-endian word order; high word first |
| LE | Little-endian word order; low word first |
| SF | Scale factor; final value is usually raw × 10^SF |
Default Modbus TCP ports
| Brand / type | Default port |
|---|---|
| SolarEdge / SunSpec inverter | 1502 |
| SolarEdge / SunSpec battery | 1502 |
| SolarEdge StorEdge battery | 1502 |
| Huawei | 502 |
| Sungrow | 502 |
| Growatt | 502 |
| Solis | 502 |
| GoodWe | 502 |
| Deye | 502 |
| Custom | 502 |
The default Modbus unit ID for discovery is 1 (SMA devices commonly serve SunSpec at unit ID 126). Every brand ships with Modbus TCP disabled; it must be enabled once in the inverter, dongle, or installer tool.
Custom / user-defined registers
For hardware not listed here, a custom register map can define: one U16 register for instantaneous power (× 1 W, FC03), two registers for lifetime energy (U32 BE, × 0.1 kWh), and Float32 pairs for battery state of charge and power. AC voltage and battery voltage/temperature are not supported in custom mode. Custom grid metering falls back to the SunSpec Model 201 reader (base 40121, range 40131–40143, FC03, base configurable).
Want this data on your phone, without a server?
These are the registers SolarMark reads. The app polls your inverter directly over your local network: live power, energy history, battery State of Charge, and grid import/export, with no cloud account and no Home Assistant server to maintain. One-time purchase with a free 14-day trial. Get it on Google Play or the App Store.
