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”.
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”?
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.
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.
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?
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.
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.