TapHome

GoodWe ET Plus+ Inverters

Modbus RTU
Submitted by
Last updated: 03. 2026
GoodWe ET Plus+ Inverters

The GoodWe ET Plus+ series are three-phase hybrid solar inverters with battery storage support, backup output and integrated grid metering. TapHome connects via Modbus TCP through a LAN module (or WiFi+LAN module) plugged into the inverter’s communication port. The connection uses standard Modbus TCP on port 502 with a default slave ID of 247.

The template provides read-only monitoring of PV string production (4 MPPT inputs), battery state of charge and energy flow, three-phase grid and backup load electrical parameters, cumulative energy counters and inverter diagnostics including error flags and thermal monitoring.

Hardware connection

The GoodWe ET Plus+ supports two communication methods for third-party integration:

  • Modbus TCP — via an optional LAN module or WiFi+LAN module (replaces the default WiFi module). This is the recommended method for TapHome.
  • Modbus RTU — via the RS-485 EMS port on the 18PIN terminal block (pins 1–2: 485_A1/485_B1). Available natively without additional hardware.
LAN module

The default communication module on the ET Plus+ is WiFi only. For Modbus TCP, a LAN module or WiFi+LAN module must be purchased separately from GoodWe. The ET series uses the USB terminal type module.

Wiring diagram
GoodWe Modbus TCP wiring — direct connection to LAN module or via Ethernet network with router

Two connection options are available:

  1. Direct connection — Ethernet cable from TapHome Core directly to the LAN module on the inverter
  2. Network connection — both TapHome Core and the inverter connected to the same local network via a router or switch
EMS port (RS-485 alternative)

For Modbus RTU communication, use the EMS port on the 18PIN terminal block at the bottom of the inverter:

GoodWe ET Plus+ EMS communication cable wiring — RS-485 connection to battery, smart meter and EMS device
PinDefinitionFunction
1485_A1RS-485 A+ (EMS)
2485_B1RS-485 B- (EMS)
10GND-SSignal ground

The TapHome template is configured for Modbus TCP (IP address parameter). For RS-485 connection, adjust the module communication settings in TapHome accordingly.

Configuration

Enabling Modbus TCP communication

Firmware requirement: ARM firmware version 13 or higher is required for HV battery inverters, ARM 15 or higher for LV battery inverters.

Configure the inverter for Modbus TCP via the SolarGo app or web interface:

  1. Open communication settings
  2. Set the connection type to Modbus TCP/IP
  3. Set the IP address — ensure the inverter and TapHome Core are on the same subnet
  4. Set the server port to 502
  5. Confirm with OK

When importing the template in TapHome, provide:

  • IP Address — the inverter’s IP on the local network
  • Slave ID — Modbus slave address (factory default: 247, configurable 1–247)

Assign a static IP address to the inverter (via router DHCP reservation) to prevent the address from changing after a power cycle. The GoodWe inverter does not support mDNS hostnames.

RS-485 settings (if using RTU)
  • Baud rate: 9600 bps (default)
  • Data format: 8 data bits, no parity, 1 stop bit
  • Slave ID: 247 (factory default)

Device capabilities

The template exposes 26 read-only sensors organized into the following groups:

PV string monitoring

Four MPPT inputs are monitored individually:

  • PV1 Power — PV string 1 power in kW, with service attributes for PV1 voltage (V), current (A) and operating mode (No PV / Standby / Work)
  • PV2 Power — PV string 2 power in kW, with voltage, current and mode
  • PV3 Power — PV string 3 power in kW, with voltage, current and mode
  • PV4 Power — PV string 4 power in kW, with voltage, current and mode
Battery monitoring
  • Battery State of Charge — current SOC as a percentage, with service attributes for battery power (W), current (A) and voltage (V)
  • Battery Mode — current battery operating state: No Battery, Standby, Discharging, Charging, Waiting for Charge, or Waiting for Discharge
  • Charge Energy Total — cumulative battery charge energy in kWh
  • Discharge Energy Total — cumulative battery discharge energy in kWh
Three-phase backup load

Per-phase monitoring of the backup (UPS) output for L1, L2 and L3:

  • L1/L2/L3 Back-Up Load Voltage — backup output voltage (V), with grid voltage as service attribute
  • L1/L2/L3 Back-Up Load Current — backup output current (A), with grid current as service attribute
  • L1/L2/L3 Back-Up Load Frequency — backup output frequency (Hz), with grid frequency as service attribute
  • L1/L2/L3 Back-Up Load Power — backup output power (kW), with grid power as service attribute

Each backup load device includes a corresponding grid-side service attribute, allowing comparison between backup and grid values for each phase.

Energy metering
  • Total PV Energy Production — cumulative PV energy in kWh, with a demand reading showing current total inverter power (kW)
  • PV Production Daily — PV energy produced today in kWh
  • Load Energy Total — cumulative total load consumption in kWh
  • Total Purchased Energy — cumulative energy imported from grid in kWh (from smart meter)
  • Total Supplied Energy — cumulative energy exported to grid in kWh (from smart meter)
Inverter diagnostics
  • Radiator Temperature — inverter heatsink temperature in °C, with IGBT module temperature as service attribute

The module-level service attributes provide additional context: device type identification, serial number, work mode (Wait / On-Grid / Off-Grid / Fault / Flash / Check), meter connection and communication status, AC output type (single-phase / three-phase) and grid mode (Loss / OK / Fault). Error monitoring reads a 32-bit bitmask register covering 24 fault conditions including GFCI, relay, grid, PV, temperature, isolation and communication faults.

Additional capabilities

The GoodWe ET Plus+ also exposes registers for AC active/reactive/apparent power, total backup and total load power, per-phase load power (not just backup), air and bus temperatures, UPS load percentage, BMS pack temperature, battery state of health (SOH) and grid energy counters from the inverter registers. Additionally, writable settings registers are available for grid export control, EMS mode selection and battery discharge depth configuration. These can be added in a future template update.

Troubleshooting

No Modbus TCP communication
  1. Verify the LAN module (or WiFi+LAN module) is installed — the default WiFi module does not support Modbus TCP
  2. Check that the ARM firmware version meets the minimum requirement (13+ for HV battery, 15+ for LV battery)
  3. Confirm that the connection type is set to Modbus TCP/IP in the SolarGo app
  4. Verify TapHome Core and the inverter are on the same network/subnet
  5. Ensure port 502 is not blocked by a firewall
Meter connection errors

The template monitors the smart meter connection status via service attributes:

  • bMeter Status: 0 = Not checked, 1 = Connected correctly, 2 = Connected reverse, 3 = Connected incorrectly
  • Meter communication status: 1 = OK, 0 = NG (no communication)

If the meter status shows “reverse”, the CT (current transformer) clamps are installed in the wrong direction. Reverse the CT orientation on the corresponding phase.

Inverter not responding

The inverter must be powered by DC (PV) or AC (grid) power before Modbus communication is available. If the inverter is in standby with no power source, it will not respond to Modbus queries.

Available devices

GoodWe ET Plus+ Inverter Module
Service Attributes
Device Type
Serial Number
Work ModeInverter operating mode — Wait, On-Grid, Off-Grid, Fault, Flash, Check
Meter Connection StatusSmart meter wiring check — Not Checked, Connected Correctly, Connected Reverse, Connected Incorrectly
Meter Communication StatusSmart meter communication state — OK or NG (no communication)
AC Output TypeInverter phase configuration — Single Phase, Three Phase Four Wire, Three Phase Three Wire
Grid ModeGrid connection state — Loss, OK, Fault
Network Frequency

GoodWe ET 10K

Read (module)
#error register
var err:= MODBUSR(H, 35189, Uint32);
#errors
IF(GETBIT(err, 0) = 1, ADDERROR("GFCI Device Check Failure-The GFCI detecting circuit is abnormal"));
IF(GETBIT(err, 1) = 1, ADDERROR("AC HCT Check Failure-The output current sensor is abnormal"));
IF(GETBIT(err, 3) = 1, ADDERROR("DCI Consistency Failure-Different value between Master and Slave for output DC current"));
IF(GETBIT(err, 4) = 1, ADDERROR("GFCI Consistency Failure-Different value between Master and Slave for GFCI"));
IF(GETBIT(err, 6) = 1, ADDERROR("GFCI Device Failure-GFCI check failure 3 times"));
IF(GETBIT(err, 7) = 1, ADDERROR("Relay Device Failure-Relay check failure 3 times"));
IF(GETBIT(err, 8) = 1, ADDERROR("AC HCT Failure-AC HCT check failure 3 times"));
IF(GETBIT(err, 9) = 1, ADDERROR("Utility Loss-Utility is unavailable"));
IF(GETBIT(err, 10) = 1, ADDERROR("Ground I Failure-Ground current is too high"));
IF(GETBIT(err, 11) = 1, ADDERROR("DC Bus High-Dc bus is too high"));
IF(GETBIT(err, 12) = 1, ADDERROR("InternalFan Failure-The fan in case failure"));
IF(GETBIT(err, 13) = 1, ADDERROR(" Over Temperature-Temperature is too high"));
IF(GETBIT(err, 14) = 1, ADDERROR("Utility Phase Failure - Utility Phase Failure"));
IF(GETBIT(err, 15) = 1, ADDERROR("PV Over Voltage - Pv input voltage is over the tolerable maximum value"));
IF(GETBIT(err, 16) = 1, ADDERROR("External Fan Failure - The external fan failure"));
IF(GETBIT(err, 17) = 1, ADDERROR("Vac Failure - Grid voltage out of tolerable range"));
IF(GETBIT(err, 18) = 1, ADDERROR(" Isolation Failure - Isolation resistance of PV-plant out of tolerable range"));
IF(GETBIT(err, 19) = 1, ADDERROR("DC Injection High - The DC injection to grid is too high"));
IF(GETBIT(err, 20) = 1, ADDERROR("Back-Up Over Load"));
IF(GETBIT(err, 22) = 1, ADDERROR("Fac Consistency Failure - Different value between Master and Slave for grid frequency"));
IF(GETBIT(err, 23) = 1, ADDERROR("Vac Consistency Failure - Different value between Master and Slave for grid voltage"));
IF(GETBIT(err, 25) = 1, ADDERROR("Relay Check Failure - Relay check is failure"));
IF(GETBIT(err, 27) = 1, ADDERROR("PhaseAngleFailure - Phase angle out of range(110°~140°)"));
IF(GETBIT(err, 28) = 1, ADDERROR(" DSP communication failure - Communication between ARM and DSP is failure"));
IF(GETBIT(err, 29) = 1, ADDERROR("Fac Failure - The grid frequency is out of tolerable range"));
IF(GETBIT(err, 30) = 1, ADDERROR("EEPROM R/W Failure - EEPROM cannot be read or written"));
IF(GETBIT(err, 31) = 1, ADDERROR(" Internal Communication Failure - Communication between microcontrollers is failure"));
Service Attributes
Device Type
MODBUSR(H, 35011, String, 5)
Serial Number
MODBUSR(H, 35003, String, 8)
Work mode
SWITCH( MODBUSR(H, 35187, Uint16), 
0, "Wait", 
1, "On-grid",
2, "Off-grid", 
3, "Fault", 
4, "Flash", 
5, "Check", 
"Communication error");
bMeter Status
SWITCH(MODBUSR(H, 36003, Uint16),
 0, "Not checked", 
 1, "Connected correctly", 
 2, "Connected reverse", 
 3, "Connected incorrectly", 
 "Error");
Meter communication status
IF(MODBUSR(H, 36004, Uint16) = 1, "OK", "NG" );
AC output type
SWITCH(MODBUSR(H, 35002, Uint16), 
0, "single phase", 
1, "three phase, four wire system", 
2, "three phase, three wire system", 
"Unknown")
Grid Mode
SWITCH(MODBUSR(H, 35136, Uint16),
 0, "Loss", 
 1, "OK", 
 2, "Fault", 
 "Communication Error")
Network Frequency [Hz]
MODBUSR(H, 35123, UInt16)/100
Battery Mode Multi-value Switch Read-only

Battery operating state — No Battery, Standby, Discharging, Charging, Waiting for Charge, Waiting for Discharge

Register: H:35184 UInt16 numeric
Values / States: No battery · Standby · Discharging · Charging · Waiting for charge · Waiting for discharge

Battery Mode

Read switch state
MODBUSR(H, 35184, uint16);
Battery State of Charge Dimmer Read-only

Available battery energy as percentage, with battery power (W), current (A) and voltage (V) as service attributes

Register: H:37007 UInt16 Unit: % numeric
Service Attributes
Battery Power
Battery Current
Battery Voltage

Battery State of Charge

Read level
MODBUSR(H, 37007, Uint16)/100
Service Attributes
Battery power
MODBUSR(H, 35183, int16) + "W";
Battery Current
MODBUSR(H, 35181, Uint16)/10 + "A";
Battery Voltage
MODBUSR(H, 35180, Uint16)/10 + "V";
Discharge Energy Total Variable Read-only

Cumulative total battery discharge energy in kWh

Register: H:35209 UInt32 Unit: kWh numeric

Discharge Energy Total

Read
MODBUSR(H, 35209, uInt32)/10;
Charge Energy Total Variable Read-only

Cumulative total battery charge energy in kWh

Register: H:35206 UInt32 Unit: kWh numeric

Charge Energy Total

Read
MODBUSR(H, 35206, uInt32)/10;
L1 Back-Up Load Current Variable Read-only
Register: H:35146 UInt16 Unit: A numeric
Service Attributes
L1 Grid Current

L1 Back-Up Load Current

Read
MODBUSR(H, 35146, UInt16)/10
Service Attributes
L1 Grid Current
MODBUSR(H, 35122, UInt16)/10 + "A"
L1 Back-Up Load Frequency Variable Read-only
Register: H:35147 UInt16 Unit: Hz numeric
Service Attributes
L1 Grid Frequency

L1 Back-Up Load Frequency

Read
MODBUSR(H, 35147, UInt16)/100
Service Attributes
L1 Grid Frequency
MODBUSR(H, 35123, UInt16)/100 + "Hz"
L1 Back-Up Load Power Variable Read-only

R phase backup load power in kW, with grid-side power as service attribute

Register: H:35150 Int16 Unit: kW numeric
Service Attributes
L1 Grid Power

L1 Back-Up Load Power

Read
MODBUSR(H, 35150, Int16)/1000
Service Attributes
L1 Grid Power
MODBUSR(H, 35125, Int16) + "W"
L1 Back-Up Load Voltage Variable Read-only
Register: H:35145 UInt16 Unit: V numeric
Service Attributes
L1 Grid Voltage

L1 Back-Up Load Voltage

Read
MODBUSR(H, 35145, UInt16)/10
Service Attributes
L1 Grid Voltage
MODBUSR(H, 35121, UInt16)/10 + "V"
L2 Back-Up Load Current Variable Read-only
Register: H:35152 UInt16 Unit: A numeric
Service Attributes
L2 Grid Current

L2 Back-Up Load Current

Read
MODBUSR(H, 35152, UInt16)/10
Service Attributes
L2 Grid Current
MODBUSR(H, 35127, UInt16)/10 + "A"
L2 Back-Up Load Frequency Variable Read-only
Register: H:35153 UInt16 Unit: Hz numeric
Service Attributes
L2 Grid Frequency

L2 Back-Up Load Frequency

Read
MODBUSR(H, 35153, UInt16)/100
Service Attributes
L2 Grid Frequency
MODBUSR(H, 35128, UInt16)/100 + "Hz"
L2 Back-Up Load Power Variable Read-only

S phase backup load power in kW, with grid-side power as service attribute

Register: H:35156 Int16 Unit: kW numeric
Service Attributes
L2 Grid Power

L2 Back-Up Load Power

Read
MODBUSR(H, 35156, Int16)/1000
Service Attributes
L2 Grid Power
MODBUSR(H, 35130, Int16) + "W"
L2 Back-Up Load Voltage Variable Read-only
Register: H:35151 UInt16 Unit: V numeric
Service Attributes
L2 Grid Voltage

L2 Back-Up Load Voltage

Read
MODBUSR(H, 35151, UInt16)/10
Service Attributes
L2 Grid Voltage
MODBUSR(H, 35126, UInt16)/10 + "V"
L3 Back-Up Load Current Variable Read-only
Register: H:35158 UInt16 Unit: A numeric
Service Attributes
L3 Grid Current

L3 Back-Up Load Current

Read
MODBUSR(H,35158 , UInt16)/10
Service Attributes
L3 Grid Current
MODBUSR(H, 35132, UInt16)/10 + "A"
L3 Back-Up Load Frequency Variable Read-only
Register: H:35159 UInt16 Unit: Hz numeric
Service Attributes
L3 Grid Frequency

L3 Back-Up Load Frequency

Read
MODBUSR(H, 35159, Uint16)/100
Service Attributes
L3 Grid Frequency
MODBUSR(H, 35133, UInt16)/100 + "Hz"
L3 Back-Up Load Power Variable Read-only

T phase backup load power in kW, with grid-side power as service attribute

Register: H:35162 Int16 Unit: kW numeric
Service Attributes
L3 Grid Power

L3 Back-Up Load Power

Read
MODBUSR(H, 35162, Int16)/1000
Service Attributes
L3 Grid Power
MODBUSR(H, 35135, Int16) + "W"
L3 Back-Up Load Voltage Variable Read-only
Register: H:35157 UInt16 Unit: V numeric
Service Attributes
L3 Grid Voltage

L3 Back-Up Load Voltage

Read
MODBUSR(H, 35157, UInt16)/10
Service Attributes
L3 Grid Voltage
MODBUSR(H, 35131, UInt16)/10 + "V"
Load Energy Total Variable Read-only

Cumulative total energy consumed by load in kWh

Register: H:35203 UInt32 Unit: kWh numeric

Load Energy Total

Read
MODBUSR(H, 35203, uInt32)/10;
PV Production Daily Variable Read-only

PV energy produced today in kWh

Register: H:35193 UInt32 Unit: kWh numeric

PV Production Daily

Read
MODBUSR(H, 35193, UInt32)/10
PV1 Power Variable Read-only

PV string 1 power in kW, with voltage (V), current (A) and operating mode as service attributes

Register: H:35105 UInt32 Unit: kW numeric
Service Attributes
ModePV1 operating mode — No PV, Standby, Work
PV1 Current
PV1 Voltage

PV1 Power

Read
MODBUSR(H, 35105, uInt32)/1000
Service Attributes
Mode
var reg:= MODBUSR(H, 35119, Uint32);
SWITCH(GETBYTE(reg, 0),
 0, "No PV", 
 1, "Standby", 
 2, "Work", 
 "Error");
PV1 - current
MODBUSR(H, 35104, Uint16)/10 + "A";
PV1 - voltage
MODBUSR(H, 35103, Uint16)/10 + "V";
PV2 Power Variable Read-only

PV string 2 power in kW, with voltage (V), current (A) and operating mode as service attributes

Register: H:35109 UInt32 Unit: kW numeric
Service Attributes
ModePV2 operating mode — No PV, Standby, Work
PV2 Voltage
PV2 Current

PV2 Power

Read
MODBUSR(H, 35109, UInt32)/1000
Service Attributes
Mode
var reg:= MODBUSR(H, 35119, Uint32);
SWITCH(GETBYTE(reg, 1),
 0, "No PV", 
 1, "Standby", 
 2, "Work", 
 "Error");
PV2 - voltage
MODBUSR(H, 35107, Uint16)/10 + "V";
PV2 - current
MODBUSR(H, 35108, Uint16)/10 + "A";
PV3 Power Variable Read-only

PV string 3 power in kW, with voltage (V), current (A) and operating mode as service attributes

Register: H:35113 UInt32 Unit: kW numeric
Service Attributes
PV3 Current
PV3 Voltage
ModePV3 operating mode — No PV, Standby, Work

PV3 Power

Read
MODBUSR(H, 35113, UInt32)/1000
Service Attributes
PV3 - current
MODBUSR(H, 35112, Uint16)/10 + "A";
PV3 - voltage
MODBUSR(H, 35111, Uint16)/10 + "V";
Mode
var reg:= MODBUSR(H, 35119, Uint32);
SWITCH(GETBYTE(reg, 2),
 0, "No PV", 
 1, "Standby", 
 2, "Work", 
 "Error");
PV4 Power Variable Read-only

PV string 4 power in kW, with voltage (V), current (A) and operating mode as service attributes

Register: H:35117 UInt32 Unit: kW numeric
Service Attributes
ModePV4 operating mode — No PV, Standby, Work
PV4 Current
PV4 Voltage

PV4 Power

Read
MODBUSR(H, 35117, Uint32)/1000
Service Attributes
Mode
var reg:= MODBUSR(H, 35119, Uint32);
SWITCH(GETBYTE(reg, 3),
 0, "No PV", 
 1, "Standby", 
 2, "Work", 
 "Error");
PV4 - current
MODBUSR(H, 35116, Uint16)/10 + "A";
PV4 - voltage
MODBUSR(H, 35115, Uint16)/10 + "V";
Radiator Temperature Temperature Sensor Read-only

Inverter heatsink temperature, with IGBT module temperature as service attribute

Register: H:35176 Int16 Unit: °C numeric
Service Attributes
Module Temperature

Radiator Temperature

Read temperature
MODBUSR(H, 35176, int16)/10
Service Attributes
Module temperature
MODBUSR(H, 35175, Int16) / 10  + "°C";
Total Purchased Energy Variable Read-only

Cumulative energy imported from grid in kWh (from smart meter)

Register: H:36017 Float Unit: kWh numeric

Total Purchased Energy

Read
MODBUSR(H, 36017, Float)/10
Total PV Energy Production Electricity Meter Read-only

Cumulative PV energy in kWh, with current total inverter power (kW) as demand reading

Register: H:35191 UInt32 Unit: kWh numeric

Total PV Energy Production

Read total consumption
MODBUSR(H, 35191, UInt32)/10
Read demand
MODBUSR(H, 35138, Int16) / 1000
Total Supplied Energy Variable Read-only

Cumulative energy exported to grid in kWh (from smart meter)

Register: H:36015 Float Unit: kWh numeric

Total Supplied Energy

Read
MODBUSR(H, 36015, Float)/10
Connection: Modbus RTU • 9600 baud• 8N1 • Slave ID: $[SlaveId]
Possible improvements (20)
  • H:35140 AC Active Power — S16, W, read-only — total AC active power output
  • H:35142 AC Reactive Power — S16, VAR, read-only
  • H:35144 AC Apparent Power — S16, VA, read-only
  • H:35170 Total Back-Up Load Power — S16, W, read-only — total backup load across all phases
  • H:35172 Total Load Power — S16, W, read-only — total load power across all phases
  • H:35174 Air Temperature — S16, °C, /10, read-only — inverter internal air temperature
  • H:35178 BUS Voltage — U16, V, /10, read-only — DC bus voltage
  • H:35195 E-Total Grid Feed (Export) — U32, kWh, /10, read-only — total energy fed to grid (from inverter registers, not meter)
  • H:35200 E-Total Grid Buy (Import) — U32, kWh, /10, read-only — total purchased energy (from inverter registers, not meter)
  • H:35173 UPS Load Percent — U16, %, /100, read-only
  • H:37003 BMS Pack Temperature — U16, °C, /10, read-only — battery pack temperature
  • H:37008 Battery SOH — U16, %, read-only — battery state of health
  • H:36008 Meter Total Active Power — S16, W, read-only — smart meter total active power
  • H:35164 Load Power R (L1) — S16, W, read-only — R phase total load power (not just backup)
  • H:35166 Load Power S (L2) — S16, W, read-only — S phase total load power
  • H:35168 Load Power T (L3) — S16, W, read-only — T phase total load power
  • H:47509 Grid Export Enable — U16, R/W — enable/disable grid export
  • H:47510 Grid Export Limit — U16, W, R/W — grid export power limit
  • H:47511 EMS Mode — U16, R/W — energy management system mode selection
  • H:45356 Battery Discharge Depth — U16, %, R/W — minimum SOC for discharge

Sources

  • GoodWe EMS Modbus Protocol (Hybrid ET/EH/BH/BT) V1.7
    2026-03-26
    PDF
  • GoodWe HA Integration — ET Register Map (goodwe PyPI library)
    github.com 2026-03-26
  • GoodWe Modbus TCP/IP Communication Solution (VER 03)
    PDF
  • GoodWe ET/ET Plus+/BT Series User Manual V1.9
    en.goodwe.com 2026-03-26
    PDF