Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Sungrow WR SGH10RT erfolgreich mit MODBUS eingebunden

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    Sungrow WR SGH10RT erfolgreich mit MODBUS eingebunden

    This topic has been deleted. Only users with topic management privileges can see it.
    • P
      PeZi last edited by PeZi

      Ich habe mal versucht die einzelnen Leistungsdaten der Sungrow-App aus den verfügbaren Registern nachzubilden, komme dabei allerdings nicht wirklich weiter.
      Verfügbar sind ja zu den Leistungen folgende Informationen:

      Register:
      5016 Total DC power
      5600 DTSU666
      13007 Load power
      13009 Export power
      13021 Battery power
      13033 Total activ power

      sowie die Status-Bits aus Register 13000

      Bit 0 PV power
      Bit 1 Battery charging
      Bit 2 Battery discharging
      Bit 3 Positiv load power
      Bit 4 Feed in power
      Bit 5 Import power from grid
      Bit 6 Reserved
      Bit 7 Negativ load power

      Physikalisch stellt sich das dann so dar:
      Leistungsverlauf 2.png

      und wird in der App wie folgt angezeigt:
      Leistungsverlauf 1.png

      Wie zu sehen ist, passen die beiden Varianten hinsichtlich ihrer Daten nicht wirklich zusammen.
      Direkt zugeordnet werden können nur die Register 5016, 5600 und 13021.
      Die übrigen Register und Werte scheint der WR irgendwie intern zu ermitteln.
      Wichtig wäre zu wissen, wo die Werte 7 und 8 aus der ersten Zeichnung zu finden sind. Evtl. werden die ja in einem der anderen Register (13007, 13009 und 13033) ausgegeben. Aus den Namen dieser Register sind deren Inhalte, zumindest für mich, nicht eindeutig verständlich.

      Ich habe meinen bisherigen Erkenntnisstand mal in folgender Tabelle zusammengefasst und hoffe darauf, dass Ihr da etwas Licht in Dunkle bringen könnt und die noch leeren Feldern in den beiden unteren Tabellen entsprechend füllen könnt.

      f8a9b60f-3f7d-4430-b233-b1c9d3689d93-image.png

      Hier...
      https://noegel.io/posts/2022-10-09-sungrow/
      ... wurde bereits intensiv auf das Thema eingegangen. Das dort veröffentliche Skript habe ich auch im Einsatz, die angezeigten Werte sind teilweise nicht plausibel. Gerade der Bereich zwischen Batterie und Netz (Werte F und G) passt nicht.

      G 1 Reply Last reply Reply Quote 0
      • G
        GombersIOB @PeZi last edited by

        @pezi
        In dem Script der von Dir verlinkten Seite wird doch die Kalkulation durchgeführt:

        Wenn PV-Load (Reg 5016) größer als Hausverbrauch (Reg 13007) ist, dann kommt der Strom fürs Haus von der PV-Anlage, der Rest geht in die Batterie (wenn Batterie geladen wird) uns/oder den Export.
        Das stimmt zwar nicht ganz, denn es kann auch sein, dass Strom importiert wird (fürs Haus) und die PV-Anlage nur die Batterie lädt.

        P 1 Reply Last reply Reply Quote 0
        • S
          SaarlandUHU @GombersIOB last edited by

          @gombersiob
          Zurückstecken war leider nicht erfolgreich. LAN-Kabel steckt jetzt wieder am hinteren Port.

          G 1 Reply Last reply Reply Quote 0
          • G
            GombersIOB @SaarlandUHU last edited by

            @saarlanduhu
            Danke. Ich nutze beide Anschlüsse gleichzeitig, problemlos. Die Probleme, auch die Abbrüche, hatte ich bis die Liste der Ports stimmte. Seit einem Jahr ist aber alles in Ordnung.
            Über den WiNet-S-Anschluss habe ich den ioBroker angebunden, über den anderen frage mit einem eigenen Programm zyklisch die Register ab und schreibe sie als XML File weg - für spätere Auswertungen.

            1 Reply Last reply Reply Quote 0
            • P
              PeZi @GombersIOB last edited by PeZi

              @gombersiob
              Wenn Register 13007 den tatsächlichen Hausverbrauch darstellt, kann es sich dabei nur um einen berechneten Wert aus Daten des Wechselrichters und des Smartmeters handeln, da der im oberen Schema dargestellte Pfad 4 nicht direkt gemessen wird. Vielleicht ist es ja so, eine Bestätigung dazu habe ich jedoch nicht gefunden
              Was der WR aber wirklich messen könnte wären die Pfade 7 und 8 des Schemas.
              Die Pfade 5 und 6 stehen vorzeichenbehaftet im Register 13021, Pfade 9 und 10 ebenfalls vorzeichenbehaftet in Register 5600.
              Physikalisch betrachtet sind die logisch doppelt dargestellten Pfade 5/6, 7/8 und 9/10 jeweils nur ein Weg der die Leistung entweder nur in die eine oder andere Richtung transportiert.
              Wechselt man vom physikalischen Schema 1 ins logische Schema 2, können die dort dargestellten Werte der Pfade A bis K überwiegend nur aus den Registern und den Status-Bits berechnet werden.
              Mathematisch kein Problem wenn man die Werte der Pfade 1 bis 3 und 5 bis 10 kennt.

              Wenn die fehlenden Werte in den Registern 13009 und 13033 stecken bzw. daraus mit Hilfe der Statusbits ermittelt werden können, wären alle erforderlichen Daten verfügbar. (Die genaue Aussage der Bits 3 und 7 ist mit auch nicht klar...)
              Und genau darum geht es mit in meinen Posting: Was genau die Register 13007, 13009 und 13033 enthalten habe ich in keiner offiziellen Dokumentation von Sungrow gefunden.
              Da sich die Werte der Register schnell ändern und aufgrund der linearen Messabfolge keine zeitgleichen Messwerte ermitteln lassen, ist eine Herleitung auf Grundlage von Beobachtungen nicht sicher möglich.

              Auch bei leerer Batterie und ohne Einspeisung von den Panels (DC Seite also "stromlos") zeigen die Register 13007 positive und 13009 negative Werte, die hinsichtlich ihres Betrags etwa dem Wert aus Register 5600 entsprechen. Da der WR offensichtlich die Daten vom Smartmeter bei der Berechnung der Daten seiner eigenen Register berücksichtigt, waren die Daten von Register 5600 für eine eigene Auswertung ggf. nicht erforderlich und sollten auch aufgrund nicht-synchroner Messung nicht verwendet werden.

              Hier mal eine Momentaufnahme der o.g. Register (Der Wert von "Zähler" kommt von der Messeinrichtung des Versorgers):

              31a20814-a83a-4096-a726-5e192f13b97d-image.png

              Speziell Register 13033 zeigt nicht nachvollziehbare Werte (Gleiche Bedingungen wie wie oben, DC =0, gleiches Bitt-Setting):

              494a36fb-2e55-4a93-96ec-273ac2c11746-image.png

              Das würde nur Sinn machen, wenn im Haus eine weiter Stromquelle vorhanden ist (z.B. Balkonkraftwerk)

              B G 2 Replies Last reply Reply Quote 0
              • B
                berlinerbolle @PeZi last edited by

                Habe es hier beim Überfliegen nicht gefunden, daher mal für alle die es eventuell interessiert: es gibt inzwischen auch die Möglichkeit, die Batteriewerte über Modbus auszulesen, speziell den tatsächlichen (nicht den unter Berücksichtigung von Min/Max berechneten) SOC und vor allem die VMin/VMax Werte der einzelnen Batteriemodule.

                Die Batterie taucht (mit aktueller Firmware) aber als eigenes Modbus device auf (bei mir ID 200), im Modbus Adapter müsst ihr also "Multiple device IDs" angehakt haben. VORSICHT, dadurch ändern sich die Adressen der Datenpunkte, falls ihr das bisher nicht getan habt.

                Was vorher also zum Beispiel "modbus.2.holdingRegisters.13057_Max__SOC" war, wird dann zu "modbus.2.holdingRegisters.1.13057_Max__SOC" - mit allen entsprechenden Konsequenzen (Scripte müssen angepasst werden etc.).
                Eine Alternative wäre, eine zusätzliche Modbus Adapter Instanz für die Batterie zu erstellen, aber nach dem was man hört, mag der Sungrow mehrere Modbus Clients nicht so sehr.

                Eine tsv mit den entsprechenden Modbus Registern der Batterie findet ihr zum Beispiel hier - Batterieregister am Ende der Datei.

                1 Reply Last reply Reply Quote 0
                • G
                  GombersIOB @PeZi last edited by

                  @pezi

                  Vielleicht ist es ja so, eine Bestätigung dazu habe ich jedoch nicht gefunden

                  Ich habe die Interpretation für die Register weitgehend von @Atlantis übernommen. Das Register 5601 (Offset 5600) sagt mir auch gar nichts.

                  In der Dokumentation steht zu 13008 (Offset 13007) "Power consumed by loads". Wer soll den Strom denn konsumieren anstatt der Verbraucher ds Hauses?
                  Zu Register 13010 (Offset 13009) steht eindeutig: "Power delivered by the inverter to power grid". Ich denke, das ist es.
                  Dass Zähler und Register nicht übereinstimmen ist vermutlich erwartbar. Das sind halt Anzeigen zu einer bestimmten Zeit und mit der jeweiligen Messgenauigkeit und Messmethode. Ob das Alles immer gleich ist würde ich doch bezweifeln wollen.

                  Auch bei leerer Batterie und ohne Einspeisung von den Panels (DC Seite also "stromlos") zeigen die Register 13007 positive und 13009 negative Werte

                  Das stimmt doch wohl auch so. Das Haus speist nie ein, sondern verbraucht nur (könnte vielleicht mit einem zusätzlichen Balkonkraftwerk anders sein? Keine Ahnung. Aber es ist ein signed value, das bringt mich auf die Idee). Und 13009 wird negativ bei Import (was bei Dunkelflaute wohl notwendig ist) und ist positiv bei Export (wenn die Panels arbeiten).

                  G 1 Reply Last reply Reply Quote 0
                  • G
                    GombersIOB @GombersIOB last edited by

                    @gombersiob said in Sungrow WR SGH10RT erfolgreich mit MODBUS eingebunden:

                    Das Register 5601 (Offset 5600) sagt mir auch gar nichts.

                    Kannst Du mir einen Link auf die Beschreibung geben?

                    G 1 Reply Last reply Reply Quote 0
                    • G
                      GombersIOB @GombersIOB last edited by

                      @gombersiob

                      Ich habe jetzt zumindest die Erklärung gefunden. Register 13008 und 5601 (immer Offset -1) zeigen bei einem WR immer "dass gleiche an" (innerhalb technicher Toleranzen) nämlich den Hausverbrauch. Die unterscheiden sich erst be mehreren WRs - dann zeigt 13007 nur die Werte des aktuellen WRs an, während 5601 (das Modbus-Register der EVU) die Gesamtleistung anzeigt.

                      Das habe ich der Diskussion im Photovoltaikforum entnommen.

                      P 1 Reply Last reply Reply Quote 0
                      • P
                        PeZi @GombersIOB last edited by PeZi

                        @gombersiob
                        Die Quelle finde für die Register finde ich nicht mehr. Aber hier sind die Einträge aus meiner Modbus-Instanz zum DTSU666:

                        5ce74f1a-aeb2-4c4e-af73-f70ff49950eb-image.png

                        Die von Sungrow ausgelieferten DTSU666 haben wohl eine Sungrow-spezifische Firmware, sodass die entsprechenden Register direkt über den Modbus verfügbar sind. Es gibt zum DTSU noch mehr Register, die z.B. die Ströme der einzelnen Phasen anzeigen.

                        Näheres dazu hier:
                        https://www.photovoltaikforum.com/thread/158136-sungrow-sammelthread-produktmanagement/?postID=2697060#post2697060

                        Nur um Missverständnisse zu vermeiden: Nach meinem Verständnis beschreibt der Hausverbrauch die Leistung, die im Haus "verbraucht" wird. Der Wert ist daher immer positiv. Der Hausverbrauch kann mit dem Standardaufbau des Systems nicht direkt gemessen werden (Pfad 4 in der physikalischen Darstellung). Register 13007 könnte einen entsprechend berechneten Wert haben.

                        Register 5600 zeigt eindeutig den vorzeichenbehafteten Leistungsfluss vom/zum Netz (Pfad 3)
                        Die in meinen System angezeigten Regsiterwerte lassen den Schluss zu, dass Register 5600 eher 13009 mit umgekehrten Vorzeichen entspricht.

                        Wenn Register 13009 negativ ist (5600 positiv), entspräche das Strompfad 10, positive Werte von 13009 (5600 negativ) dementsprechend Strompfad 9. Der jeweils andere ist dann natürlich 0.

                        Bleiben immer noch die Strompfade 7 und 8 zu klären, für die es ja eine Messung im WR geben müsste...

                        Hast Du eine verständliche Erklärung zu den Bits 4 und 7?

                        G 1 Reply Last reply Reply Quote 1
                        • G
                          GombersIOB @PeZi last edited by

                          @pezi
                          Die Registerbelegung ist bei meinem DTSU666 mit Sicherheit völlig anders. Die Adressen 5746 und 5748 lassen sich gar nicht abfragen, die anderen lieferen meist negative Werte und völlig unplausibel. Muss mal schauen, es scheint, dass unterschiedliche Typen verbaut wurden.

                          Nach meinem Verständnis beschreibt der Hausverbrauch die Leistung, die im Haus "verbraucht" wird. Der Wert ist daher immer positiv.

                          das sagte ich doch

                          Die in meinen System angezeigten Registerwerte lassen den Schluss zu, dass Register 5600 eher 13009 mit umgekehrten Vorzeichen entspricht

                          Es ist halt die Frage, ob die von Dir angenommene Registerbelegung der DTSU666 tatsächlich stimmt. Das würde ich annehemn, bevor ich die Dokumentation von Sungrow in Frage stellen würde. Ihre Annahme scheint aber auch für mich zu stimmen.
                          Habe mal diesen Screenshot gerade von meinen Werten gezogen:
                          ca111635-daa1-499a-b036-6cb6de300620-grafik.png

                          Bleiben immer noch die Strompfade 7 und 8 zu klären, für die es ja eine Messung im WR geben müsste.

                          Dieser aktuelle Strom interessiert mich selber nicht wirklich. Ich schau mal drauf und versuche, meist erfolgreich, zu verstehen, wieso der Wert gerade wieder so hoch ist. Mir reicht die Annahme, dass Sungrow versteht, wie die Daten in 13007 und 13009 zustande kommen. Zusammen bilden sie die Strecke vom Vertreiler zum Wechselrichter ab. Ich könnte mir vorstellen, dass sie dazu sogar die DTSU666 abfragen. Aber es ist mir eigentlich auch egal. Denn sobald ich sie sehe, sind sie ja auch schon Vergangenheit. Wesentlich sind mir die statistischen Werte, weil die mir bei der Planung helfen.

                          So sieht meine Auswertung durch ioBroker aus:
                          7f29ba77-0bee-4d6e-9bed-a3d3052da042-grafik.png

                          Hast Du eine verständliche Erklärung zu den Bits 4 und 7?

                          Die habe ich bisher nicht wirklich beachtet.
                          Bit4: Feed-in power -> ist ja semantisch klar. Aber was mir das bringt, leuchtet mir nich unmittelbar ein. Ich schau mir das mal genauer an.
                          Bit7; load power - Das könnte die Abriegelung der PV-Anlage anzeigen. Zum Beispiel durfte sie ja bis 2023 nur 70% der möglichen Kapazität einspeisen, musste also abscalten

                          P 1 Reply Last reply Reply Quote 0
                          • P
                            PeZi @GombersIOB last edited by

                            @gombersiob
                            Hab mich technisch nicht richtig ausgedrückt und meinte natürlich die Leistungspfade 7 und 8. Wenn die Daten in 13007 und 13009 diese Werte abbilden würden, wären alle Werte im physikalischen Schema mit Ausnahme des Hausverbrauchs definiert, da man diesen ja aus den anderen Werten berechnen kann.
                            Leider ist es aber nicht so, beide Register sind vorzeichenbehaftet und ergeben in Summe den Inhalt von Register 13033.
                            Ich werde jetzt mal alle Daten einige Zeit loggen und visualisieren. Dann sollten die Beziehungen sichtbar werden...

                            1 Reply Last reply Reply Quote 0
                            • P
                              PeZi last edited by

                              Kurzer Zwischenstand:
                              Ich habe die Register für verschiedene Betriebsstati geloggt und eine Auswertung gemacht. Damit sind die Werte der Register eindeutig erkennbar.
                              Auf die Werte des DTSU (Register 5600) kann und sollte man verzichten, da diese zwar im Mittelwert recht genau passen, für Momentaufnahmen der Leistungswerte aber zu sehr abweichen.
                              Ich werde für die Ermittlung meiner Verbrauchswerte (Einspeise- und Bezugsarbeit) die Werte des EVU-Zählers verwenden, da diese abrechnungstechnisch die Wahrheit sind.

                              Ergebnisse in nachstehendem Dokument...

                              Auswertung Sungrow Messungen.pdf

                              1 Reply Last reply Reply Quote 0
                              • P
                                PeZi last edited by PeZi

                                mittlerweile sind die Berechnungen fast fertig, der Teufel steckt aber wie immer im Detail.
                                Ich habe auch festgestellt, dass einige meiner früheren Annahmen falsch waren 😞
                                Hier schon mal eine Animation, wie sich die Leistungsverläufe im physikalischen und im logischen Schema darstellen:

                                Animation.gif

                                Ein paar kleinere Fehler sind im logischen Schema noch drin, die gehe ich aber in den nächsten Tagen auch noch an.
                                Ggf. sind es auch nur Rundungsfehler, wie das eine Watt, dass da immer mal zwischen Batterie und Netz angezeigt wird.

                                1 Reply Last reply Reply Quote 0
                                • Latzi
                                  Latzi last edited by

                                  Ich habe den WR soweit erfolgreich eingebunden und er läuft auch über Modbus fehlerfrei. Jedoch gelingt es mir nicht die beiden Register 12999 und 13029 zum Leben zu erwecken (es kommt nur einmalig 0 und danach wird der DP nicht mehr aktualisiert). Mit einem von beiden könnte ich den Netzausfall erkennen und im Backup-Betrieb unnötige Verbraucher wegschalten, doch leider klappt's bei keinem 😞

                                  Hat jemand von euch die Register in Verwendung? Falls ja, sieht die Definition bei euch auch so aus?

                                  _address	name	description	unit	type	len	factor	offset	formula	role	room	cw	isScale
                                  12999	System_state	Systemzustand		uint16be	1	1	0		value		false	false
                                  13029	Grid_state	Netzstatus		uint16be	1	1	0		value		false	false
                                  

                                  Für sachdienliche Hinweise wäre ich äußerst dankbar 😉

                                  B 1 Reply Last reply Reply Quote 0
                                  • B
                                    berlinerbolle @Latzi last edited by

                                    @latzi

                                    Keine direkte Antwort, aber ich benutze dafür die 5035 - Grid Frequency.

                                    Latzi 1 Reply Last reply Reply Quote 0
                                    • Latzi
                                      Latzi @berlinerbolle last edited by

                                      @berlinerbolle
                                      cool, Danke! Welchen Wert nimmt der DP bei Netzausfall an?

                                      B 1 Reply Last reply Reply Quote 0
                                      • M
                                        markus397 last edited by

                                        Gibt es eigentlich einen schreibbaren datenpunkt um den Backupmodus ein und auszuschalten? Die Backup Reserve kann man ja ändern.

                                        1 Reply Last reply Reply Quote 0
                                        • B
                                          berlinerbolle @Latzi last edited by berlinerbolle

                                          @latzi

                                          Ich meine dass es "0" ist, bin mir aber nicht mehr sicher. Ich prüfe auf einfach auf <45 Hz.

                                          @markus397

                                          Das geht über 13074 - Off grid option. Wert 170 = Netzunabhängig ja (also Backup ein), Wert 85 = Netzunabhängig nein.

                                          P.S.: Ich habe hier meine Modbus Register abgelegt (frage aber nicht alle ab, und ein paar funktionieren nicht - muss mal aufräumen):

                                          https://github.com/c0ldtech/sungrow

                                          Ist aber mit "Multiple device IDs" um den Chint Stromzähler abfragen zu können. Also nicht einfach importieren, falls ihr nicht "Multiple device IDs" im Modbus Adapter angehakt habt.

                                          1 Reply Last reply Reply Quote 0
                                          • P
                                            PeZi last edited by PeZi

                                            View und Skript zur Animation sind jetzt fertig. Ich stelle sie hier mal ein, vielleicht kann ja jemand etwas davon nutzen.

                                            Beispiel.gif

                                            Im linken Schema ist der WR an das Netz angebunden. Hintergrund dafür: Wenn der WR eingeschaltet ist (blaues Dauerlicht), die Batterie leer ist und die PV wenig oder kein Strom liefert, wird die Verlustleistung des WR aus dem Netz gezogen. Hier sind u.a. morgens nach dem Hochfahren Leistungen > 50W zu beobachten. Sichtbar sind diese Leistungen dann im Register 13033 (Zeigt den Leistungsfluss zwischen Verteilung und Wechselrichter).

                                            Das blaue Quadrat im WR zeigt einige der möglichen Betriebszustände auf Basis des Registers 12999.
                                            Realisiert ist die Anzeige mit einem basic-HTML Widget und folgendem Binding in der CSS Klasse:

                                            {wert:modbus.0.inputRegisters.12999_System_State; wert==32? "blinkingtext": wert==16? "blinkingtext": wert==8? "blinkingtext": ""}
                                            

                                            Hier die View:

                                            View PV Grafik.txt

                                            und das Skript:

                                            'use strict' //strikten Modus aktivieren
                                            
                                            // Änderung: Berechnung nicht über on() starten sondern über setIntervall
                                            // siehe hier: https://www.javascript-kurs.de/javascript-window-setInterval.htm
                                            
                                            function bitsDecodieren(dec, bitPosition) {
                                                return (dec & (1 << bitPosition)) === 0 ? false : true;
                                            }
                                            
                                            //on({id: 'modbus.0.inputRegisters.13007_Load_Power', change: 'any'}, function(obj) { //Bei jedem Zugriff auf das Register
                                            // on({id: 'smartmeter.0.1-0:16_7_0__255.value', change: 'any'}, function(obj) { //Bei jedem Zugriff auf das Register
                                            
                                            setInterval( //alle 3 Sekunden
                                            function(){
                                            
                                                // Aktuelle Leistungen Laden 
                                                    let RegisterInhalt = (getState('modbus.0.inputRegisters.13000_Running_State')).val;
                                                    let Z_LeistungVonPV = bitsDecodieren(RegisterInhalt, 0);
                                                    let Z_BatterieLaden = bitsDecodieren(RegisterInhalt, 1); // ("Z" wie Zustand)
                                                    let Z_BatterieEntladen = bitsDecodieren(RegisterInhalt, 2); // ("Z" wie Zustand)
                                                    let Z_LastAktiv = bitsDecodieren(RegisterInhalt, 3);
                                                    let Z_Stromeinspeisung = bitsDecodieren(RegisterInhalt, 4);
                                                    let Z_Strombezug = bitsDecodieren(RegisterInhalt, 5);
                                                    let Z_StromAusLastErzeugen = bitsDecodieren(RegisterInhalt, 7);       
                                                    let LadestandBatterie = getState("modbus.0.inputRegisters.13022_Batterie_level").val;
                                                    let P_PV = getState("modbus.0.inputRegisters.5016_Total_DC-Power").val;     // Pfad "H" im logischen Schema
                                                    let P_Haus = getState("modbus.0.inputRegisters.13007_Load_Power").val;      // Pfad "I" im logischen Schema
                                                    let P_Netz = getState("modbus.0.inputRegisters.13009_Export_Power").val;    // Pfad "K" im logischen Schema
                                                    let P_BatterieABS = getState("modbus.0.inputRegisters.13021_Battery_Power").val; //Absolutwert des Batteiestroms (Vorzeichenlos)
                                                    let P_AktivGesamt = getState("modbus.0.inputRegisters.13033_Total_Active_Power").val;
                                                    let P_Batterie = (Z_BatterieLaden ? P_BatterieABS * -1 : P_BatterieABS);    // Pfad "J" im logischen Schema  Vorzeichenbehafteter Batteriestrom (+für Laden, - für Entladen)
                                                    let P_BatterieEntladen = (Z_BatterieEntladen ? P_BatterieABS : 0); // Absoluter BatterieENTLADEstrom (Pfad "e" im physikalischen Schema)
                                                    let P_BatterieLaden = (Z_BatterieLaden ? P_BatterieABS : 0); // Absoluter BatterieLADEstrom (Pfad "f" im phsikalischen Schema)
                                                    let P_UVZuWR = ((P_AktivGesamt < 0) ? P_AktivGesamt * -1 : 0); // (Pfad "h" im physikalischen Schema), Achtung: h ist negativ!
                                                    let P_PVZuBatterie = 0;
                                            
                                                    if (P_PV > 0) {
                                                        P_PVZuBatterie = P_UVZuWR + P_BatterieLaden;
                                                    }; 
                                            
                                                    let P_NetzZuUV = ((P_Netz < 0) ? P_Netz * -1 : 0); // (Pfad "j" im physikalischen Schema)
                                                    let P_WRVerlust = 0;
                                                    if (P_PV == 0 && P_BatterieABS == 0) {
                                                        P_WRVerlust = -P_AktivGesamt;
                                                    }; 
                                            
                                                    let P_NetzZuHaus = (P_NetzZuUV - P_UVZuWR); // Leistung vom Netz zum Haus (Pfad "E" im logischen Schema)
                                                    let P_NetzZuBatterie  = (Z_BatterieLaden ? P_UVZuWR : 0); // Batterie Laden aus Netz (Pfad "G" im logischen Schema)
                                                    let P_PVZuHaus = 0;
                                                    let P_PVZuNetz = 0;
                                                    let P_BatterieZuHaus = 0;
                                                    let Rest = 0;
                                                    
                                                    if (P_PV > P_Haus) {
                                                        P_PVZuHaus = P_Haus-P_NetzZuHaus; // Wenn PV-Leistung größer als Hausbedarf, wird der Hausbedarf abzüglich der Ausgleichsleistungen aus dem Netz vollständig aus der PV gedeckt 
                                                        Rest = (P_PV - P_PVZuHaus); // Der Rest wird weiter verteilt
                                                        if (Rest > P_PVZuBatterie) {
                                                            P_PVZuNetz = Rest - P_PVZuBatterie;
                                                        }
                                                        // Diese IF- Abfragen müssen noch überprüft werden...
                                                    }
                                                    else {
                                                        if (P_PV > 0) {
                                                            P_PVZuHaus = P_PV;
                                                        }
                                                        else{
                                                            P_PVZuHaus=0;
                                                        }
                                                    }
                                            
                                                    if ((P_PVZuHaus + P_NetzZuHaus) < P_Haus) {
                                                        if (P_BatterieEntladen > 0){
                                                        P_BatterieZuHaus = P_Haus - P_PVZuHaus-P_NetzZuHaus;
                                                        }
                                                        else {
                                                            P_BatterieZuHaus = 0;
                                                        }
                                                    }
                                                    else{
                                                        P_BatterieZuHaus = 0;
                                                    }
                                            
                                                    let P_BatterieZuNetz = 0;
                                                    if ((P_BatterieEntladen>1) && (P_AktivGesamt>P_Haus)){
                                                        P_BatterieZuNetz = -P_Netz;    
                                                    }
                                                    else {
                                                        P_BatterieZuNetz = (P_BatterieEntladen - P_BatterieZuHaus); //Pfad "F" im logischen Schema
                                                    }
                                            
                                                    setState("0_userdata.0.PV.P_PV.LadestandBatterie", LadestandBatterie, true);
                                                    setState("0_userdata.0.PV.P_PV.P_13033", P_AktivGesamt, true);
                                                    setState("0_userdata.0.PV.P_PV.P_BatterieEntladen", P_BatterieEntladen, true);  // Pfad "e" im physikalischen Schema
                                                    setState("0_userdata.0.PV.P_PV.P_BatterieLaden", P_BatterieLaden, true);        // Pfad "f" im physikalischen Schema
                                                    setState("0_userdata.0.PV.P_PV.P_PVZuBatterie", P_PVZuBatterie, true);          // Pfad "A" im logischen Schema
                                                    setState("0_userdata.0.PV.P_PV.P_PVZuHaus", P_PVZuHaus, true);                  // Pfad "B" im logischen Schema
                                                    setState("0_userdata.0.PV.P_PV.P_PVZuNetz", P_PVZuNetz, true);                  // Pfad "C" im logischen Schema
                                                    setState("0_userdata.0.PV.P_PV.P_BatterieZuHaus", P_BatterieZuHaus, true);      // Pfad "D" im logischen Schema
                                                    setState("0_userdata.0.PV.P_PV.P_NetzZuHaus", P_NetzZuHaus, true);              // Pfad "E" im logischen Schema
                                                    setState("0_userdata.0.PV.P_PV.P_BatterieZuNetz", P_BatterieZuNetz, true);      // Pfad "F" im logischen Schema
                                                    setState("0_userdata.0.PV.P_PV.P_NetzZuBatterie", P_NetzZuBatterie, true);      // Pfad "G" im logischen Schema
                                                    setState("0_userdata.0.PV.P_PV.P_PV", P_PV, true);                              // Pfad "H" im logischen Schema
                                                    setState("0_userdata.0.PV.P_PV.P_Haus", P_Haus, true);                          // Pfad "I" im logischen Schema        
                                                    setState("0_userdata.0.PV.P_PV.P_Batterie", P_Batterie, true);                  // Pfad "J" im logischen Schema    //Vorzeichenbehaftet
                                                    setState("0_userdata.0.PV.P_PV.P_Netz", P_Netz, true);                          // Pfad "K" im logischen Schema
                                                    setState("0_userdata.0.PV.P_PV.P_WRVerlust", P_WRVerlust, true);                // Verlustleistung des Wechselrichters
                                            
                                            }, 3000)
                                            
                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            1.0k
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            hardware sungrow sgh10rt modbu
                                            130
                                            857
                                            247470
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo