Neuigkeiten:

Am Sonntag den 8.12.2024 kann es ab ca. 8:00 Uhr zu kurzzeitigen Einschränkungen / Ausfällen bei den Diensten des FHEM Vereines kommen.
Die Server müssen mal gewartet und dabei neu gestartet werden ;)

Hauptmenü

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

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

Vorheriges Thema - Nächstes Thema

FhemPiUser

nur holding register können geschrieben werden, siehe fhem modbusattr wiki oder commandref...

Bara

#166
Zitat von: tobmaster1985 am 16 Januar 2024, 01:00:34Hallo Zusammen,
nachdem ich seit 1 Woche ebenfalls eine PV Anlage mit Sungrow Wechselrichter SH06rt habe ich mit Erfolg die hervorragende Anleitung umgesetzt.
Mit Interesse habe ich den Beitrag von tobmaster1985 gelesen zur Einbindung des DTSU666 . Ich habe mit der gleichen Systematik das userreading um die Punkte des DTSU666 ergänzt. Leider ist das Ergebnis nicht zu gebrauchen, es kommen überall nur 0 Werte.
@tobmaster1985 : Könntest Du evtl. Dein userreading posten.
Vielen Dank
Rainer
Grüße
Rainer

tobmaster1985

Im userreading habe ich nichts, was mit den Werten des DTSU666 zu tun hat, sie werden ausgelesen:

Zitat von: tobmaster1985 am 16 Januar 2024, 01:00:34Die Werte vom DTSU666 hatte ich geplant mit ModbusAttr im passive Modus auszulesen, ist aber gar nicht notwendig:

attr SH10RT obj-i5600-reading Power_DTSU666_Total
attr SH10RT obj-i5600-type S32
attr SH10RT obj-i5602-reading Power_DTSU666_L1
attr SH10RT obj-i5602-type S32
attr SH10RT obj-i5604-reading Power_DTSU666_L2
attr SH10RT obj-i5604-type S32
attr SH10RT obj-i5606-reading Power_DTSU666_L3
attr SH10RT obj-i5606-type S32
attr SH10RT obj-i5736-reading Frequency_DTSU666
attr SH10RT obj-i5736-expr $val/100
attr SH10RT obj-i5740-reading Voltage_DTSU666_L1
attr SH10RT obj-i5740-expr $val/10
attr SH10RT obj-i5741-reading Voltage_DTSU666_L2
attr SH10RT obj-i5741-expr $val/10
attr SH10RT obj-i5742-reading Voltage_DTSU666_L3
attr SH10RT obj-i5742-expr $val/10
attr SH10RT obj-i5743-reading Current_DTSU666_L1
attr SH10RT obj-i5743-expr $val/100
attr SH10RT obj-i5744-reading Current_DTSU666_L2
attr SH10RT obj-i5744-expr $val/100
attr SH10RT obj-i5745-reading Current_DTSU666_L3
attr SH10RT obj-i5745-expr $val/100
attr SH10RT obj-i5746-reading Energy_DTSU666_Import
attr SH10RT obj-i5746-expr $val/100
attr SH10RT obj-i5746-type U32
attr SH10RT obj-i5748-reading Energy_DTSU666_Export
attr SH10RT obj-i5748-expr $val/100
attr SH10RT obj-i5748-type U32

Wenn der DTSU666 offline ist (Spannungsfrei oder Modbus unterbrochen) dann liefern die Register 7FFFFFFF / 7FFF / FFFF.

Welche Hard- und Softwareversion hat dein SH06RT?

Was genau hast du konfiguriert?



Bara

Hallo tobmaster1985,
vielen Dank für die schnelle Antwort. Ich muss gestehen, dass ich die Einbindung meines SH6.0rt ausschl. per copy&paste gemacht habe; bisher habe ich in fhem nur mit filelog gearbeitet und keine DB.
Ich hatte gehofft, mit folgenden Ergänzungen (letzte 3 Zeilen) des userReadings Werte zu Weiterverarbeitung zu bekommen, klappt aber leider so nicht.

attr SH06rt_Fast userReadingsPower_MPPT_1 {sprintf("%.0f", (ReadingsNum ("SH06rt_Fast","MPPT_1_Voltage", 0) * ReadingsNum ("SH06rt_Fast","MPPT_1_Current", 0)));} ,
Power_MPPT_2 {sprintf("%.0f", (ReadingsNum ("SH06rt_Fast","MPPT_2_Voltage", 0) * ReadingsNum ("SH06rt_Fast","MPPT_2_Current", 0)));},
Complete_Daily_Yield {sprintf("%.1f", (ReadingsNum ("SH06rt_Fast","Daily_PV_Generation", 0) + ReadingsNum ("Plenticore","Dailey_Yield", 0)));},
Complete_Daily_Einspeisung {sprintf("%.1f", (ReadingsNum ("SH06rt_Fast","Daily_Export_Energy", 0) + ReadingsNum ("Plenticore","Dailey_Einspeisung_KWh", 0)));},
Complete_Daily_PV_Consumption {sprintf("%.1f", (ReadingsNum ("SH06rt_Fast","Complete_Daily_Yield", 0) - ReadingsNum ("SH06rt_Fast","Complete_Daily_Einspeisung", 0)));},
Complete_DC_Power {sprintf("%.0f", (ReadingsNum ("SH06rt_Fast","Power_MPPT_1", 0) + ReadingsNum ("SH06rt_Fast","Power_MPPT_2", 0)+ ReadingsNum ("Plenti_Fast","Power_DC1", 0) + ReadingsNum ("Plenti_Fast","Power_DC2", 0) + ReadingsNum ("Plenti_Fast","Power_DC3", 0)));},
Complete_AC_Power {sprintf("%.0f", (ReadingsNum ("SH06rt_Fast","Total_DC_Power", 0) + ReadingsNum ("Plenti_Fast","Total_AC_active_power", 0)));},
Power_DTSU666_Total {sprintf("%.0f", (ReadingsNum ("SH06rt_Fast","Power_DTSU666_Total", 0)));},
Energy_DTSU666_Import {sprintf("%.0f", (ReadingsNum ("SH06rt_Fast","Energy_DTSU666_Import", 0)));},
Energy_DTSU666_Export {sprintf("%.0f", (ReadingsNum ("SH06rt_Fast","Energy_DTSU666_Export", 0)));}

Ich denke ich muss mich erstmal seelisch und gedanklich auf die Umstellen auf DB vorbereiten.
Wo kann ich die Softwareversion des Sungrow WR ablesen? Ich finde nur die Versionsnr.CB0-1.0.18.0-AB0-1.0.17.0-AA10-1.0.4.0 in den Geräteeinstellungen Isolarcloud.
 
Grüße
Rainer

tobmaster1985

Wie liest du die Register aus?
Poste doch mal die komplette Definition vom Device.

Deine userreadings für die DTSU666 Werte sind doch komplett sinnlos, weil sie das Reading überschreiben, was sie auslesen. Was hast du damit vor?

Das Auslesen hat nichts mit Filelog oder DB zu tun.. Eher ein Problem bei der Definition vom Device...

Bara

Hallo tobmaster1985,
vielen Dank für die Antwort.
Ich möchte die aktuelle Eispeisung und den Strombezug aus der DTSU666 auslesen um Überschussstrom entsprechend zu verbrauchen.
Wie gesagt habe ich von modbus keine Ahnung und nur per copy & paste das ganze übernommen. Sämtliche Daten -mit AusnahmeDTSU666- werden ausgelesen und inzwischen auch ausgewählt in der DB gespeichert.
Nachfolgend das device:
define SH06rt_Fast ModbusAttr 1 30 192.168.178.140:502 TCP
attr SH06rt_Fast DbLogExclude .*
attr SH06rt_Fast DbLogInclude Inside_Temperature:600:force,\
Power_MPPT_1:600:force,\
Power_MPPT_2:600:force,\
MPPT_1_Voltage:600:force,\
MPPT_2_Voltage:600:force,\
MPPT_1_Current:600:force,\
MPPT_2_Current:600:force,\
Daily_PV_Generation:600:force,\
Complete_Daily_Yield:600:force,\
Complete_Daily_Einspeisung:600:force,\
Complete_Daily_PV_Consumption:600:force,\
Power_DTSU666_Total,\
Power_DTSU666_L1,\
Power_DTSU666_L2,\
Power_DTSU666_L3,\
Frequency_DTSU666,\
Voltage_DTSU666_L1,\
Voltage_DTSU666_L2,\
Voltage_DTSU666_L3,\
Current_DTSU666_L1,\
Current_DTSU666_L2,\
Current_DTSU666_L3,\
Energy_DTSU666_Import,\
Energy_DTSU666_Export,\
BYD_Battery_Power:600:force,
attr SH06rt_Fast dev-type-S16-unpack s>
attr SH06rt_Fast dev-type-S32-len 2
attr SH06rt_Fast dev-type-S32-revRegs 1
attr SH06rt_Fast dev-type-S32-unpack l>
attr SH06rt_Fast dev-type-U32-len 2
attr SH06rt_Fast dev-type-U32-revRegs 1
attr SH06rt_Fast dev-type-U32-unpack N
attr SH06rt_Fast event-on-change-reading .*
attr SH06rt_Fast obj-i13001-expr $val/10
attr SH06rt_Fast obj-i13001-poll 1
attr SH06rt_Fast obj-i13001-polldelay x199
attr SH06rt_Fast obj-i13001-reading Daily_PV_Generation
attr SH06rt_Fast obj-i13002-expr $val/10
attr SH06rt_Fast obj-i13002-poll 1
attr SH06rt_Fast obj-i13002-polldelay x199
attr SH06rt_Fast obj-i13002-reading Total_PV_Generation
attr SH06rt_Fast obj-i13002-type U32
attr SH06rt_Fast obj-i13004-expr $val/10
attr SH06rt_Fast obj-i13004-poll 1
attr SH06rt_Fast obj-i13004-polldelay x199
attr SH06rt_Fast obj-i13004-reading Daily_Export_Energy
attr SH06rt_Fast obj-i13005-expr $val/10
attr SH06rt_Fast obj-i13005-poll 1
attr SH06rt_Fast obj-i13005-polldelay x199
attr SH06rt_Fast obj-i13005-reading Total_Export_Energy
attr SH06rt_Fast obj-i13005-type U32
attr SH06rt_Fast obj-i13007-poll 1
attr SH06rt_Fast obj-i13007-reading Load_Power
attr SH06rt_Fast obj-i13007-type S32
attr SH06rt_Fast obj-i13009-poll 1
attr SH06rt_Fast obj-i13009-reading Export_Power
attr SH06rt_Fast obj-i13009-type S32
attr SH06rt_Fast obj-i13016-expr $val/10
attr SH06rt_Fast obj-i13016-poll 1
attr SH06rt_Fast obj-i13016-polldelay x199
attr SH06rt_Fast obj-i13016-reading Daily_direct_Energy_Consumption
attr SH06rt_Fast obj-i13021-expr $val/1
attr SH06rt_Fast obj-i13021-poll 1
attr SH06rt_Fast obj-i13021-reading BYD_Battery_Power
attr SH06rt_Fast obj-i5007-expr $val/10
attr SH06rt_Fast obj-i5007-poll 1
attr SH06rt_Fast obj-i5007-polldelay x199
attr SH06rt_Fast obj-i5007-reading Inside_Temperature
attr SH06rt_Fast obj-i5007-type S16
attr SH06rt_Fast obj-i5010-expr $val/10
attr SH06rt_Fast obj-i5010-poll 1
attr SH06rt_Fast obj-i5010-reading MPPT_1_Voltage
attr SH06rt_Fast obj-i5011-expr $val/10
attr SH06rt_Fast obj-i5011-poll 1
attr SH06rt_Fast obj-i5011-reading MPPT_1_Current
attr SH06rt_Fast obj-i5012-expr $val/10
attr SH06rt_Fast obj-i5012-poll 1
attr SH06rt_Fast obj-i5012-reading MPPT_2_Voltage
attr SH06rt_Fast obj-i5013-expr $val/10
attr SH06rt_Fast obj-i5013-poll 1
attr SH06rt_Fast obj-i5013-reading MPPT_2_Current
attr SH06rt_Fast obj-i5016-poll 1
attr SH06rt_Fast obj-i5016-reading Total_DC_Power
attr SH06rt_Fast obj-i5016-type U32
attr SH06rt_Fast obj-i5035-expr $val/10
attr SH06rt_Fast obj-i5035-poll 1
attr SH06rt_Fast obj-i5035-polldelay x199
attr SH06rt_Fast obj-i5035-reading Grid_Frequency
attr SH06rt_Fast obj-i5600-reading Power_DTSU666_Total
attr SH06rt_Fast obj-i5600-type S32
attr SH06rt_Fast obj-i5604-reading Power_DTSU666_L2
attr SH06rt_Fast obj-i5604-type S32
attr SH06rt_Fast obj-i5606-reading Power_DTSU666_L3
attr SH06rt_Fast obj-i5606-type S32
attr SH06rt_Fast obj-i5743-expr $val/100
attr SH06rt_Fast obj-i5743-reading Current_DTSU666_L1
attr SH06rt_Fast obj-i5744-expr $val/100
attr SH06rt_Fast obj-i5744-reading Current_DTSU666_L2
attr SH06rt_Fast obj-i5745-expr $val/100
attr SH06rt_Fast obj-i5745-reading Current_DTSU666_L3
attr SH06rt_Fast obj-i5746-expr $val/100
attr SH06rt_Fast obj-i5746-reading Energy_DTSU666_Import
attr SH06rt_Fast obj-i5746-type U32
attr SH06rt_Fast obj-i5748-expr $val/100
attr SH06rt_Fast obj-i5748-reading Energy_DTSU666_Export
attr SH06rt_Fast obj-i5748-type U32
attr SH06rt_Fast room 2.4 PV Solar
attr SH06rt_Fast userReadings Power_MPPT_1 {sprintf("%.0f", (ReadingsNum ("SH06rt_Fast","MPPT_1_Voltage", 0) * ReadingsNum ("SH06rt_Fast","MPPT_1_Current", 0)));;} ,\
Power_MPPT_2 {sprintf("%.0f", (ReadingsNum ("SH06rt_Fast","MPPT_2_Voltage", 0) * ReadingsNum ("SH06rt_Fast","MPPT_2_Current", 0)));;},\
Complete_Daily_Yield {sprintf("%.1f", (ReadingsNum ("SH06rt_Fast","Daily_PV_Generation", 0)));;},\
Complete_Daily_Einspeisung {sprintf("%.1f", (ReadingsNum ("SH06rt_Fast","Daily_Export_Energy", 0)));;},\
Complete_Daily_PV_Consumption {sprintf("%.1f", (ReadingsNum ("SH06rt_Fast","Complete_Daily_Yield", 0) - ReadingsNum ("SH06rt_Fast","Complete_Daily_Einspeisung", 0)));;},\
Complete_DC_Power {sprintf("%.0f", (ReadingsNum ("SH06rt_Fast","Power_MPPT_1", 0) + ReadingsNum ("SH06rt_Fast","Power_MPPT_2", 0)));;},\
Complete_AC_Power {sprintf("%.0f", (ReadingsNum ("SH06rt_Fast","Total_DC_Power", 0)));;},\
Power_DTSU666_Total {sprintf("%.0f", (ReadingsNum ("SH06rt_Fast","Power_DTSU666_Total", 0)));;},\
Energy_DTSU666_Import {sprintf("%.0f", (ReadingsNum ("SH06rt_Fast","Energy_DTSU666_Import", 0)));;}, \
Energy_DTSU666_Export {sprintf("%.0f", (ReadingsNum ("SH06rt_Fast","Energy_DTSU666_Export", 0)));;}
 
Grüße
Rainer

tobmaster1985

Tut mir leid, aber ich verstehe nicht, was du da machst.

Du hast die Objekte definiert, um die Werte auszulesen, aber kein polling aktiv.
Dann definierst du userreadings mit den selben Readings, wie die Readings, die die userreadings wiederum auslesen. HÄ?

Bitte nicht falsch verstehen, aber stumpfes Copy&Paste funktioniert nicht, wenn man nicht weiß was man umsetzen will oder tut.

Um einen Überschussverbrauch zu steuern brauchst du nicht unbedingt die Werte vom DTSU666, das geht auch mit den Werten, die der SHxxRT auf Register 13009/13010 liefert.
Dort sieht man den Leistungsfluss ins bzw aus dem öffentlichen Netz.

Für eine Überschusssteuerung solltest du dir SolarForecast ansehen und das Abfrageintervall für den Wechselrichter sinnvoll setzen, 30sek ist IMHO zu groß für eine genaue Steuerung.
Solarforecast hat 1. eine Prognose, wann welche Leistung zu erwarten ist und 2. eine Verbrauchersteuerung


Hier die Lösung:

Lösche die sinnlosen Userreadings zum DTSU.. auch andere userreadings, die Schwachsinn sind:
Complete_AC_Power {sprintf("%.0f", (ReadingsNum ("SH06rt_Fast","Total_DC_Power", 0)));;},\
Deinen Registerdefinitionen fehlt das polling:
attr SH06rt_Fast obj-i5600-reading Power_DTSU666_Total
attr SH06rt_Fast obj-i5600-type S32
Erst mit
attr SH06rt_Fast obj-i5600-poll 1 wird auch wirklich das Register abgefragt.
Warum das in meinem Listing nicht mit dabei war? Ich verwende defPoll.

Bitte auch nochmal meinen ersten Post lesen, dort habe ich was zum combine Attribut geschrieben.


Wenn du die Ausgangsleistung vom SHxxRT sehen willst, folgende Register abfragen:
attr SH10RT obj-i05231-reading Power_AC_Active
attr SH10RT obj-i05231-type S32
attr SH10RT obj-i05233-reading Power_AC_Reactive
attr SH10RT obj-i05233-type S32
attr SH10RT obj-i05235-reading Power_DC_Total
attr SH10RT obj-i05235-type S32
attr SH10RT obj-i05237-reading Power_AC_Apparent
attr SH10RT obj-i05237-type S32

Dann wirst du sehen, dass "DC Total" nicht immer mit der AC Leistung übereinstimmt und auch nicht immer mit der Summe der beiden Strings.



Bara

Vielen Dank für die Unterstützung tobmaster1985!
Grüße
Rainer

tupol

Zitat von: tobmaster1985 am 19 Januar 2024, 13:09:43Die Register frage ich direkt über den LAN-Port am SH10RT ab.

Über den WiNet-S frage ich nur Register vom SBR128 ab, zweimal ModbusAttr gegen den LAN-Port mag der SH10RT nicht.


Das hatte ich ursprünglich auch so, aber leider erhält man über WiNet-S nicht die Zellspannungen der Batterie und kann das Cell-Balancing nicht überprüfen bzw. steuern. :-(

toron_go

Hallo,
also ich habe den Schalter zur Akku Zwang Ladung aus dem Netz integriert und der funktioniert auch prima.

Eigentlich würde ich auch gerne das Laden pausieren können. (z.B im Sommer Vormittags) SMA und andere können sowas in der Oberfläche :-/

Da vermutlich in 2025, derzeit nur neu PV, schon die ersten Restriktionen bekommen bei Einspeisung bei negativem Strompreis an den Börsen.
Natürlich würde ich mich auch gerne Netzdienlich verhalten ;-) Der Speicher muss nicht um 10 Uhr schon voll sein ....

Vg Toron

tobmaster1985

Zitat von: tupol am 04 November 2024, 11:38:45aber leider erhält man über WiNet-S nicht die Zellspannungen der Batterie

Die bekomme ich auch über Modbus TCP ID200 am SH10RT nicht, SBR128 mit FW SBRBCU-S_22011.01.13.
Welche FW hat deine Batterie?



Zitat von: toron_go am 20 November 2024, 11:57:11Eigentlich würde ich auch gerne das Laden pausieren können. (z.B im Sommer Vormittags)

Dazu habe mit der Einstellung zur max. Ladeleistung rumgespielt.
attr SH10RT obj-h33046-reading Test_Max_Charge_Power
attr SH10RT obj-h33046-set 1
attr SH10RT obj-h33046-showGet 1


ChrisH

Laut https://www.facebook.com/share/p/14jNgoxHBt/
sind seit der Firmware Version V112 diese beiden Register anders

13020 und 13021 jetzt 16Bit signed, vorher war das unsigned.

Waere dann diese Aenderung von

attr SH08rt01 obj-i13020-type U16
attr SH08rt01 obj-i13021-type U16


nach
attr SH08rt01 obj-i13020-type S16
attr SH08rt01 obj-i13021-type S16

der richtige Ansatz?  S16 statt U16?
Bei mir ist es aktuell zu dunkel um das experimentell zu pruefen :)

Christian

toron_go

Zitatattr SH08rt01 obj-i13020-type S16
attr SH08rt01 obj-i13021-type S16

Hallo Christian,
ja cool. Auf die Idee bin ich noch gar nicht gekommen.

Sobald es hier nicht mehr Dunkel ist ..... . Test also vermutlich erst 2025 :-/.


VG Toron

toron_go

#178
Hallo,

gerade mal ins Fhem Log geschaut und neue Fehler gefunden :

Zitat2024.12.01 17:01:37 3: 10.40.1.6:502 reappeared (SH06rt_Fast)
2024.12.01 17:01:38 3: SH06rt_Fast: QueueRequest queue too long (101), dropping new request
2024.12.01 17:01:38 3: SH06rt_Fast: QueueRequest queue too long (101), dropping new request
2024.12.01 17:01:38 3: SH06rt_Fast: QueueRequest queue too long (101), dropping new request
2024.12.01 17:01:38 3: SH06rt_Fast: QueueRequest queue too long (101), dropping new request
2024.12.01 17:01:38 3: SH06rt_Fast: QueueRequest queue too long (101), dropping new request
2024.12.01 17:01:38 3: SH06rt_Fast: QueueRequest queue too long (101), dropping new request
2024.12.01 17:01:38 3: SH06rt_Fast: QueueRequest queue too long (101), dropping new request
2024.12.01 17:01:38 3: SH06rt_Fast: QueueRequest queue too long (101), dropping new request
2024.12.01 17:01:38 3: SH06rt_Fast: QueueRequest queue too long (101), dropping new request
2024.12.01 17:01:50 3: SH06rt_Fast: QueueRequest queue too long (101), dropping new request


Da habe ich ja jetzt NULL Idee, kann mir da jemand einen Tipp geben .... ?

Mitte des Jahres (2024) wurde ich via App aufgefordert bei WR automaische Update zu erlauben, was ich getan habe. Jetzt finden ich im Web oder in der App nicht mal mehr den Punkt wo Update steht :-/ Gibts da eine neue App oder geht das App nur noch in der direkt Verbindung am Gerät via QR ?

VG Toron

tobmaster1985

"queue too long" deutet darauf hin, dass der Wechselrichter nicht mehr auf die Anfragen antwortet.

Entweder Netzerkkabel kurz aus- und wieder einstecken oder WR neustarten.