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.

TypeMeaning
U16Unsigned 16-bit value; one register
S16Signed 16-bit value; one register
U32Unsigned 32-bit value; two consecutive registers
S32 / I32Signed 32-bit value; two consecutive registers
Float32IEEE-754 floating-point value; two consecutive registers
BEBig-endian word order; high word first
LELittle-endian word order; low word first
SFScale factor; final value is usually raw × 10^SF

Default Modbus TCP ports

Brand / typeDefault port
SolarEdge / SunSpec inverter1502
SolarEdge / SunSpec battery1502
SolarEdge StorEdge battery1502
Huawei502
Sungrow502
Growatt502
Solis502
GoodWe502
Deye502
Custom502

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.