You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Add Support for additional Inverter / BESS Brands #8
Would it be possible to add support for other brands than Huawei / iStore (the Australian OEM rebranded version of Huawei) to your project?
What additional information would you require to support this ?
In the WLCRS repo you mentioned:
"_The one known limitation for other inverters is the startup connectivity check: on boot, the proxy queries a specific Modbus register to read the EMMA/SUN2000 device name and validate the connection is live.
That check is Huawei-specific and would need to be either reparametrized or removed entirely for other inverters. Everything after that handshake is generic Modbus TCP proxying.
If anyone tries it with Sungrow, DEYE, or similar and hits issues, I'd love to know — both to help debug and to make the startup check configurable for non-Huawei setups._"
Here's information for some brands that I'm aware of:
interesting but hard to implement without real testing environment. as you said basically is a matter of change the "function that verifies conectivity"
I will think on this when I have time. if we can put some short of dropbox. or something.
Thanks for the register details — this is now addressed in #13 (firmware 6.1-0).
As noted earlier, everything after the startup handshake was already generic Modbus TCP proxying; the only Huawei-specific part was the boot connectivity check. That check is now fully configurable, which enables other brands:
New Custom option
In the web settings (/config) and in the initial Setup portal, under Modbus TCP target → Test Target, choose Device type = Custom and set the 4 fields of the test request:
The check passes with any valid Modbus answer from the device: the normal reply, or a Modbus exception (which still proves the device is alive and listening). If the reply contains text (FC03/FC04 string registers), it is shown as the device model.
If you know the right values for your device, it works with any brand. Based on the information you shared, starting points would be:
Brand
Function
Register
Count
Sungrow
4 (input)
4999
1
SolarEdge
3 (holding)
40020
16
Fronius
3 (holding)
40020
16
Goodwe
3 (holding)
35011
5
Caveats: these haven't been tested on real devices here. Some vendors document 1-based addresses, so you may need register − 1 (e.g. 40019). The Unit ID depends on your installation (often 1). Values set in Custom are your responsibility — avoid write function codes (5, 6, 15, 16…), as they would modify the device on every attempt.
When in doubt: disable the check
Set Connection check on boot = Disabled. The proxy then only waits for the target IP to answer the ping and opens the gateway right away. It works with any Modbus TCP device.
Closing this as implemented; feel free to reopen or comment with your results if something doesn't work with your inverter/BESS.
Activity
mcamposv commentedon Sep 10, 2026
interesting but hard to implement without real testing environment. as you said basically is a matter of change the "function that verifies conectivity"
I will think on this when I have time. if we can put some short of dropbox. or something.
mcamposv commentedon Nov 2, 2026
Thanks for the register details — this is now addressed in #13 (firmware 6.1-0).
As noted earlier, everything after the startup handshake was already generic Modbus TCP proxying; the only Huawei-specific part was the boot connectivity check. That check is now fully configurable, which enables other brands:
New
CustomoptionIn the web settings (
/config) and in the initial Setup portal, under Modbus TCP target → Test Target, choose Device type = Custom and set the 4 fields of the test request:3= read holding registers,4= read input registers)The check passes with any valid Modbus answer from the device: the normal reply, or a Modbus exception (which still proves the device is alive and listening). If the reply contains text (FC03/FC04 string registers), it is shown as the device model.
If you know the right values for your device, it works with any brand. Based on the information you shared, starting points would be:
Caveats: these haven't been tested on real devices here. Some vendors document 1-based addresses, so you may need register − 1 (e.g. 40019). The Unit ID depends on your installation (often 1). Values set in Custom are your responsibility — avoid write function codes (5, 6, 15, 16…), as they would modify the device on every attempt.
When in doubt: disable the check
Set Connection check on boot = Disabled. The proxy then only waits for the target IP to answer the ping and opens the gateway right away. It works with any Modbus TCP device.
Closing this as implemented; feel free to reopen or comment with your results if something doesn't work with your inverter/BESS.