[APP][Pro] Connect Solar Goodwe Inverter to Homey

Dear Michael,

I have a problem with the Energy tab of my Homey and the Goodwe Modus Battery. In this/your app you used “meter_kwh_charging” and “meter_kwh_discharging”. The result is that the Energy tab gives no result in the battery part. I have contact Homey for that problem. The answer they given is to use these names:

“The capabilities should be: “meterPowerImportedCapability”: “meter_power.charged”,
“meterPowerExportedCapability”: “meter_power.discharged”.

Can you provide these changes into your app?

Thanks in advance.

Kind regards, Justus

Good afternoon Michael
I just had a goodwe inverter installed, and i can seem to add it to Homey and get any data.
Cheers

Rohan

I get with both App Versions an error after installation:
Gerät nicht verfügbar
Modbus Error FC 0x3 at 192.168.2.26 after 3 attempts: Timeout (Attempt 3/3).
But “nc -zuv YOUR_INVERTER_IP 8899” and “nc -zuv YOUR_INVERTER_IP 502” both give succeeded.
Inverter GoodWe GW29.9K-ET.
I checked it with a test Home Assistant installation and this is working probably.
Any idea whats the reason for the issue for the error “FC 0x3”?

Hello Michael,

I’m using the GoodWe Modbus (ET) device to monitor my GW 6.5 KN‑ET inverter, and overall it works very well. The only issue I’ve found is that the inverter status is incorrect or not updating. When the inverter is on‑grid, the status still reports wait. In the cloud device the status is shown correctly.

Could you possibly look into this issue?

Hi, I’m having trouble connecting the GoodWe Modbus (ET). I’ve connected the Wi-Fi/LAN Kit-20 via LAN. My inverter is the GS2500-XS-30, and both units are running the latest firmware. I can read Modbus data using SModMaster and successfully retrieved my serial number from address 30005/8. Unfortunately, I keep getting the error: “MODBUS Error FC 0x3 timeout attempt 3/3.” I’ve made sure that both programs aren’t trying to access the Modbus simultaneously. Do you have any idea what might be wrong, or is my device perhaps unsupported? Also, do you happen to have a list of addresses for reading the correct values?

Hi,
The current modbus driver is not compatible with the GS2500-XS-30.
Why?

Protocol Difference: The current Modbus driver is designed for Hybrid (ET Series) inverters. It uses the “ARM 745” protocol with register addresses starting at 35000 (e.g., 35105 for PV power).

XS Series Mapping: Grid-tied inverters like the XS series use a completely different Modbus register map. They typically use addresses in the 512–1024 range (e.g., 512 for Vpv, 768 for Energy).

Hardware Constraint: Many smaller XS models require a specific Wi-Fi/LAN kit (like the GA1008107) to support Modbus UDP polling on port 8899, which the driver uses.

Hi Michal,

Okay, yes, that makes sense. I’ve been looking into it a bit more myself, and it turns out this version is different again; I’m reading my pas on adress 30129. I already have a test version running locally that successfully reads the daily yield and total output via Modbus TCP. And indeed, I had to buy a different Wi-Fi/LAN kit to get it working. Would you be interested in collaborating to add support for this version to your project, or would you prefer to keep it generic?

Hello,

please try new build and let me know.

M.

Are you able map your data? If yes, I can make driver for it.

Yes i can do that. do you have a list of all thinks you want or a can make a list of all i can find.

Thx. Michal,

Work like a charm.

Basically, app needs data for:
"measure_solar_power", "measure_load", "measure_feed_in", "measure_battery_power", "measure_battery_soc", "measure_battery_soh", "measure_solar_dc_1", "measure_solar_dc_2", "status_inverter", "measure_contributing_rate", "measure_generation_today", "measure_generation_total", "measure_power", "meter_power", "measure_battery", "measure_temperature", "target_battery_soc", "goodwe_work_mode"

Requested capability Register(s) Type Description
measure_solar_power 30138–30139 U32, W Total DC input power from the solar panels (equals solar_dc_1 on this single-MPPT inverter)
measure_load
measure_feed_in
measure_battery_power
measure_battery_soc
measure_battery_soh
measure_solar_dc_1 30138–30139 U32, W Same register as measure_solar_power (single-MPPT inverter, only one PV string)
measure_solar_dc_2
status_inverter 30130 U16, enum Work mode (0=waiting, 1=normal, 2=fault)
measure_contributing_rate
measure_generation_today 30145 U16, ÷10 = kWh Today’s yield
measure_generation_total 30146–30147 U32, ÷10 = kWh Total yield since installation
measure_power 30128–30129 U32, W AC output power (Pac)
meter_power 30146–30147 U32, ÷10 = kWh Same register as measure_generation_total
measure_battery
measure_temperature 30142 I16, ÷10 = °C Inverter internal temperature
target_battery_soc
goodwe_work_mode 30130 U16, enum Same register as status_inverter

Notes:

  • All registers use Modbus function code 03 (Read Holding Registers).
  • These addresses are confirmed working on a GoodWe GW2500-XS-30 with WiFi/LAN Kit 2.0 — a single-MPPT, non-hybrid inverter (no battery). That’s why all battery-related fields (measure_battery*, target_battery_soc) are blank: this inverter simply doesn’t have those.
  • measure_load and measure_feed_in are also blank because they require an external smart meter reading (grid import/export), which this specific setup doesn’t have connected — only the inverter itself is being read.
  • measure_contributing_rate isn’t a register we’ve encountered anywhere; it may be a derived/calculated metric rather than something read directly from the inverter.

Additional confirmed registers not in the original list, in case they’re useful: grid voltage (30119), grid current (30122), grid frequency (30125), apparent power (30134–30135), power factor (30140), fault code (30131–30132), derating mode (30166–30167), operating hours (30148–30149), WiFi RSSI (30173), serial number (30005–30012), firmware version (30035–30037).

@Michal_Stranik I’ve recently got a Goodwe inverter with batteries and am trying to connect it to Homey via Modbus using your app. Thanks for developing this – I’m really pleased with it. I’ve used the test network connection to check whether port 502 is open, but it isn’t. In Solar-Go, I’ve enabled Modbus TCP via Settings > Path B. However, I’m not seeing the option to check the parameters Device ID: 1, Port: 502, and Baud rate: 9600.

Do you perhaps have another suggestion?

Hi Michal, thanks for all your efforts.

I seem to have the same problem. GW10KN-ET with Lynx F batteries, Modbus open, new WIFI/LAN stick 2.0 wired with LAN cable. Tested the openess of static inverter IP with port, succes on 502. Tried Device ID: 247 and 1 both in the “COM setting”.

The cloud app does work, but is slow. I cannot get the modbus going. Very strange.

What else can i do? any tips are welcome!