Sungrow SH10.RT Modbus integration

@ liflitz

Total PV generation: accumulated energy from the PV panels
Total PV generation & battery discharge: above + discharged energy from battery. It is a sungrow register that I simply included in the integration. Actually, I never used the sensor. Also I don’t find it very useful :wink:

Total battery charge vs. Total battery charge from PV
you can force charge / discharge the battery. By subtracting one from another you can see how much energy transferred from the grid into the battery.

Total exported energy: includes PV → Grid and Battery → Grid
Total exported energy from PV only PV → Grid
in some countries the energy prices are sometimes very low or even negative, so people try to charge their batteries. If the energy export price rises (in some countries also the exported energy prices are differing from hour-to-hour), they will export the battery-buffered energy.

So both sensors allow you to create more meaningful statistics :slight_smile:

for me (germany, standard energy contractor), non of this is very useful :wink:

Great, thanks!!!

Hi there,
I’m new into this and managed to connect to my SH10.RT thanks to the perfect guidance by @mkai

What I really want to do is to control the timing of charge/discharge, as available in the Energy management parameters on iSolarCloud.
I was searching all Register Infos I found but was not able the correct registry numbers for this read/write request.

Has anybody implemented such already, or can someone guide me where to find the correct registry numbers?

Looking forward to your replies!

Thank you @mkai.

Works really out of the box with your guidance for my SH10RT-V112 and my SunGrow battery. As soon as I discovered the internal NIC to get the Modbus information it was really straight forward.

Can get now all required information that I need for my other automations.
Great work.

I have installed the mKaiser sungrow modbus solution following the guideline. It was working immediately - all values were shown in the dashboard.
But after restarting HomeAssistant I don’t get any readings from my SH10RT anymore… I constantly get the following error protocol:

Logger: pymodbus.logging
Source: components/modbus/modbus.py:452
First occurred: 15:04:35 (159 occurrences)
Last logged: 15:04:44

Connection to (192.168.000.045, 502) failed: [Errno 111] Connection refused

When I connect the SH10RT (192.168.000.045:502 ID 1) using QModMaster with the identical settings then it always connects properly and returns values as expected.

I have checked in forums if there is any solution. I also tried the Modbus Proxy with no success.
I have the HA version 2024.2.5, HA is running properly on an Intel NUC.

Help is very much appreciated!

Hi there,

I lately installed this sungrow integration and I am struggeling a lot due to my dual inverter setup: Master SH8.0RT and slave SG5.0RT.

I added the second inverter in the secrets file, added a second modbus_sungrow.yaml file and changed all the names, IDs, host, port and slave with a 2 at the end.

For the master inverter everything works fine. But for the Slave I have some Problems:

For some entities IT seems to work properly. E.g. for Battery discharging power.

But some entities are displayed as ‘unknown’ e.g. Battery Charge and some of the entities like e.g. Total DC Power I do not have an entity for my second inverter at all, although it is included in my modbus_sungrow2.yaml file.

Any suggestions to solve this?

Thanks,
Stefan

Hi guys,
I’m new to this group, so maybe the question has already been answered before.
I’ve written a very simple c++ code for a PI to read out the data from my SH8.0… I can read the data from location 5000 on (voltages, pwr factor and stuff) and also from 13000 (states, energy registers and so on), but I can not access the profile data at 6100ff. The corresponding Modbus error is 02, which means the the area does not exist or can not be accessed.
Does anybody have a clue? I’m especially interested in “Export power from PV of today” because these values have a much higher resolution than the other power/energy registers.

[wrap=“justify”]
Hallo,
SH und SG soll nicht als Master Slave betrieben werden.
Als retrofit oder 2 getrennte Anlagen. Bei meiner Anlage , SH10RT V112 und SG5RT V11 , Ich habe 2 verschiedene yaml erstellt und 2 verschiedene Einträge in secrets.yaml.

Mit freundlichen Grüßen

[/wrapg

Hallo Artur,

danke für deine Antwort. Was meinst du mit retrofit bzw. 2 getrennte Anlagen?

Der SG5.0RT hat ja gar keinen internen LAN Port sondern nur den WiNet-S LAN port.

Ich habe die 2 yaml files und die 2 Einträge in Secrets habe ich auch. Im zweiten Eintrag habe ich die gleiche Host IP aber für die Slave address habe ich 2.

Kannst du mir das bitte genauer erklären?

Viele Grüße
Stefan

Hi,

I found this (possible) parameter for my sungrow charger - but don’t kwon the meaning of the values. I can see that the values changed between 6 up to 12 - but I have no idea, about the meaning.

Is there anyone who can help?

Thanks in advance.

Thomas

>       - name: Wallbox Output Current Setting Status
>         unique_id: wb1_output_current_setting_status
>         availability:
>           "{{states('sensor.output_current_setting')|is_number}}"
>         state: >-
>           {% if ((states('sensor.output_current_setting') | int(default=0))  == 1) %}
>             1
>           {% elif ((states('sensor.output_current_setting') | int(default=0)) == 2) %}
>             2
>           {% elif ((states('sensor.output_current_setting') | int(default=0)) == 3) %}
>             3
>           {% elif ((states('sensor.output_current_setting') | int(default=0)) == 4) %}
>             4
>           {% elif ((states('sensor.output_current_setting') | int(default=0)) == 5) %}
>             5
>           {% elif ((states('sensor.output_current_setting') | int(default=0)) == 6) %}
>             6
>           {% elif ((states('sensor.output_current_setting') | int(default=0)) == 7) %}
>             7
>           {% elif ((states('sensor.output_current_setting') | int(default=0)) == 8) %}
>             8
>           {% elif ((states('sensor.output_current_setting') | int(default=0)) == 9) %}
>             9
>           {% elif ((states('sensor.output_current_setting') | int(default=0)) == 10) %}
>             10
>           {% elif ((states('sensor.output_current_setting') | int(default=0)) == 11) %}
>             11
>           {% elif ((states('sensor.output_current_setting') | int(default=0)) == 12) %}
>             12
>           {% elif ((states('sensor.output_current_setting') | int(default=0)) == 13) %}
>             13
>           {% elif ((states('sensor.output_current_setting') | int(default=0)) == 14) %}
>             14
>           {% elif ((states('sensor.output_current_setting') | int(default=0)) == 15) %}
>             15
>           {% elif ((states('sensor.output_current_setting') | int(default=0)) == 16) %}
>             16
>           {% else %}
>             Unknown Output Current Setting Status!
>           {% endif %}

Hallo Stefan ,

Ja du muss 2 getrennte Anlagen erstellen , die ip Adressen sind von dem jeweiligen WR einzutragen ……

Am SG über WiNet S lan anschließen, dieser bekommt eigene ip Adresse , diese wird in der secrets.yaml eingetragen

sungrow_wr2_modbus_host_ip: 192.168.178.xxx # TODO update with the IP of your inverter. No default. Check your router.
sungrow_wr2_modbus_port: 502 # TODO update with the Modbus port of your inverter. Default is ‘502’
sungrow_wr2_modbus_slave: 1 #TODO update with the slave address of your inverter. Default is ‘1’

Und eigene modbus_sungrow_wr2.yaml.

Da kommt der Daten Satz von den 2

Mit freundlichen Grüßen

Hallo Artur,

meinst du mit 2 getrennten Anlagen, dass ich einfach den SG auch direkt über Ethernet mit meinem Netzwerk verbinde anstatt über den SH? Oder muss ich die beiden wirklich komplett trennen. Da am SH ja noch der Specher hängt will ich das eigentlich nicht, sonst kann ich über den SG ja gar nicht laden.

Momentan ist es so vom Elektriker angeschlossen:

  • SG COM1 über WiNet S zu SH WLAN buchse über WiNet S Adapter
  • SG COM2 an SH COM
  • SH COM zusätzlich zum Speicher
  • SH LAN ist dann an mein Netzwerk angeschlossen

Wenn ich jetzt SG COM1 anstatt mit dem SH direkt mit meinem Netzwerk verbinde und die separate IP in meinem secrets file eintrage, löst das dann mein Problem? Oder habe ich das falsch verstanden? Und funktioniert das überhaupt über den WiNet S Anschluss?

Vielen Dank schonmal

Viele Grüße
Stefan

Hallo,

ich habe einen SH 6.0 und einen SG 6.0
Beide hängen im Netzwerk mit eigener IP
Beide haben eine eigene yaml
Batterie ist am SH
Die Erzeugung von beiden WR geht in die Batterie

Gruß
Basti

Es handelt sich um zwei voneinander unabhängige Anlagen die beide auf ein Smartmeter (der kleine Kasten der mit dem SH verbunden ist) gehen.
Sie kommunizieren nicht über CAN (heißt der Bus glaube ich) miteinander.
Die secret yaml hat zwei Einträge die sich nur in Namen und IP von einander unterscheiden.

image

Logo die IPs sind unterschiedlich.
Die WRs sind komplett eigenständig und werden gar nicht miteinander verbunden.
Die Batterie hängt nur per Bus am SH und wird auch über diesen ausgewertet. die Werte der Batterie werden über den SH und dessen yaml angezeigt oder gesteuert.

Ok hab dich falsch verstanden, bei deiner cofig handelt es sich um retrofit Anlage !

Weis nicht warum ich keine weitere eintrage schreiben kann……
hier die Antwort

Hallo , geh in der WR SG rein über lokalzugrief …
Lese die ip Adresse aus …

, den in der FRITZ!Box meldet er sich mit PC 192.168.178.XXX und war mir nicht ersichtlich das das die neu ip Adresse ist ….!

Langsam bin ich echt ratlos…

Ich habe jetzt versucht den SG getrennt anzuschließen. Sowohl über den WIFI dongle als auch komplett ohne direkt in der COM Buchse.

Egal wie ich es mache, der SG taucht nicht mit eigener IP in meinem Netzwerk auf. Cold-boot habe ich mehrfach wie in den FAQ beschrieben durchgeführt. Ebenso die FritzBox neu gestartet.

Ich weiß echt nicht mehr weiter.

1 Like

Hallo ,
Könnte paar Tage nicht schreiben, weil das System nicht zulässt, bei neun Nutzer ….

Der sg Über wifi Stick angeschlossen an lan / FRITZ!Box ? Müsste mit espressif ……

Zur Not über lokalzugrief netzwerkparameter einschalten

Hallo,

sowohl wenn ich den SG über den WiFi Stick über LAN mit dem Netzwerk verbinde, als auch wenn er wie ursprünglich mit dem SH verbunden ist, dann sehe ich 4 IPs mit espressif.

Die habe ich auch alle 4 schon ausprobiert und mit keiner davon hat es funktioniert.

Vielleicht war ich da aber auch zu ungeduldig und habe zu schnell durch gewechselt. Das kann ich heute vielleicht nochmal ausprobieren.

Vielleicht habe ich auch das zweite modbus_sungrow.yaml File falsch abgeändert. Falls mir da jemand eins zum Vergleich zur Verfügung stellen kann, dann wäre das super.

Vielen Dank

Du kannst auch erstmal den Stick mit LAN verbinden und dann das Webinterface öffnen, um zu sehen ob es sich verbindet. Espressif ist auf jeden Fall richtig.
Allerdings bin ich gerade auch dabei das das erste Mal einzurichten und hatte ein paar Probleme mit Modbus, aber die WebUI ging.