device library

GoodWe ET/EH/BT/BH hybrid inverter

Register map(s) for this device, with a note of how far each has been checked. Addresses are 0-based, as on the wire. Scale and byte order are confirmed only at the hardware-verified rung.

coherence-checked

Round-trips through a real Modbus stack with no overlapping addresses and a word-order-sensitive codec — the map is internally coherent and wire-decodable. Does NOT prove byte-order or scaling match a real device: the emulator is seeded from the map's own types, so a uniformly wrong byte-order still round-trips. Only hardware-verified confirms byte-order/scale on the wire.

pointaddress (0-based)typescaleunit
vpv135103U160.1V
ipv135104U160.1A
ppv135105U32BE0.1W
vpv235107U160.1V
ipv235108U160.1A
ppv235109U32BE0.1W
vgrid_r35121U160.1V
igrid_r35122U160.1A
fgrid_r35123U160.01Hz
pgrid_r35125I161W
vgrid_s35126U160.1V
igrid_s35127U160.1A
fgrid_s35128U160.01Hz
pgrid_s35130I161W
vgrid_t35131U160.1V
igrid_t35132U160.1A
fgrid_t35133U160.01Hz
pgrid_t35135I161W
total_inv_power35138I161W
ac_active_power35140I161W
ac_reactive_power35142I161Var
ac_apparent_power35144I161VA
backup_vload_r35145U160.1V
backup_iload_r35146U160.1A
backup_fload_r35147U160.01Hz
backup_pload_r35150I161W
pload_r35164I161W
pload_s35166I161W
pload_t35168I161W
total_backup_load35170I161W
total_load_power35172I161W
ups_load_percent35173U160.01%
air_temperature35174I160.1C
module_temperature35175I160.1C
radiator_temperature35176I160.1C
bus_voltage35178U160.1V
nbus_voltage35179U160.1V
vbattery135180U160.1V
ibattery135181I160.1V
pbattery135183I161W
pv_e_total35191U32BE0.1kWh
pv_e_day35193U32BE0.1kWh
e_total35195U32BE0.1kWh
e_day_sell35199U160.1kWh
e_total_buy35200U32BE0.1kWh
e_day_buy35202U160.1kWh
e_total_load35203U32BE0.1kWh
e_load_day35205U160.1kWh
e_battery_charge35206U32BE0.1kWh
e_charge_day35208U160.1kWh
e_battery_discharge35209U32BE0.1kWh
e_discharge_day35211U160.1kWh
bms_pack_temperature37003U160.1
bms_charge_imax37004U161
bms_discharge_imax37005U161
bms_soc37007U161%
bms_soh37008U161%
bms_max_cell_temp37020U160.1°C
bms_min_cell_temp37021U160.1°C
bms_max_cell_volt37022U161mV
bms_min_cell_volt37023U161mV

link settings as documented (unverified): RTU; default 9600 8N1; unit ID 247; FC 03,06,16; EMS port on inverter.

bench facts as documented (unverified)
terminalsEMS port
connectorRJ45
wiring notesRJ45 pinout: 1: 485_A, 2: 485_B, 3: 485_A, 6: 485_B, others NC
protocol notesError codes: 02H (Register address fault or overflow), 03H (Data error), 04H (Built-in verification code error), 05H (Communication time-out)
model register35011
serial register35003
firmware register35016
identification notesOther firmware registers: 35017 (DSP2 software version), 35019 (ARM software version), 35021 (DSP Internal Firmware Ver.), 35027 (ARM Internal Firmware Ver.)
powerSolar inverter must be powered up by DC or AC power before it can communicate successfully.
doc revision1.7

⚠ disputed: pbattery1 @ 35183 — disputed by newer firmware versions and integration guides where the battery power register shifted to 35182 or is represented as a 32-bit signed integer starting at 35182

field reports — community-sourced, unverified (checked 2026-06-11)
  • The battery power register (Pbattery1) is wrongly documented in official Modbus protocol v1.9 as being Unsigned, but it is actually Signed. [source]
  • In newer firmware versions, the battery power register (Pbattery1) shifted from 35183 to 35182 (or is a 32-bit signed integer starting at 35182), causing incorrect readings if read as a 16-bit register at 35183. [source]
  • confirmed: Default unit ID is 247, default baud rate is 9600, framing is RTU — confirmed by GoodWe EMS Protocol Overview and multiple integration guides
  • confirmed: RJ45 pinout: 1: 485_A, 2: 485_B, 3: 485_A, 6: 485_B — confirmed by Sunergy Partners integration documentation
  • confirmed: Error codes: 02H (Register address fault), 03H (Data error), 04H (Built-in verification code error), 05H (Communication time-out) — confirmed by GoodWe EMS Protocol Overview

The trust ladder

Each rung states what it proved and what it did not. Gray until proven; green is earned by hardware only.

Device not here? Upload its manual and get a checked map back. It's free.

Want it confirmed against your own device? Order hardware verification. If it doesn't check out, you don't pay.

Building on a lot of devices? License the library — machine-readable maps, the firmware matrix, and API access.