Sungrow Binding


i’m just using the UI-Wizard, so i’ve no configuration files present.
But as the is a ToDo i’ve just started writing down an example.
As said, i’m not using configuration files, so this is just untested.

Please check if it works and let me know if you need further information.

BR Sönke

P.S. As there is no export function, this is not complete yet.


Bridge modbus:tcp:sungrowBridge [ host="", port=502, id=1, enableDiscovery=false ] {
    Thing modbus:sungrow-inverter:sungrowBridge:sungrowInverter "Sungrow Inverter" [ pollInterval=5000 ]


// Groups
Group sungrowInverter "Sungrow Inverter" ["Inverter"]
Group overview "Overview" (sungrowInverter)
Group batteryInformation "Battery information" (sungrowInverter)
Group gridInformation "Grid information" (sungrowInverter)
Group loadInformation "Load information" (sungrowInverter)

// Overview
Number:Power total_active_power "Total Active Power" (overview) ["Measurement", "Power"] {channel="modbus:sungrow-inverter:sungrowBridge:sungrowInverter:sg-overview#sg-total-active-power"}
Number:Power total_dc_power "Total DC Power" (overview) ["Measurement", "Power"] {channel="modbus:sungrow-inverter:sungrowBridge:sungrowInverter:sg-overview#sg-total-dc-power"}
Number:Energy daily_pv_generation "Daily PV Generation" (overview) ["Measurement", "Energy"] {channel="modbus:sungrow-inverter:sungrowBridge:sungrowInverter:sg-overview#sg-daily-pv-generation"}
Number:Energy total_pv_generation "Total PV Generation" (overview) ["Measurement", "Energy"]  {channel="modbus:sungrow-inverter:sungrowBridge:sungrowInverter:sg-overview#sg-total-pv-generation"}

// Battery information
Number:Power battery_power "Battery Power" (batteryInformation) ["Measurement", "Power"] {modbus:sungrow-inverter:sungrowBridge:sungrowInverter:sg-battery-information#sg-battery-power}
Number:Dimensionless battery_level "Battery Level" (batteryInformation) ["Measurement", "Energy"] {modbus:sungrow-inverter:sungrowBridge:sungrowInverter:sg-battery-information#sg-battery-power}
Number:Energy daily_charge_energy "Daily Battery Charge Energy" (batteryInformation) ["Measurement", "Energy"] {channel="modbus:sungrow-inverter:sungrowBridge:sungrowInverter:sg-battery-information#sg-daily-charge-energy"}
Number:Energy daily_discharge_energy "Daily Battery Discharge Energy" (batteryInformation) ["Measurement", "Energy"] {channel="modbus:sungrow-inverter:sungrowBridge:sungrowInverter:sg-battery-information#sg-daily-battery-discharge-energy"}

// Grid information
Number:Power export_power "Export Power" (gridInformation) ["Measurement", "Power"] {channel="modbus:sungrow-inverter:sungrowBridge:sungrowInverter:sg-grid-information#sg-export-power"}
Number:Energy daily_export_energy "Daily Export Energy" (gridInformation) ["Measurement", "Energy"] {channel="modbus:sungrow-inverter:sungrowBridge:sungrowInverter:sg-grid-information#sg-daily-export-energy"}

// Load information
Number:Power load_power "Load Power" (loadInformation) ["Measurement", "Power"] {channel="modbus:sungrow-inverter:sungrowBridge:sungrowInverter:sg-load-information#sg-load-power"}
Number:Energy daily_direct_energy_consumption "Daily Direct Energy Consumption" (loadInformation) ["Measurement", "Energy"] {channel="modbus:sungrow-inverter:sungrowBridge:sungrowInverter:sg-load-information#sg-daily-direct-energy-consumption"}


Thank you for your feedback!!! I’ll comment once I have my PV installed.

Hi @soenke
I’m quite new to the sungrow modbus world, what do you mean with “internal lan port”?
where is it? is it one of the two lans where there is also the bus connectors?
I’ve the battery pack so one of these lan port is already used. Can I choose of of them or is there a specif lan port to be used?


here is a manual for the device (in german, but only the graphics are relevant):

On Page 33 is a description for the connections below the device.
There is Port 3, the Wifi-Port, which will have the Winet-S-Dongle installed to. This dongle serving the internal website and connected to lan/Wlan and will upload any data to the iSolarCloud. As mentioned in the binding readme, you can enable the modbus data provisioning via winet-s-dongle.

The port 4 is the “internal lan port” which can be used for directly access to the device data.
But (in my installation as mentioned above) this doesn’t work at all.

The battery pack (which i’ve installed too) should be attached via direct modbus on port 6.

So - if you are using the “default” setup with winet-S dongle, you should be fine to read the data with this binding.

Let me know, if you have any further questions.



Thank you for the aswer, I have a different model, the SH5.0RS, which is different from the one described on page 33: I don’t have a port named " LAN-Anschluss Steckverbinder für EMS, Router, und Data Logger"

Anyway, I’ve the Winet-S dongle (It is fully working with mobile app and isolarcloud)

but I got an error on the OH (4.0.4-stable) binding.
ModBus binding seems ok ( is the IP I’ve found connecting to the winet dashboard with a browser):

but ModBus.Sungrow thing went wrong:

any suggestion?


first of all, your device typ is listed in the spec, which is implemented within the binding
So this should work in general.

The issue looks a bit like reading some modbus registers may have failed. The message within the ui doen’t show enough details, please check the openhab log files for more details.


it doesn’t work neither from QMobBus

Is there some specific configuration apart the “MODBUS” page under “transfer configuration” on the Winet-S webpage?

as you are sucessfully connected (in openhab and qmodbus), i think it might not be a general modbus problem, but only that some registers may not be available.

Did you try only 13023 or some other registers too?
Having a look in the spec, therere are some ranges of registers, you might try one of each range.

BR Sönke

I tried just with:

  • Battery Level (13023)
  • Battery Healthy (13024)
  • Self Consumption rate (13029)

later I’ll try with more.

It looks very strange, I was able to read “holding registers” 0x03 but it continues to fail for “input registers” 0x04.

For example I was able to read the “year” (5000).

thanks @soenke! It’s working for me using OH4.0.4, Sungrow SH10RT and battery SBR096.

I’m using the LAN port connected to my internal network for ModBus. Winet-S is using my Guest network for iSolarCloud connection.
I had to restart the Docker container after completing installation to get regular item updates based on configured pollInterval. Stop-Start the binding didn’t work.

Here’s the things config similar to the example mentioned above but without a type mismatch warning:

Bridge modbus:tcp:sungrowBridge [ host="", port=502, id=1, enableDiscovery=false ] {
    Thing sungrow-inverter sungrowInverter "Sungrow Inverter" [ pollInterval=5000 ]

QModBus is a bid tricky. Sometimes it allowed to read register only once. Had to disconnect - reconnect after each read.

Does someone know a good Modbus Client software for MacOS?