Einbindung eines Sungrow SH10RT: SH05,SH06,SH08,SH10

Begonnen von 3gmann, 05 November 2020, 11:22:14

Vorheriges Thema - Nächstes Thema

ChrisH

Angesichts der aktuellen Ereignisse bin ich darauf gestossen. Die SunGrow WR koennen die Netzfrequenz auch in 0.01Hz Aufloesung liefern.
Stand in meinem alten File nicht drin, aber z.B. hier Modbus Register Beschreibung 1.1.4

Hier mein Schnippsel fuer die Netzfrequenz mit 2 Nachkommstellen. Da haette der Frequenzabfall gestern gesehen werden koennen.

attr SH08rt01 obj-i5241-expr $val/100
attr SH08rt01 obj-i5241-poll 1
attr SH08rt01 obj-i5241-reading Grid_Frequency_High_Precision
attr SH08rt01 obj-i5241-type U16


Wie kann ich erzwingen das immer zwei Nachkommastellen angezeigt werden?
Christian

FhemPiUser

Ich habe bei mir mal die Änderungen bzw. zusätzlichen Werte in der SH10RT Modbus Doku für den System State (bzw. jetzt heißt er eigentlich Running State") für neuere Firmware-Versionen (ich denke ab 95.01) nachgezogen.

Falls es jemandem hilft und er es übernehmen möchte: Einfach die entsprechende Stelle in den userReadings des SH10rt devices für "98_System_State_text" mit dem folgenden Code aktualisieren.

98_System_State_text:98_System_State.* {if ((ReadingsVal("SH10rt_1","98_System_State","0") == 0x0001) or (ReadingsVal("SH10rt_1","98_System_State","0") == 0x8000)) {return "Stop";} elsif ((ReadingsVal("SH10rt_1","98_System_State","0") == 0x0008) or (ReadingsVal("SH10rt_1","98_System_State","0") == 0x1400)) {return "Standby";} elsif ((ReadingsVal("SH10rt_1","98_System_State","0") == 0x0010) or (ReadingsVal("SH10rt_1","98_System_State","0") == 0x1200)) {return "Initial Standby";} elsif ((ReadingsVal("SH10rt_1","98_System_State","0") == 0x0020) or (ReadingsVal("SH10rt_1","98_System_State","0") == 0x1600)) {return "Startup";} elsif ((ReadingsVal("SH10rt_1","98_System_State","0") == 0x0040) or (ReadingsVal("SH10rt_1","98_System_State","0") == 0x0000)) {return "Running";} elsif (ReadingsVal("SH10rt_1","98_System_State","0") == 0x0041) {return "Off-grid Charge";} elsif ((ReadingsVal("SH10rt_1","98_System_State","0") == 0x0080) or (ReadingsVal("SH10rt_1","98_System_State","0") == 0x8100)) {return "Derating Running";} elsif ((ReadingsVal("SH10rt_1","98_System_State","0") == 0x0100) or (ReadingsVal("SH10rt_1","98_System_State","0") == 0x5500)) {return "Fault";} elsif (ReadingsVal("SH10rt_1","98_System_State","0") == 0x0200) {return "Update failed";} elsif (ReadingsVal("SH10rt_1","98_System_State","0") == 0x0400) {return "Running in maintain mode";} elsif (ReadingsVal("SH10rt_1","98_System_State","0") == 0x0800) {return "Running in forced mode";} elsif (ReadingsVal("SH10rt_1","98_System_State","0") == 0x1000) {return "Running in off-grid mode";} elsif (ReadingsVal("SH10rt_1","98_System_State","0") == 0x1111) {return "Uninitialized";} elsif ((ReadingsVal("SH10rt_1","98_System_State","0") == 0x0002) or (ReadingsVal("SH10rt_1","98_System_State","0") == 0x1300)) {return "Shutdown";} elsif ((ReadingsVal("SH10rt_1","98_System_State","0") == 0x0004) or (ReadingsVal("SH10rt_1","98_System_State","0") == 0x1500)) {return "Emergency Stop";} elsif (ReadingsVal("SH10rt_1","98_System_State","0") == 0x1700) {return "AFCI Selt-Test Shutdown";} elsif (ReadingsVal("SH10rt_1","98_System_State","0") == 0x1800) {return "Intelligent Station Building Status";} elsif (ReadingsVal("SH10rt_1","98_System_State","0") == 0x1900) {return "Safe Mode";} elsif (ReadingsVal("SH10rt_1","98_System_State","0") == 0x2000) {return "Open Loop";} elsif (ReadingsVal("SH10rt_1","98_System_State","0") == 0x2501) {return "Restarting";} elsif (ReadingsVal("SH10rt_1","98_System_State","0") == 0x4000) {return "Running in External EMS mode";} elsif (ReadingsVal("SH10rt_1","98_System_State","0") == 0x4001) {return "Emergency Charging Operation";} elsif (ReadingsVal("SH10rt_1","98_System_State","0") == 0x8200) {return "Dispatch Running";} elsif (ReadingsVal("SH10rt_1","98_System_State","0") == 0x9100) {return "Warn Running";} else {return "unknown (".ReadingsVal("SH10rt_1","98_System_State","0").")";}}

thomasg

Guten Morgen zusammen,

ich plane die Anschaffung eines Sungrow SG15RT Wechselrichters für meine im Aufbau befindliche Solaranlage.

Der Wechselrichter arbeitet nach meiner Kenntnis ausschließlich mit einem "Sungrow DTSU666 5/80 A" Smartmeter zusammen.
Schade eigentlich, da ich schon einen IR-Lesekopf an meinem Zweirichtungsstromzähler habe, der zuverlässig Informationen an FHEM liefert.

Kann ich die Sungrow DTSU666 auch zusätzlich an fhem oder an einen Batteriewechselrichter wie den Victron Multiplus 2 anbinden? So könnte ich dann den IR-Lesekopf in Rente schicken ;)

Danke Euch
Fhem + knx + 1wire auf raspi 2

FhemPiUser

Ich kann meinen dtsu666 über modbus in fhem auslesen. bei mir gibt es aber zusätzlich einen zweirichtungszähler vom evu, den ich auch mit ir lesekopf über fhem auslese....

thomasg

Meinst du man kann an den dtsu666 mehrere Geräte anschließen - ist ja ein Bussystem und müsste möglich sein also in meinem Fall dann den sungrow Wechselrichter und meine fhem Instanz.
Fhem + knx + 1wire auf raspi 2

FhemPiUser

nein, der dtsu666 ist am sh10rt angeschlossen und vom sh10rt bekommt fhem über modbus tcp wie in diesem thread beschrieben dann alle registerwerte, die dann auch die dtsu666-werte enthalten.

thomasg

#201
Danke. Jetzt habe ichs verstanden. Und andersherum kriegt man die zählefaten nicht in den sungrow: ir Lesekopf - Fhem - sungrow (über Modbus TCP) ... Ich muss mir also das zusätzliche smartmeter dtsu666 besorgen
Fhem + knx + 1wire auf raspi 2

FhemPiUser

#202
das müssten diese register sein:

attr SH10rt_1 obj-i5600-expr $val/1
attr SH10rt_1 obj-i5600-poll 1
attr SH10rt_1 obj-i5600-reading Meter_Active_Power
attr SH10rt_1 obj-i5600-type S32
attr SH10rt_1 obj-i5602-poll 1
attr SH10rt_1 obj-i5602-reading Meter_Active_Power_Phase_1
attr SH10rt_1 obj-i5602-type S32
attr SH10rt_1 obj-i5604-poll 1
attr SH10rt_1 obj-i5604-reading Meter_Active_Power_Phase_2
attr SH10rt_1 obj-i5604-type S32
attr SH10rt_1 obj-i5606-poll 1
attr SH10rt_1 obj-i5606-reading Meter_Active_Power_Phase_3

attr SH10rt_1 obj-i5746-expr $val/100
attr SH10rt_1 obj-i5746-poll 1
attr SH10rt_1 obj-i5746-reading Meter_Total_Import_Energy
attr SH10rt_1 obj-i5746-type U32
attr SH10rt_1 obj-i5748-expr $val/100
attr SH10rt_1 obj-i5748-poll 1
attr SH10rt_1 obj-i5748-reading Meter_Total_Export_Energy
attr SH10rt_1 obj-i5748-type U32

meines wissens nach kann man den sungrow wr gar nicht ohne eigenen smart meter (dtsu666) betreiben...

tobmaster1985

Die SHxxRT benötigen den DTSU666 nur, wenn sie im Hybridmodus mit Akku laufen.

Aber die SGxxRT sind reine PV Wechselrichter, afaik brauchen die gar keinen Zähler, wie bereits im anderen Thread geschrieben..

Den IR-Lesekopf kannste auch nicht in Rente schicken, die Werte vom DTSU666 und EVU Zähler haben teilweise Differenzen von 2kWh am Tag und maßgeblich ist nunmal der offizielle und geeichte EVU Zähler.

Zur Info: der DTSU666 muss die Sungrow Firmware haben, sonst passen die Registeradressen nicht.

Bzgl Bussystem.. Ja, RS485 bzw Modbus RTU ist ein Bussystem, aber kein Multi-Master, sondern nur Multi Slave.

Warum möchtest du Geld beim Sungrow SH10RT sparen und dafür den Victron MP2 kaufen? Klingt alles nicht sinnvoll.