GoodWe GoodWe ET/EH/BH/BT Hybrid Inverter (battery) Modbus TCP template

GoodWe ET/EH/BH/BT Hybrid Inverter (battery)

The GoodWe ET/EH/BH/BT series are hybrid solar inverters with integrated battery storage management, designed for residential and light-commercial PV installations. This ModbusCloud template communicates via Modbus TCP and reads battery power flow and state of charge, while also exposing the EMS mode and EMS power limit setpoint registers for active battery control. Connecting the GoodWe ET/EH/BH/BT to ModbusCloud lets installers track real-time battery behavior and automate charge or discharge decisions directly from the portal.

Protocol
Modbus TCP
Connection
Ethernet, Modbus TCP
Registers
4, read and write
Brand
GoodWe
Last updated

Registers (4)

2 read, 2 write

NameUnitAccessAddress (Hidden until you enter your email)Function (hidden)Type (hidden)
powerWRead
soc%Read
batterymode_aWrite
batterymode_bWWrite

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 battery state of charge continuously to detect gradual capacity fade across seasons.
  • Track battery power flow to verify that the inverter is charging from surplus PV as expected.
  • Alert on unexpected discharge events during low-tariff periods to catch EMS misconfiguration.
  • Write an EMS mode setpoint to force charge or hold battery state ahead of a grid-tariff peak window.
  • Compare SOC trends across multiple GoodWe sites in the ModbusCloud multi-site overview.

Installation

  1. Install a GoodWe LAN module or WiFi+LAN module into the inverter communication port, as the default WiFi module does not support Modbus TCP. Ensure ARM firmware is version 13 or higher for HV battery variants, or version 15 or higher for LV battery variants.

  2. Connect the LAN module to your local network via a switch or router and assign the inverter a static IP address via DHCP reservation to prevent address changes after a power cycle.

  3. In the ModbusCloud portal, add a ModbusCloud Gateway on the same LAN segment, then import this template and enter the inverter's IP address and unit ID (default 247) in the device configuration.

  4. Spot-check the connection by reading the soc register (39005) in the portal live-data view and confirming the value matches the percentage shown on the inverter display or SolarGo app.

Things to watch for

The gateway connects but all register values show zero or null.

Verify the LAN or WiFi+LAN module is installed, not the default WiFi-only dongle. The default WiFi module does not expose Modbus TCP. Also confirm the unit ID is set to 247, which is the GoodWe factory default, and that the inverter is powered up by DC or AC before polling.

Why does the soc register return an implausible value?

The soc register at address 39005 returns a raw uint16 with no scaling factor. Confirm your poll is using function code 3 and reading a single 16-bit word. Some tools default to 32-bit reads which merge adjacent registers and produce garbage. Re-read with exactly one register length.

Connection drops randomly after working for a few minutes.

A dynamic IP address on the LAN module is the most common cause. Assign a static IP to the module via your router DHCP reservation, or configure a fixed address in the module settings. Random reconnects can also occur if the inverter goes into standby; ensure DC voltage is present from the PV strings.

Is it safe to write to the batterymode_a and batterymode_b setpoint registers?

Write these registers with care. Writing an incorrect EMS mode value or an out-of-range power limit to batterymode_b can force the battery into continuous charge or discharge, potentially triggering BMS protection or voiding warranty. Always verify the intended mode value against GoodWe documentation before writing, and return the inverter to auto mode after testing.

Want to see how it works?

Electrician working in an open distribution board