Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Growatt Wechselrichter über Modbus auslesen - gelöst -

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Growatt Wechselrichter über Modbus auslesen - gelöst -

    This topic has been deleted. Only users with topic management privileges can see it.
    • smartboart
      smartboart @Wiednitz last edited by

      @Wiednitz ja kann sein das es nichts bringt....Hab mal MQTT in esp link deaktiviert, ändert aber auch nix....über MQTT frage ich hier nur die Verbindung ab....

      Falls du interesse hast hier mal ein Script für die Berechnung gesamtzeit und Ersparnis... Sowie eins zur Überwachung der Anlage

      /* Skript berechnet Tagesersparnis / Ertrag , Gesamtersparnis / Ertrag sowie die
      Gesamtlaufzeit*/
      
      // Anlegen der States für Vis
      createState('javascript.0.Messwerte.PV_Huette.Ertrag_Heute',{read: true,write: true,desc: "Errsparnis PV Anlage Heute",type: "number",def:0, unit: "EUR"});
      createState('javascript.0.Messwerte.PV_Huette.Ertrag_Gesamt',{read: true,write: true,desc: "Ersparnis PV Anlage Gesamt",type: "number",def:0, unit: "EUR"});
      createState('javascript.0.Messwerte.PV_Huette.Laufzeit',{read: true,write: true,desc: "Betriebsstundenzähler",type: "number",def:0, unit: "h"});
      
      //Variablen
      var logging = true; // true = log aktivieren / false = log deaktivieren
      var Ersparnis = 0.31; //Strompreis für  kw/h in € hier eintragen
      
      //Konstante
      const idErtragHeute = 'modbus.1.inputRegisters.30028Erzeugte_Leistung heute'/*Erzeugte Leistung heute*/;
      const idErtragGesamt = 'modbus.1.inputRegisters.30030Erzeugte_Leistung gesamt'/*Erzeugte Leistung gesamt*/;
      
      const idErsparnisHeute = 'javascript.0.Messwerte.PV_Huette.Ertrag_Heute';   
      const idErsparnisGesamt = 'javascript.0.Messwerte.PV_Huette.Ertrag_Gesamt'; 
      
      const idLaufzeitLow = 'modbus.1.inputRegisters.30032Laufzeit_low'/*Laufzeit gesamt*/;
      const idLaufzeitHigh = 'modbus.1.inputRegisters.30031Laufzeit_high'/*Laufzeit gesamt*/;
      const idLaufzeit = 'javascript.0.Messwerte.PV_Huette.Laufzeit';
      
      //Funktion Laufzeit berechnen
      function BerechnenLaufzeit() {
      if(logging)log("Gesamtlaufzeit Wechselrichter berechnet"); 
      var High = getState(idLaufzeitHigh).val;
      var Low = getState(idLaufzeitLow).val;
      var Lafzeit = getState(idLaufzeit).val
      setState(idLaufzeit,High*18.203+Low/3600)
      }
      
      
      //Funktion Ertrag in € heute berechnen
      function BerechnenHeute() {
      if(logging)log("Tagesstrom Ertrag berechnet"); 
      var ErtragHeute = getState(idErtragHeute).val;  
      if(ErtragHeute>0)setState(idErsparnisHeute,ErtragHeute*Ersparnis,true);
      }
      
      // Funktion Ertrag in € Gesamt berechnen
      function BerechnenTotal(){
      if(logging)log(" Gesamtstrom Ertrag  berechnet ");
      var ErtragGesamt = getState(idErtragGesamt).val;
      setState(idErsparnisGesamt,ErtragGesamt*Ersparnis,true);
      }
      
      // Scriptstart
      BerechnenHeute();
      BerechnenTotal();
      BerechnenLaufzeit();
      
      // Trigger Berechnen Ertrag in € heute
      on(idErtragHeute, function(obj) {
          if(logging)log(" Trigger Ertrag Heute Ersparnis berchnen ");
          BerechnenHeute();
      });
      
      // Trigger Berechnen Ertrag in € Gesamt
      on(idErtragGesamt, function(obj) {
          if(logging)log(" Trigger Ertrag Gesamt Ersparnis berchnen ");
          BerechnenTotal();
      });
      
      // Trigger High zum Berechnen Laufzeit gesamt
      on(idLaufzeitHigh, function(obj) {
          if(logging)log(" Trigger High Laufzeit berchnen ");
          BerechnenLaufzeit();
      });
      
      // Trigger Low zum Berechnen Laufzeit gesamt
      on(idLaufzeitLow, function(obj) {
          if(logging)log(" Trigger Low Laufzeit berchnen ");
          BerechnenLaufzeit();
      });
      
      // Telegramm schickt Pushnachricht bei Sicherungsfall PV Einspeisung oder Inverterstörung Gartenhuette
      
      var logging = true; // log aktivieren deaktivieren
      
      // Konstanten
      const id1 = 'sonoff.0.Wemo_Huette.POWER6'/*Sicherung PV Einspeisung*/;
      const id2 = 'modbus.1.inputRegisters.30001Inverter_Status'/*Inverter Status*/
      
      const id3 = 'javascript.0.Vis.Stoermeldung_PV_Huette'/*Störung PV Anlage Huette Status*/;
      
      // Funktion Auslösen der Einspeisesicherung
      function FuseAlarm(){
      sendTo("telegram.0", "send", {text: 'Achtung: Störung PV Anlage Gartenhuette, Einspeisesicherung hat ausgelöst '});
      setState('fullybrowser.0.192_168_1_53.Commands.textToSpeech'/*textToSpeech*/, 'Achtung Sicherungsfall Wechselrichter Gartenhuette ');
      if (logging) log ('Sicherungsfall Wechselrichter Garten Hütte');
      setState(id3,true);
      }
      
      // Funktion Inverter Alarm
      function InverterAlarm(){
      sendTo("telegram.0", "send", {text: 'Achtung: Störung PV Anlage Gartenhuette, Inverter Störung '});
      setState('fullybrowser.0.192_168_1_53.Commands.textToSpeech'/*textToSpeech*/, 'Achtung  Wechselrichter Gartenhuette Stoerung ');
      if (logging) log ('Wechselrichter Gartenhuette Störung ');
      setState(id3,true);
      }
      
      // Funktion Alarm Reset wenn Fehler behoben
      function StoerungReset(){
      var Stoerung = getState (id3).val;
      var Fuse =  getState(id1).val;
      var Inverter = getState (id2).val;
      if(Stoerung && Fuse && Inverter <3){
      sendTo("telegram.0", "send", {text: ' Störung PV Anlage Gartenhuette zurück gesetzt '});
      setState (id3,false);
      if (logging) log ('Störung PV Anlage Gartenhütte zurück gesetzt');
      }
      }
      
      //Skriptstart
      setState (id3,false);
      
      //Trigger
      on({id:id1,val:false,change:'ne'},function(dp){
         FuseAlarm();
      });
      
      on({id:id2,val:3,change:'ne'},function(dp){
         InverterAlarm();
      });
      
      on({id:id1,val:true,change:'ne'},function(dp){
         StoerungReset();
      });
      
      on({id:id2,val:0,change:'ne'},function(dp){
         StoerungReset();
      });
      
      on({id:id2,val:1,change:'ne'},function(dp){
         StoerungReset();
      });
      
      Wiednitz 1 Reply Last reply Reply Quote 0
      • Wiednitz
        Wiednitz @smartboart last edited by

        @smartboart

        Ja den Ertrag in Euro wollte ich mir auch noch mal im VIS anzeigen lassen.
        0,31 Cent/kWh bedeutet, dein Versorger kennt deine Anlage nicht ? 😏

        Den Status vom Inverter lasse ich mir auch per Telegram mitteilen bei Änderung. Aber für mehr Überwachung hast du noch andere Komponenten verbaut !?

        smartboart 2 Replies Last reply Reply Quote 0
        • smartboart
          smartboart @Wiednitz last edited by

          @Wiednitz ja ich habe eine Einspeisesicherung mit Überwachunskontakt. Wenn die Sicherung fällt bekomme ich das Drahtbruchsicher mit. Liegt auf nem GPIO als Input von nem Wemo.

          1 Reply Last reply Reply Quote 0
          • smartboart
            smartboart @Wiednitz last edited by

            @Wiednitz bastle noch an einem Amotisierungsscript...kommt dann noch ins 1. mit rein.

            Wiednitz 1 Reply Last reply Reply Quote 0
            • Wiednitz
              Wiednitz @smartboart last edited by

              @smartboart

              Ja das hatte ich ebenfalls vor, Investition minus Ertrag, die 0 dauert aber ein paar Jahre.

              Eine Einspeisesicherung habe ich nicht, andererseits gibt der Shinestick über die App Bescheid, wenn was nicht läuft. Seit 21.08 aber noch keine Fehler gehabt.

              Aus welcher Gegend kommst du eigentlich ?

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

                Ja für mich war die Anlage eher ein Einstieg. Was zum Informieren...Beim Machen mal sehen worauf es ankommt. Als Meister Elektrotechnik darf ich sowas zwar bauen, arbeite aber in der Industrie eher im Bereich Maschinenbau Software Elektronik. Will einfach auf dem laufenden bleiben. War mal 5 Jahre Projektleiter in der hochverfügbaren Stromversorgungs Branche Rechenzentrum USV Notstromanlagen usw. Im Sommer bzw. wenn wieder gefördert wird will ich ne richtige Anlage mit Batterie bauen. Am Besten ganz ohne Anbindung ans Stromnetz...Die Kostenersparnis war dabei nicht relevant für mich... Komme aus Hessen....und du?

                Wiednitz 1 Reply Last reply Reply Quote 0
                • Wiednitz
                  Wiednitz @smartboart last edited by

                  @smartboart

                  Jo bei mir ähnlich, einfach mal ausprobieren und wenn man selber installiert, ist das finanziell überschaubar, ich hab da keine Scheu, auch wenn ich nur Geselle im Handwerk bin. Hab das ganze Haus selbst saniert, war eine Ruine mit Stand Anfang des 20. Jahrhunderts.
                  Erweitern will ich aber eigentlich nicht, das rechnet sich dann irgendwie nicht, vielleicht ändert sich das aber noch. Habe derzeit 4x 310 Wp.

                  Komme aus dem Nordosten Sachsens, südlich von Hoyerswerda.

                  smartboart 1 Reply Last reply Reply Quote 0
                  • smartboart
                    smartboart @Wiednitz last edited by

                    @Wiednitz
                    ja ich habe damit meine beiden Gartenhütten Flachdach mit hässlich Bitumen zugepflastert, mir gings vermehrt auch darum dass dass nen Guck hat wenn ich aus dem Fenster schaue. Habe 6 Strings parallell mit jeweils 5 Panels. Komme auf das 5 fache der Wechselrichter Leistung. Wird aber nie der Fall sein weil Ausrichtung suboptimal und im Schatten. Wenn mal 1000Watt durchgehen würde mich das sehr wundern.

                    Wiednitz 1 Reply Last reply Reply Quote 0
                    • Wiednitz
                      Wiednitz @smartboart last edited by

                      @smartboart

                      6x5 Panels und du erwartest nur 1000 Watt in der Spitze ????

                      Im August und September hatte ich bei Sonne gut 1000 Watt, 7kwh Ernte am Tag, Ausrichtung SSW. Der Growatt arbeitet da an der Grenze. Habe aber beobachtet, das der Inverter an der Leistungsgrenze den besten Wirkungsgrad hat, etwa 97 Prozent. Bei 100 Watt sind es nur 90 Prozent.

                      smartboart 1 Reply Last reply Reply Quote 0
                      • smartboart
                        smartboart @Wiednitz last edited by

                        @Wiednitz ja, aber meine panels liegen alle flach auf dem Flachdach und ersetzten quasi die Dachpappe. Beide Dächer sind voll verschattet und haben zu unterschiedlichen Tageszeiten nur Sonne . Keine Neigung. Nach Sonnenstandsberechnung ist immer nur ein drittel aktiv und das nur zu einem geringen Prozentsatz. Die Panels habe ich günstig von einem Solarpark erworben und haben auch nicht mehr volle Leistung... Wie gesagt it ein Lernprojekt. Habe alles berechnet und werde dann in der Praxis sehen ob die Berechnungen stimmen.

                        smartboart 1 Reply Last reply Reply Quote 0
                        • smartboart
                          smartboart @smartboart last edited by smartboart

                          jeder Strang ist einzeln abgesichert und Sperrdioden verhindern Hotpots bzw. Rückstrom in verschattete Anlagenteile. Über Schütze können bei Bearf strings zu oder weggeschaltet werden. Deshalb die States in IO Broker.... Und die einzige Größe die einen Inverter grillt ist die Spannung. Was er kann zieht er halt an Leistung. Die zulässige Spannung wird nicht überschritten. Ist halt ne Studie....für die in zukunft geplante Anlage .

                          Wiednitz 1 Reply Last reply Reply Quote 0
                          • Wiednitz
                            Wiednitz @smartboart last edited by

                            @smartboart

                            Aha flach und beschattet, da ist es verständlich. Meine kann ich manuell dem Sonnenstand nachführen. Und die richtige Anlage hat dann einen besseren Standort ?

                            Das nur die Spannung der Anlage schaden kann ist bekannt, allerdings wird der Inverter bei Volllast auch gut warm, an die 40 Grad. Da ist die Frage, wie die Komponenten altern. Sperrdioden sollen heutige Panels ja schon integriert haben, wie ich gelesen habe !?

                            smartboart 1 Reply Last reply Reply Quote 0
                            • smartboart
                              smartboart @Wiednitz last edited by smartboart

                              @Wiednitz Bypassdioden haben die drinne....Sperrdioden? weiß ich nicht...meine jedenfalls nicht...sind aber auch schon Altere...

                              Nachführung it cool!

                              Ja die Richtige kommt auf Satteldach...Hat ne ideale Ausrichtung und Neigung...

                              Wiednitz 1 Reply Last reply Reply Quote 0
                              • Wiednitz
                                Wiednitz @smartboart last edited by

                                @smartboart

                                Nagut kann sein, ich verwechsle die Diodenart. Hab mal bei Sonne mit der Hand so ein Feld auf einem Panel abgedeckt, da ist die Leistung 100 Watt abgefallen......

                                smartboart 1 Reply Last reply Reply Quote 0
                                • smartboart
                                  smartboart @Wiednitz last edited by

                                  @Wiednitz Ja dafür sind die Bypassdioden, dass dann trotzdem noch was aus dem string kommt. Wären die nicht drinne, wäre der ganze String weg.

                                  Wiednitz 1 Reply Last reply Reply Quote 0
                                  • Wiednitz
                                    Wiednitz @smartboart last edited by

                                    @smartboart

                                    Naja bei 4 Panels hab ich ja nur einen String ^^

                                    smartboart 1 Reply Last reply Reply Quote 0
                                    • smartboart
                                      smartboart @Wiednitz last edited by smartboart

                                      @Wiednitz dann brauchst auch keine sperrdiode...1 String ist bei dem inverter aber auch ideal, hat ja auch nur einen MPP Tracker.

                                      Wiednitz 1 Reply Last reply Reply Quote 0
                                      • Wiednitz
                                        Wiednitz @smartboart last edited by Wiednitz

                                        @smartboart

                                        Mal Off topic Growatt, du scheinst ja wesentlich mehr Ahnung zu haben, was Scripte angeht. Ich versuche meiner IPcam je nach Tageszeit verschiedene Positionen zuzuweisen. Das versuche ich per Astrozeit. Jedoch scheint das hinter "sonst" nicht ausgeführt zu werden. Wo ist der Fehler ? Hab mein Blockly mal als Javascript eingefügt....

                                        var Intervall;
                                        
                                        
                                        Intervall = setInterval(function () {
                                          if (compareTime(getAstroDate("sunset", undefined, 0), getAstroDate("sunrise", undefined, 0), "not between", null)) {
                                            try {
                                              require("request")('http://192.168.10.68/cgi-bin/hi3510/preset.cgi?-act=goto&-number=0?usr=xxx&pwd=xxx').on("error", function (e) {console.error(e);});
                                            } catch (e) { console.error(e); }
                                          } else {
                                            try {
                                              require("request")('http://192.168.10.68/cgi-bin/hi3510/preset.cgi?-act=goto&-number=5?usr=xxx&pwd=xxx').on("error", function (e) {console.error(e);});
                                            } catch (e) { console.error(e); }
                                          }
                                        }, 60000);
                                        
                                        
                                        smartboart 1 Reply Last reply Reply Quote 0
                                        • smartboart
                                          smartboart @Wiednitz last edited by

                                          @Wiednitz
                                          Also von Blockly habe ich keine Ahnung. Was Javascript aus dem Blockly macht sieht für mich auch eher Merkwürdig aus. Ich bastle morgen morgen mal nen javascript zusammen wie ich es programmieren würde.
                                          Die http Request an sich funktionieren aber oder?

                                          Wiednitz 1 Reply Last reply Reply Quote 0
                                          • smartboart
                                            smartboart last edited by

                                            hab mal das Growatt Skript um die Amotisierung angepasst und kleine Änderungen eingebaut.

                                            /* Skript berechnet Tagesersparnis / Ertrag , Gesamtersparnis / Ertrag sowie die
                                            Gesamtlaufzeit*/
                                            
                                            // Anlegen der States für Vis
                                            createState('javascript.0.Messwerte.PV_Huette.Ertrag_Heute',{read: true,write: true,desc: "Errsparnis PV Anlage Heute",type: "number",def:0, unit: "EUR"});
                                            createState('javascript.0.Messwerte.PV_Huette.Ertrag_Gesamt',{read: true,write: true,desc: "Ersparnis PV Anlage Gesamt",type: "number",def:0, unit: "EUR"});
                                            createState('javascript.0.Messwerte.PV_Huette.Laufzeit',{read: true,write: true,desc: "Betriebsstundenzähler",type: "number",def:0, unit: "h"});
                                            createState('javascript.0.Messwerte.PV_Huette.Amotisierung',{read: true,write: true,desc: "Amotisierung Anschaffungskosten",type: "number",def:0, unit: "EUR"});
                                            
                                            
                                            //Variablen
                                            var logging = false; // true = log aktivieren / false = log deaktivieren
                                            var Ersparnis = 0.31; //Strompreis für  kw/h in € hier eintragen
                                            var Anschaffungskosten = 3,50; // hier Anschaffungskosten eintragen
                                            
                                            //Konstante
                                            const idErtragHeute = 'modbus.1.inputRegisters.30028Erzeugte_Leistung heute'/*Erzeugte Leistung heute*/;
                                            const idErtragGesamt = 'modbus.1.inputRegisters.30030Erzeugte_Leistung gesamt'/*Erzeugte Leistung gesamt*/;
                                            
                                            const idErsparnisHeute = 'javascript.0.Messwerte.PV_Huette.Ertrag_Heute';   
                                            const idErsparnisGesamt = 'javascript.0.Messwerte.PV_Huette.Ertrag_Gesamt'; 
                                            
                                            const idLaufzeitLow = 'modbus.1.inputRegisters.30032Laufzeit_low'/*Laufzeit gesamt*/;
                                            const idLaufzeitHigh = 'modbus.1.inputRegisters.30031Laufzeit_high'/*Laufzeit gesamt*/;
                                            const idLaufzeit = 'javascript.0.Messwerte.PV_Huette.Laufzeit';
                                            
                                            const idRestkosten = 'javascript.0.Messwerte.PV_Huette.Amotisierung';
                                            
                                            // Funktion Restkosten Berechnen
                                            function BerechnenRestkosten() {
                                            var Ersparnis = getState(idErsparnisGesamt).val;
                                            if(Ersparnis>0){
                                            setState(idRestkosten,Anschaffungskosten-Ersparnis,true);
                                            if(logging)log("Restkosten Wechselrichter berechnet"); 
                                                }
                                            }
                                            
                                            //Funktion Laufzeit berechnen
                                            function BerechnenLaufzeit() {
                                            var High = getState(idLaufzeitHigh).val;
                                            var Low = getState(idLaufzeitLow).val;
                                            if(Low>0 || High>0){
                                            setState(idLaufzeit,High*18.203+Low/3600,true)
                                            if(logging)log("Gesamtlaufzeit Wechselrichter berechnet"); 
                                                }
                                            }
                                            
                                            
                                            //Funktion Ertrag in € heute berechnen
                                            function BerechnenHeute() {
                                            var ErtragHeute = getState(idErtragHeute).val;  
                                            if(ErtragHeute>0){
                                            setState(idErsparnisHeute,ErtragHeute*Ersparnis,true);
                                            if(logging)log("Tagesstrom Ertrag berechnet"); 
                                                }
                                            }
                                            
                                            // Funktion Ertrag in € Gesamt berechnen
                                            function BerechnenTotal(){
                                            var ErtragGesamt = getState(idErtragGesamt).val;
                                            if(ErtragGesamt>0){
                                            setState(idErsparnisGesamt,ErtragGesamt*Ersparnis,true);
                                            if(logging)log(" Gesamtstrom Ertrag  berechnet ");
                                                }
                                            }
                                            
                                            // Scriptstart
                                            BerechnenHeute();
                                            BerechnenTotal();
                                            BerechnenLaufzeit();
                                            BerechnenRestkosten();
                                            
                                            // Trigger Berechnen Ertrag in € heute
                                            on(idErtragHeute, function(obj) {
                                                if(logging)log(" Trigger Ertrag Heute Ersparnis berchnen ");
                                                BerechnenHeute();
                                            });
                                            
                                            // Trigger Berechnen Ertrag in € Gesamt und Amotisierung
                                            on(idErtragGesamt, function(obj) {
                                                if(logging)log(" Trigger Ertrag Gesamt Ersparnis berchnen ");
                                                BerechnenTotal();
                                                BerechnenRestkosten();
                                            });
                                            
                                            // Trigger High zum Berechnen Laufzeit gesamt
                                            on(idLaufzeitHigh, function(obj) {
                                                if(logging)log(" Trigger High Laufzeit berchnen ");
                                                BerechnenLaufzeit();
                                            });
                                            
                                            // Trigger Low zum Berechnen Laufzeit gesamt
                                            on(idLaufzeitLow, function(obj) {
                                                if(logging)log(" Trigger Low Laufzeit berchnen ");
                                                BerechnenLaufzeit();
                                            });
                                            
                                            Wiednitz 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

                                            780
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            29
                                            227
                                            80829
                                            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