Goodwe Goodwe AbstractGoodWe Modbus TCP template

Goodwe AbstractGoodWe

Goodwe AbstractGoodWe is the common Modbus base configuration for Goodwe hybrid storage inverters, targeting the ET, EH, BT, and BH series. Using Modbus TCP over the inverter's LAN module on port 502, this template reads PV string power on up to four inputs, AC grid and load power across three phases, backup output load, inverter thermal sensors, and a full BMS register set covering cell voltages, cell temperatures, state of health, and charge or discharge limits. Energy counters track daily and lifetime totals for PV generation, grid import, grid export, load consumption, and battery throughput. The template gives installers and asset managers a complete operational picture of every Goodwe hybrid system from a single portal view.

Protocol
Modbus TCP
Connection
Ethernet, Modbus TCP
Registers
295, read and write
Brand
Goodwe
Last updated

Registers (295)

227 read, 68 write

NameUnitAccessAddress (Hidden until you enter your email)Function (hidden)Type (hidden)
max_apparent_powerWRead
serial_numberRead
dsp_fm_version_masterRead
dsp_fm_version_slaveRead
dsp_beta_versionRead
arm_fm_versionRead
arm_beta_versionRead
v_pv3VRead
i_pv3ARead
p_pv3WRead
v_pv4VRead
i_pv4ARead
p_pv4WRead
pv_modeRead
grid_modeRead
total_inv_powerWRead
ac_active_powerWRead
ac_apparent_powerWRead
load_mode_rRead
load_mode_sRead
load_mode_tRead
p_load_rWRead
p_load_sWRead
p_load_tWRead
total_back_up_load_powerWRead
total_load_powerWRead
ups_load_percent%Read
air_temperature°CRead
module_temperature°CRead
radiator_temperature°CRead
function_bit_valueRead
bus_voltageVRead
nbus_voltageVRead
v_battery1VRead
i_battery1ARead
p_battery1WRead
battery_modeRead
safety_countryRead
work_modeRead
pv_e_totalWhRead
pv_e_dayWhRead
h_totalhRead
e_day_sellWhRead
e_total_buyWhRead
e_day_buyWhRead
e_total_loadWhRead
e_load_dayWhRead
e_battery_chargeWhRead
e_charge_dayWhRead
e_battery_dischargeWhRead
e_discharge_dayWhRead
battery_stringscountRead
cpld_warning_codeRead
eh_battery_function_activeRead
arc_self_check_statusRead
max_grid_freq_within_1_minuteHzRead
min_grid_freq_within_1_minuteHzRead
max_grid_voltage_within_1_minute_rVRead
min_grid_voltage_within_1_minute_rVRead
max_grid_voltage_within_1_minute_sVRead
min_grid_voltage_within_1_minute_sVRead
max_grid_voltage_within_1_minute_tVRead
min_grid_voltage_within_1_minute_tVRead
max_backup_power_within_1_minute_rWRead
max_backup_power_within_1_minute_sWRead
max_backup_power_within_1_minute_tWRead
max_backup_power_within_1_minute_totalWRead
grid_hvrt_event_timescountRead
grid_lvrt_event_timescountRead
inv_error_msg_record_for_emsRead
inv_warning_code_record_for_emsRead
inv_cpld_warning_record_for_emsRead
battery_type_indexRead
bms_statusRead
bms_pack_temperature°CRead
bms_charge_imaxARead
bms_discharge_imaxARead
bms_soh%Read
bms_battery_stringscountRead
battery_protocolRead
bms_software_versionRead
battery_hardware_versionRead
maximum_cell_temperature_idRead
minimum_cell_temperature_idRead
maximum_cell_voltage_idRead
minimum_cell_voltage_idRead
maximum_cell_temperature°CRead
minimum_cell_temperature°CRead
maximum_cell_voltageVRead
minimum_cell_voltageVRead
pass_information_1Read
pass_information_2Read
pass_information_3Read
pass_information_4Read
pass_information_5Read
pass_information_6Read
pass_information_7Read
pass_information_8Read
pass_information_9Read
pass_information_10Read
pass_information_11Read
pass_information_12Read
pass_information_13Read
pass_information_14Read
pass_information_15Read
pass_information_16Read
pass_information_17Read
pass_information_18Read
pass_information_19Read
pass_information_20Read
pass_information_21Read
pass_information_22Read
pass_information_23Read
pass_information_24Read
pass_information_25Read
pass_information_26Read
pass_information_27Read
pass_information_28Read
pass_information_29Read
pass_information_30Read
pass_information_31Read
pass_information_32Read
inverter_unit_idRead
modbus_baudrateRead
pv_e_total_2_aWhRead
pv_e_day_2_aWhRead
e_total_sell_2_aWhRead
h_total_2_ahRead
e_day_sell_2_aWhRead
e_total_buy_2_aWhRead
e_day_buy_2_aWhRead
e_total_load_2_aWhRead
e_load_day_2_aWhRead
e_battery_charge_2_aWhRead
e_charge_day_2_aWhRead
e_battery_discharge_2_aWhRead
e_discharge_day_2_aWhRead
safety_country_code_aRead
iso_limit_aRead
lvrt_hvrt_aRead
pv_start_voltage_aVRead
mppt_for_shadow_enable_aRead
back_up_enable_aRead
auto_start_backup_aRead
grid_wave_check_level_aRead
backup_start_dly_asRead
ups_std_volt_type_aRead
derate_rate_vde_a%Read
three_phase_unbalanced_output_aRead
high_imp_mode_aRead
iso_check_mode_aRead
off_grid_to_on_grid_delay_asRead
off_grid_under_voltage_protect_coefficient_aRead
battery_mode_pv_charge_enable_aRead
dcv_check_off_aRead
bms_charge_max_voltage_aVRead
bms_charge_max_current_aARead
bms_discharge_min_voltage_aVRead
bms_discharge_max_current_aARead
bms_soc_under_min_a%Read
bms_offline_discharge_min_voltage_aVRead
bms_offline_soc_under_min_a%Read
stop_soc_protect_a%Read
bms_float_voltVRead
bms_float_currentARead
bms_float_timeminRead
bms_type_index_armRead
manufacture_code_aRead
dc_volt_outputVRead
bms_avg_chg_voltVRead
bms_avg_chg_hourshRead
feed_power_enable_aRead
feed_power_para_set_aWRead
bms_curr_lmt_coffRead
battery_protocol_arm_aRead
work_week_1_start_time_aRead
work_week_1_end_time_aRead
work_week_1_bat_power_percent_a%Read
factory_settingWrite
clear_dataWrite
restartWrite
reset_spsWrite
pv_e_total_2_bWhWrite
pv_e_day_2_bWhWrite
e_total_sell_2_bWhWrite
h_total_2_bhWrite
e_day_sell_2_bWhWrite
e_total_buy_2_bWhWrite
e_day_buy_2_bWhWrite
e_total_load_2_bWhWrite
e_load_day_2_bWhWrite
e_battery_charge_2_bWhWrite
e_charge_day_2_bWhWrite
e_battery_discharge_2_bWhWrite
e_discharge_day_2_bWhWrite
safety_country_code_bWrite
iso_limit_bWrite
lvrt_hvrt_bWrite
pv_start_voltage_bVWrite
mppt_for_shadow_enable_bWrite
back_up_enable_bWrite
auto_start_backup_bWrite
grid_wave_check_level_bWrite
backup_start_dly_bsWrite
ups_std_volt_type_bWrite
derate_rate_vde_b%Write
three_phase_unbalanced_output_bWrite
high_imp_mode_bWrite
arc_self_checkWrite
arc_fault_removeWrite
iso_check_mode_bWrite
off_grid_to_on_grid_delay_bsWrite
off_grid_under_voltage_protect_coefficient_bWrite
battery_mode_pv_charge_enable_bWrite
dcv_check_off_bWrite
bms_charge_max_voltage_bVWrite
bms_charge_max_current_bAWrite
bms_discharge_min_voltage_bVWrite
bms_discharge_max_current_bAWrite
bms_soc_under_min_b%Write
bms_offline_discharge_min_voltage_bVWrite
bms_offline_soc_under_min_b%Write
stop_soc_protect_b%Write
manufacture_code_bWrite
feed_power_enable_bWrite
feed_power_para_set_bWWrite
battery_protocol_arm_bWrite
work_week_1_start_time_bWrite
work_week_1_end_time_bWrite
work_week_1_bat_power_percent_b%Write
work_week_1Write
wbms_version_aWrite
wbms_strings_acountWrite
wbms_charge_max_voltage_aVWrite
wbms_charge_max_current_aAWrite
wbms_discharge_min_voltage_aVWrite
wbms_discharge_max_current_aAWrite
wbms_voltage_aVWrite
wbms_current_aAWrite
wbms_soc_a%Write
wbms_soh_a%Write
wbms_temperature_a°CWrite
wbms_warning_code_aWrite
wbms_alarm_code_aWrite
wbms_status_aWrite
wbms_disable_timeout_detection_aWrite
wbms_version_bRead
wbms_strings_bcountRead
wbms_charge_max_voltage_bVRead
wbms_charge_max_current_bARead
wbms_discharge_min_voltage_bVRead
wbms_discharge_max_current_bARead
wbms_voltage_bVRead
wbms_current_bARead
wbms_soc_b%Read
wbms_soh_b%Read
wbms_temperature_b°CRead
wbms_warning_code_bRead
wbms_alarm_code_bRead
wbms_status_bRead
wbms_disable_timeout_detection_bRead
gw_a_48000_batttery1_charge_max%Read
gw_a_48001_pv_limit_powerWRead
gw_a_48003_inverter_mode_controlRead
gw_a_48004_ac_limit_powerWRead
gw_a_48006_battery_modeRead
gw_a_48007_battery_charge_powerWRead
gw_a_48009_battery_discharge_powerWRead
gw_a_48011_bms_discharge_current_limitARead
gw_a_48012_bms_charge_current_limitARead
gw_a_48013_battery_level%Read
gw_a_48014_r_phase_ac_limitWRead
gw_a_48015_s_phase_ac_limitWRead
gw_a_48016_t_phase_ac_limitWRead
gw_a_48017_meter_statusRead
gw_a_48018_meter_total_apparent_powerWRead
gw_a_48020_meter_total_active_powerWRead
gw_a_48022_r_phase_limit_inputWRead
gw_a_48023_s_phase_limit_inputWRead
gw_a_48024_t_phase_limit_inputWRead
gw_a_48025_max_bms_discharge_currentARead
gw_a_48026_feed_power_enableRead
gw_a_48027_battery1_percent_charge%Read
gw_a_48028_battery1_percent_discharge%Read
gw_a_48029_battery2_percent_charge%Read
gw_a_48030_battery2_percent_discharge%Read
gw_a_48031_battery2_modeRead
gw_a_48032_battery2_charge_powerWRead
gw_a_48034_battery2_discharge_powerWRead
gw_a_48036_bms2_discharge_current_limitARead
gw_a_48037_bms2_charge_current_limitARead
gw_a_48038_battery2_level%Read
gw_a_48039_battery_charge_voltage_limitVRead
gw_a_48040_max_bms2_discharge_currentARead
gw_a_48041_generator_operating_modeRead

Loading registers…

Send your device list

If a device is not in the library yet, we build the template for free as soon as we have the register data.

Number of installations (optional)

Use cases

  • Monitor daily and cumulative PV energy from up to four string inputs to verify yield against design estimates.
  • Track battery state of health via bms_soh over multiple seasons to detect capacity degradation early.
  • Alert on HVRT or LVRT event count increases to identify recurring grid-quality issues at a site.
  • Compare total_load_power against total_back_up_load_power to verify backup circuit sizing during commissioning.
  • Report daily grid import and export totals using e_day_buy and e_day_sell for tenant billing or settlement.

Installation

  1. Connect the Goodwe inverter's LAN port to your local network and confirm the inverter has a stable IP address; Modbus TCP is available on port 502 with the default unit ID 247.

  2. In the ModbusCloud portal, add a new ModbusCloud Gateway on the same LAN segment, enter the inverter IP address, port 502, and set the Modbus unit ID to 247 (or the value read from register 45127 if it has been changed).

  3. Import the Goodwe AbstractGoodWe template into your portal with one click and assign it to the Gateway; no additional register configuration is required.

  4. Verify the connection by spot-checking live values for total_inv_power and bms_pack_temperature in the dashboard; non-zero readings confirm successful communication.

Things to watch for

Many registers return values ten times too large. Why?

Most Goodwe measurement registers use a scale factor of 0.1, meaning the raw integer must be divided by 10 to obtain the physical value. For example, air_temperature, bus_voltage, and the energy counter registers are all stored as tenths of their displayed unit. The ModbusCloud template applies this scaling automatically; if you are reading raw values in another tool, divide by 10.

The gateway connects but no data appears after import. What now?

Confirm the inverter's LAN module is physically inserted and that port 502 is reachable from the Gateway's network segment. Goodwe inverters accept only one Modbus TCP client at a time: if another application such as a home-automation integration is holding the connection, the Gateway will be refused. Disconnect other clients, then retry.

Multi-word (uint32) registers show incorrect or swapped values.

Goodwe uses big-endian word order for 32-bit registers: the high word is at the lower address and the low word follows at address plus one. Verify your Modbus client is configured for big-endian (high word first) 32-bit reads. The ModbusCloud template handles this correctly by default.

Is it safe to write to factory_setting, clear_data, or restart over Modbus?

Extreme caution is required. Writing to factory_setting restores all parameters to factory defaults and will disrupt site configuration. Writing to clear_data permanently erases energy counters. Writing to restart reboots the inverter immediately. These registers should never be triggered from automated rules or scheduled tasks. Only write them intentionally during supervised maintenance.

Want to see how it works?

Electrician working in an open distribution board