
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
| Name | Unit | Access | Address (Hidden until you enter your email) | Function (hidden) | Type (hidden) |
|---|---|---|---|---|---|
| max_apparent_power | W | Read | |||
| serial_number | Read | ||||
| dsp_fm_version_master | Read | ||||
| dsp_fm_version_slave | Read | ||||
| dsp_beta_version | Read | ||||
| arm_fm_version | Read | ||||
| arm_beta_version | Read | ||||
| v_pv3 | V | Read | |||
| i_pv3 | A | Read | |||
| p_pv3 | W | Read | |||
| v_pv4 | V | Read | |||
| i_pv4 | A | Read | |||
| p_pv4 | W | Read | |||
| pv_mode | Read | ||||
| grid_mode | Read | ||||
| total_inv_power | W | Read | |||
| ac_active_power | W | Read | |||
| ac_apparent_power | W | Read | |||
| load_mode_r | Read | ||||
| load_mode_s | Read | ||||
| load_mode_t | Read | ||||
| p_load_r | W | Read | |||
| p_load_s | W | Read | |||
| p_load_t | W | Read | |||
| total_back_up_load_power | W | Read | |||
| total_load_power | W | Read | |||
| ups_load_percent | % | Read | |||
| air_temperature | °C | Read | |||
| module_temperature | °C | Read | |||
| radiator_temperature | °C | Read | |||
| function_bit_value | Read | ||||
| bus_voltage | V | Read | |||
| nbus_voltage | V | Read | |||
| v_battery1 | V | Read | |||
| i_battery1 | A | Read | |||
| p_battery1 | W | Read | |||
| battery_mode | Read | ||||
| safety_country | Read | ||||
| work_mode | Read | ||||
| pv_e_total | Wh | Read | |||
| pv_e_day | Wh | Read | |||
| h_total | h | Read | |||
| e_day_sell | Wh | Read | |||
| e_total_buy | Wh | Read | |||
| e_day_buy | Wh | Read | |||
| e_total_load | Wh | Read | |||
| e_load_day | Wh | Read | |||
| e_battery_charge | Wh | Read | |||
| e_charge_day | Wh | Read | |||
| e_battery_discharge | Wh | Read | |||
| e_discharge_day | Wh | Read | |||
| battery_strings | count | Read | |||
| cpld_warning_code | Read | ||||
| eh_battery_function_active | Read | ||||
| arc_self_check_status | Read | ||||
| max_grid_freq_within_1_minute | Hz | Read | |||
| min_grid_freq_within_1_minute | Hz | Read | |||
| max_grid_voltage_within_1_minute_r | V | Read | |||
| min_grid_voltage_within_1_minute_r | V | Read | |||
| max_grid_voltage_within_1_minute_s | V | Read | |||
| min_grid_voltage_within_1_minute_s | V | Read | |||
| max_grid_voltage_within_1_minute_t | V | Read | |||
| min_grid_voltage_within_1_minute_t | V | Read | |||
| max_backup_power_within_1_minute_r | W | Read | |||
| max_backup_power_within_1_minute_s | W | Read | |||
| max_backup_power_within_1_minute_t | W | Read | |||
| max_backup_power_within_1_minute_total | W | Read | |||
| grid_hvrt_event_times | count | Read | |||
| grid_lvrt_event_times | count | Read | |||
| inv_error_msg_record_for_ems | Read | ||||
| inv_warning_code_record_for_ems | Read | ||||
| inv_cpld_warning_record_for_ems | Read | ||||
| battery_type_index | Read | ||||
| bms_status | Read | ||||
| bms_pack_temperature | °C | Read | |||
| bms_charge_imax | A | Read | |||
| bms_discharge_imax | A | Read | |||
| bms_soh | % | Read | |||
| bms_battery_strings | count | Read | |||
| battery_protocol | Read | ||||
| bms_software_version | Read | ||||
| battery_hardware_version | Read | ||||
| maximum_cell_temperature_id | Read | ||||
| minimum_cell_temperature_id | Read | ||||
| maximum_cell_voltage_id | Read | ||||
| minimum_cell_voltage_id | Read | ||||
| maximum_cell_temperature | °C | Read | |||
| minimum_cell_temperature | °C | Read | |||
| maximum_cell_voltage | V | Read | |||
| minimum_cell_voltage | V | Read | |||
| pass_information_1 | Read | ||||
| pass_information_2 | Read | ||||
| pass_information_3 | Read | ||||
| pass_information_4 | Read | ||||
| pass_information_5 | Read | ||||
| pass_information_6 | Read | ||||
| pass_information_7 | Read | ||||
| pass_information_8 | Read | ||||
| pass_information_9 | Read | ||||
| pass_information_10 | Read | ||||
| pass_information_11 | Read | ||||
| pass_information_12 | Read | ||||
| pass_information_13 | Read | ||||
| pass_information_14 | Read | ||||
| pass_information_15 | Read | ||||
| pass_information_16 | Read | ||||
| pass_information_17 | Read | ||||
| pass_information_18 | Read | ||||
| pass_information_19 | Read | ||||
| pass_information_20 | Read | ||||
| pass_information_21 | Read | ||||
| pass_information_22 | Read | ||||
| pass_information_23 | Read | ||||
| pass_information_24 | Read | ||||
| pass_information_25 | Read | ||||
| pass_information_26 | Read | ||||
| pass_information_27 | Read | ||||
| pass_information_28 | Read | ||||
| pass_information_29 | Read | ||||
| pass_information_30 | Read | ||||
| pass_information_31 | Read | ||||
| pass_information_32 | Read | ||||
| inverter_unit_id | Read | ||||
| modbus_baudrate | Read | ||||
| pv_e_total_2_a | Wh | Read | |||
| pv_e_day_2_a | Wh | Read | |||
| e_total_sell_2_a | Wh | Read | |||
| h_total_2_a | h | Read | |||
| e_day_sell_2_a | Wh | Read | |||
| e_total_buy_2_a | Wh | Read | |||
| e_day_buy_2_a | Wh | Read | |||
| e_total_load_2_a | Wh | Read | |||
| e_load_day_2_a | Wh | Read | |||
| e_battery_charge_2_a | Wh | Read | |||
| e_charge_day_2_a | Wh | Read | |||
| e_battery_discharge_2_a | Wh | Read | |||
| e_discharge_day_2_a | Wh | Read | |||
| safety_country_code_a | Read | ||||
| iso_limit_a | Read | ||||
| lvrt_hvrt_a | Read | ||||
| pv_start_voltage_a | V | Read | |||
| mppt_for_shadow_enable_a | Read | ||||
| back_up_enable_a | Read | ||||
| auto_start_backup_a | Read | ||||
| grid_wave_check_level_a | Read | ||||
| backup_start_dly_a | s | Read | |||
| ups_std_volt_type_a | Read | ||||
| derate_rate_vde_a | % | Read | |||
| three_phase_unbalanced_output_a | Read | ||||
| high_imp_mode_a | Read | ||||
| iso_check_mode_a | Read | ||||
| off_grid_to_on_grid_delay_a | s | Read | |||
| off_grid_under_voltage_protect_coefficient_a | Read | ||||
| battery_mode_pv_charge_enable_a | Read | ||||
| dcv_check_off_a | Read | ||||
| bms_charge_max_voltage_a | V | Read | |||
| bms_charge_max_current_a | A | Read | |||
| bms_discharge_min_voltage_a | V | Read | |||
| bms_discharge_max_current_a | A | Read | |||
| bms_soc_under_min_a | % | Read | |||
| bms_offline_discharge_min_voltage_a | V | Read | |||
| bms_offline_soc_under_min_a | % | Read | |||
| stop_soc_protect_a | % | Read | |||
| bms_float_volt | V | Read | |||
| bms_float_current | A | Read | |||
| bms_float_time | min | Read | |||
| bms_type_index_arm | Read | ||||
| manufacture_code_a | Read | ||||
| dc_volt_output | V | Read | |||
| bms_avg_chg_volt | V | Read | |||
| bms_avg_chg_hours | h | Read | |||
| feed_power_enable_a | Read | ||||
| feed_power_para_set_a | W | Read | |||
| bms_curr_lmt_coff | Read | ||||
| battery_protocol_arm_a | Read | ||||
| work_week_1_start_time_a | Read | ||||
| work_week_1_end_time_a | Read | ||||
| work_week_1_bat_power_percent_a | % | Read | |||
| factory_setting | Write | ||||
| clear_data | Write | ||||
| restart | Write | ||||
| reset_sps | Write | ||||
| pv_e_total_2_b | Wh | Write | |||
| pv_e_day_2_b | Wh | Write | |||
| e_total_sell_2_b | Wh | Write | |||
| h_total_2_b | h | Write | |||
| e_day_sell_2_b | Wh | Write | |||
| e_total_buy_2_b | Wh | Write | |||
| e_day_buy_2_b | Wh | Write | |||
| e_total_load_2_b | Wh | Write | |||
| e_load_day_2_b | Wh | Write | |||
| e_battery_charge_2_b | Wh | Write | |||
| e_charge_day_2_b | Wh | Write | |||
| e_battery_discharge_2_b | Wh | Write | |||
| e_discharge_day_2_b | Wh | Write | |||
| safety_country_code_b | Write | ||||
| iso_limit_b | Write | ||||
| lvrt_hvrt_b | Write | ||||
| pv_start_voltage_b | V | Write | |||
| mppt_for_shadow_enable_b | Write | ||||
| back_up_enable_b | Write | ||||
| auto_start_backup_b | Write | ||||
| grid_wave_check_level_b | Write | ||||
| backup_start_dly_b | s | Write | |||
| ups_std_volt_type_b | Write | ||||
| derate_rate_vde_b | % | Write | |||
| three_phase_unbalanced_output_b | Write | ||||
| high_imp_mode_b | Write | ||||
| arc_self_check | Write | ||||
| arc_fault_remove | Write | ||||
| iso_check_mode_b | Write | ||||
| off_grid_to_on_grid_delay_b | s | Write | |||
| off_grid_under_voltage_protect_coefficient_b | Write | ||||
| battery_mode_pv_charge_enable_b | Write | ||||
| dcv_check_off_b | Write | ||||
| bms_charge_max_voltage_b | V | Write | |||
| bms_charge_max_current_b | A | Write | |||
| bms_discharge_min_voltage_b | V | Write | |||
| bms_discharge_max_current_b | A | Write | |||
| bms_soc_under_min_b | % | Write | |||
| bms_offline_discharge_min_voltage_b | V | Write | |||
| bms_offline_soc_under_min_b | % | Write | |||
| stop_soc_protect_b | % | Write | |||
| manufacture_code_b | Write | ||||
| feed_power_enable_b | Write | ||||
| feed_power_para_set_b | W | Write | |||
| battery_protocol_arm_b | Write | ||||
| work_week_1_start_time_b | Write | ||||
| work_week_1_end_time_b | Write | ||||
| work_week_1_bat_power_percent_b | % | Write | |||
| work_week_1 | Write | ||||
| wbms_version_a | Write | ||||
| wbms_strings_a | count | Write | |||
| wbms_charge_max_voltage_a | V | Write | |||
| wbms_charge_max_current_a | A | Write | |||
| wbms_discharge_min_voltage_a | V | Write | |||
| wbms_discharge_max_current_a | A | Write | |||
| wbms_voltage_a | V | Write | |||
| wbms_current_a | A | Write | |||
| wbms_soc_a | % | Write | |||
| wbms_soh_a | % | Write | |||
| wbms_temperature_a | °C | Write | |||
| wbms_warning_code_a | Write | ||||
| wbms_alarm_code_a | Write | ||||
| wbms_status_a | Write | ||||
| wbms_disable_timeout_detection_a | Write | ||||
| wbms_version_b | Read | ||||
| wbms_strings_b | count | Read | |||
| wbms_charge_max_voltage_b | V | Read | |||
| wbms_charge_max_current_b | A | Read | |||
| wbms_discharge_min_voltage_b | V | Read | |||
| wbms_discharge_max_current_b | A | Read | |||
| wbms_voltage_b | V | Read | |||
| wbms_current_b | A | Read | |||
| wbms_soc_b | % | Read | |||
| wbms_soh_b | % | Read | |||
| wbms_temperature_b | °C | Read | |||
| wbms_warning_code_b | Read | ||||
| wbms_alarm_code_b | Read | ||||
| wbms_status_b | Read | ||||
| wbms_disable_timeout_detection_b | Read | ||||
| gw_a_48000_batttery1_charge_max | % | Read | |||
| gw_a_48001_pv_limit_power | W | Read | |||
| gw_a_48003_inverter_mode_control | Read | ||||
| gw_a_48004_ac_limit_power | W | Read | |||
| gw_a_48006_battery_mode | Read | ||||
| gw_a_48007_battery_charge_power | W | Read | |||
| gw_a_48009_battery_discharge_power | W | Read | |||
| gw_a_48011_bms_discharge_current_limit | A | Read | |||
| gw_a_48012_bms_charge_current_limit | A | Read | |||
| gw_a_48013_battery_level | % | Read | |||
| gw_a_48014_r_phase_ac_limit | W | Read | |||
| gw_a_48015_s_phase_ac_limit | W | Read | |||
| gw_a_48016_t_phase_ac_limit | W | Read | |||
| gw_a_48017_meter_status | Read | ||||
| gw_a_48018_meter_total_apparent_power | W | Read | |||
| gw_a_48020_meter_total_active_power | W | Read | |||
| gw_a_48022_r_phase_limit_input | W | Read | |||
| gw_a_48023_s_phase_limit_input | W | Read | |||
| gw_a_48024_t_phase_limit_input | W | Read | |||
| gw_a_48025_max_bms_discharge_current | A | Read | |||
| gw_a_48026_feed_power_enable | Read | ||||
| 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_mode | Read | ||||
| gw_a_48032_battery2_charge_power | W | Read | |||
| gw_a_48034_battery2_discharge_power | W | Read | |||
| gw_a_48036_bms2_discharge_current_limit | A | Read | |||
| gw_a_48037_bms2_charge_current_limit | A | Read | |||
| gw_a_48038_battery2_level | % | Read | |||
| gw_a_48039_battery_charge_voltage_limit | V | Read | |||
| gw_a_48040_max_bms2_discharge_current | A | Read | |||
| gw_a_48041_generator_operating_mode | Read |
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.
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
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.
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).
Import the Goodwe AbstractGoodWe template into your portal with one click and assign it to the Gateway; no additional register configuration is required.
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?










