Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. E3DC Hauskraftwerk steuern

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.7k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.1k

E3DC Hauskraftwerk steuern

Geplant Angeheftet Gesperrt Verschoben JavaScript
3.5k Beiträge 70 Kommentatoren 1.6m Aufrufe 61 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • A Offline
    A Offline
    ArnoD
    schrieb am zuletzt editiert von
    #534

    Version 0.2.15 hochgeladen.

    Änderungen:
    Version: 0.2.15 Es können jetzt für 5 verschiedene Dachflächen die Prognosewerte von Forecast abgerufen werden.

    Da ich leider keine 5 Dachflächen mit Solarmodulen habe (neid), müssen die testen, die so was haben ;-)
    Mit zwei Dachflächen funktioniert es :-)

    G 1 Antwort Letzte Antwort
    0
    • A ArnoD

      Version 0.2.15 hochgeladen.

      Änderungen:
      Version: 0.2.15 Es können jetzt für 5 verschiedene Dachflächen die Prognosewerte von Forecast abgerufen werden.

      Da ich leider keine 5 Dachflächen mit Solarmodulen habe (neid), müssen die testen, die so was haben ;-)
      Mit zwei Dachflächen funktioniert es :-)

      G Offline
      G Offline
      goelectric
      schrieb am zuletzt editiert von
      #535

      @ArnoD
      Nicht dass der Verdacht aufkommt, da stellt jemand eine Frage und taucht ab! Ich hatte zwischenzeitlich keine Zeit und Gelegenheit das Internet zu beglücken, auch das kann entspannend sein!!
      Für eure Aktivitäten und schnelle Reaktion auf meine Frage möchte ich mich bedanken und hoffe es mit eigenen Beträgen wieder gutzumachen.
      Die 4 Dachflächen haben alle die gleiche Neigung sind nach Süden, Westen und Osten ausgerichtet. Die Südseite besteht aus zwei unterschiedlichen Bauabschnitten mit verschiedenen Abschattungen und somit mit jeweils einem String.
      Die Anlage wird hoffentlich nächste Woche geliefert und in der Folgewoche installiert. Sie besteht aus einem S10 PRO 19,5 kW Speicher, einem Zusatzwechselrichter und der Wallbox Easy-Connect, also etliche Hardware und Software die hoffentlich ewig Zicken macht.

      smartboartS 1 Antwort Letzte Antwort
      0
      • G goelectric

        @ArnoD
        Nicht dass der Verdacht aufkommt, da stellt jemand eine Frage und taucht ab! Ich hatte zwischenzeitlich keine Zeit und Gelegenheit das Internet zu beglücken, auch das kann entspannend sein!!
        Für eure Aktivitäten und schnelle Reaktion auf meine Frage möchte ich mich bedanken und hoffe es mit eigenen Beträgen wieder gutzumachen.
        Die 4 Dachflächen haben alle die gleiche Neigung sind nach Süden, Westen und Osten ausgerichtet. Die Südseite besteht aus zwei unterschiedlichen Bauabschnitten mit verschiedenen Abschattungen und somit mit jeweils einem String.
        Die Anlage wird hoffentlich nächste Woche geliefert und in der Folgewoche installiert. Sie besteht aus einem S10 PRO 19,5 kW Speicher, einem Zusatzwechselrichter und der Wallbox Easy-Connect, also etliche Hardware und Software die hoffentlich ewig Zicken macht.

        smartboartS Offline
        smartboartS Offline
        smartboart
        schrieb am zuletzt editiert von smartboart
        #536

        @ArnoD
        Hallo Arno,

        habe als Prognose nur Proplanta angegeben und hatte heute das 1. mal , das die Prognose Auto von Proplanta abgewichen ist.. Hast dazu ne Idee?

        Unbenannt.JPG

        A 1 Antwort Letzte Antwort
        0
        • smartboartS smartboart

          @ArnoD
          Hallo Arno,

          habe als Prognose nur Proplanta angegeben und hatte heute das 1. mal , das die Prognose Auto von Proplanta abgewichen ist.. Hast dazu ne Idee?

          Unbenannt.JPG

          A Offline
          A Offline
          ArnoD
          schrieb am zuletzt editiert von
          #537

          @smartboart

          Ich vermute, das du bei deinen Einstellungen im Script unter "nMinPvLeistungTag_kWh" 10 kWh eingetragen hast bzw. nicht geändert hast.
          Unter diesen Wert geht die autom. Prognoseberechnung nicht, auch wenn die Prognose Proplanta niedriger ist.
          Was mir auffällt ist, dass die Prognose Proplanta bei dir recht gut funktioniert, bei mir sieht es diesen Monat da etwas Schlechter aus.
          1.png

          S smartboartS 2 Antworten Letzte Antwort
          0
          • A ArnoD

            @smartboart

            Ich vermute, das du bei deinen Einstellungen im Script unter "nMinPvLeistungTag_kWh" 10 kWh eingetragen hast bzw. nicht geändert hast.
            Unter diesen Wert geht die autom. Prognoseberechnung nicht, auch wenn die Prognose Proplanta niedriger ist.
            Was mir auffällt ist, dass die Prognose Proplanta bei dir recht gut funktioniert, bei mir sieht es diesen Monat da etwas Schlechter aus.
            1.png

            S Offline
            S Offline
            stevie77
            schrieb am zuletzt editiert von
            #538

            @ArnoD sagte in E3DC Hauskraftwerk steuern:

            @smartboart

            Ich vermute, das du bei deinen Einstellungen im Script unter "nMinPvLeistungTag_kWh" 10 kWh eingetragen hast bzw. nicht geändert hast.
            Unter diesen Wert geht die autom. Prognoseberechnung nicht, auch wenn die Prognose Proplanta niedriger ist.

            Ähmm, was heißt das denn genau? Ich muss da also 10 eintragen? Bei steht da seit Anbeginn "const nMinPvLeistungTag_kWh = 3"; das ist der niedrigste Wert, den meine PV jemals an einem Tag produziert hat. Die Berechnungen scheinen aber zu funktionieren!? Oder woran merke ich, dass irgendwas nicht funktioniert, wie es sollte? Oder noch anders gefragt: Ist soll da also 10 kWh als kleinsten Wert einstellen oder wie?

            smartboartS 1 Antwort Letzte Antwort
            0
            • A ArnoD

              @smartboart

              Ich vermute, das du bei deinen Einstellungen im Script unter "nMinPvLeistungTag_kWh" 10 kWh eingetragen hast bzw. nicht geändert hast.
              Unter diesen Wert geht die autom. Prognoseberechnung nicht, auch wenn die Prognose Proplanta niedriger ist.
              Was mir auffällt ist, dass die Prognose Proplanta bei dir recht gut funktioniert, bei mir sieht es diesen Monat da etwas Schlechter aus.
              1.png

              smartboartS Offline
              smartboartS Offline
              smartboart
              schrieb am zuletzt editiert von
              #539

              @ArnoD ja klar natürlich...Hab ich glatt übersehen.. Ja diesen Monat hat es echt gut gepasst...

              smartboartS 1 Antwort Letzte Antwort
              0
              • S stevie77

                @ArnoD sagte in E3DC Hauskraftwerk steuern:

                @smartboart

                Ich vermute, das du bei deinen Einstellungen im Script unter "nMinPvLeistungTag_kWh" 10 kWh eingetragen hast bzw. nicht geändert hast.
                Unter diesen Wert geht die autom. Prognoseberechnung nicht, auch wenn die Prognose Proplanta niedriger ist.

                Ähmm, was heißt das denn genau? Ich muss da also 10 eintragen? Bei steht da seit Anbeginn "const nMinPvLeistungTag_kWh = 3"; das ist der niedrigste Wert, den meine PV jemals an einem Tag produziert hat. Die Berechnungen scheinen aber zu funktionieren!? Oder woran merke ich, dass irgendwas nicht funktioniert, wie es sollte? Oder noch anders gefragt: Ist soll da also 10 kWh als kleinsten Wert einstellen oder wie?

                smartboartS Offline
                smartboartS Offline
                smartboart
                schrieb am zuletzt editiert von
                #540

                @stevie77 nein hast es schon richtig.. Ich hatte den Wert nie angefasst, weil meine Anlage noch neu war und ich damals beim konfigurieren noch nicht wusste wie die Anlage faehrt...

                S 1 Antwort Letzte Antwort
                0
                • smartboartS smartboart

                  @stevie77 nein hast es schon richtig.. Ich hatte den Wert nie angefasst, weil meine Anlage noch neu war und ich damals beim konfigurieren noch nicht wusste wie die Anlage faehrt...

                  S Offline
                  S Offline
                  stevie77
                  schrieb am zuletzt editiert von
                  #541

                  @smartboart Ach so. Ich hab' gerade auch gemerkt, dass ich mich wieder verlesen und falsch interpretiert hatte. Ich hatte gelesen: "Unter dieseM Wert geht die autom. Prognoseberechnung nicht, auch wenn die Prognose Proplanta niedriger ist." Und für "diesen Wert" hatte ich 10 kWh (aufgrund irgendwelcher angenommenen Restriktionen im Vorhersagedienst) angenommen. Alles gut... :-)

                  1 Antwort Letzte Antwort
                  0
                  • smartboartS smartboart

                    @ArnoD ja klar natürlich...Hab ich glatt übersehen.. Ja diesen Monat hat es echt gut gepasst...

                    smartboartS Offline
                    smartboartS Offline
                    smartboart
                    schrieb am zuletzt editiert von smartboart
                    #542

                    @ArnoD was hälst du davon wenn wir noch ein Script basteln welches die autonomiezeit anhand der Batterie Prozent und der entnommenen Leistung berechnet, sobald Leistung der Batterie entzogen wird waere die Anzeige und Berechnung aktiv...
                    haette da schon ne Idee wie ich das programmieren würde.... Gerade jetzt wo die Tage kürzer werden und ich zum 1. Mal meine notstrom reserve angekratzt habe hatte ich das mal ausgerechnet... Oder gibt es dazu schon was? Die Zeit würde natürlich mit Entnahme Leistung ständig angepasst....

                    smartboartS A 2 Antworten Letzte Antwort
                    0
                    • smartboartS smartboart

                      @ArnoD was hälst du davon wenn wir noch ein Script basteln welches die autonomiezeit anhand der Batterie Prozent und der entnommenen Leistung berechnet, sobald Leistung der Batterie entzogen wird waere die Anzeige und Berechnung aktiv...
                      haette da schon ne Idee wie ich das programmieren würde.... Gerade jetzt wo die Tage kürzer werden und ich zum 1. Mal meine notstrom reserve angekratzt habe hatte ich das mal ausgerechnet... Oder gibt es dazu schon was? Die Zeit würde natürlich mit Entnahme Leistung ständig angepasst....

                      smartboartS Offline
                      smartboartS Offline
                      smartboart
                      schrieb am zuletzt editiert von smartboart
                      #543

                      So habs schon fertig...Wer es gerne möchte...

                      V0.0.1 Berechnung der E3DC Autonomiezeit der Batterie bei Entladung anhand der Modbusinformationen
                      BatSoc und Batterie_Leistung unter Berücksichtigung der Notstromreserve. Für anzeige in Vis..
                      -Autonomiezeit in Vis auf Sichtbarkeit bei >0 einstellen damit Diese nur bei Entnahme angezeigt wird.
                      -BatSoc in kwh

                      hier der Code

                      /*
                      E3DC dynamische Autonomiezeitberechnung von Smartboard 28.09.2020
                      V0.0.1  Dynamische Berechnung der Batterie  Autonomiezeit bei Entladung anhand der Modbusinformationen 
                              BatSoc und Batterie_Leistung unter Berücksichtigung der Notstromreserve.   
                              Für anzeige in Vis..
                              Autonomiezeit in Vis auf Sichtbarkeit bei >0 einstellen damit Diese nur bei Entnahme angezeigt wird.
                              BatSoc in kwh   
                      */
                      //Konfiguration
                      var logging = true;
                      var debug = true;
                      var Speicher = 13; // kw/h hier die Speichergröße in kwh eintragen
                      var Reserve = 10; // % eingestellte Notstromreserve in Prozent bei E3dC oder bei E3DC Control als Ergebnis( HT Sockel / HT off HT On) in kw/h
                      var cron1 = 10; // hier die Schedulezeit - Triggerhäufigkeit alle x Sekunde eintragen
                      
                      const fC = true;
                      const Statepfad = 'javascript.' + instance + '.PVAnlage.Autonomie.';
                      
                      //hier muss nichts geändert werden
                      
                      //Variable für Cronjob start stop
                      var Timer = null;
                      //Variable Hilfsmerker
                      var Merker = true;
                      //Variable zur Berechnung
                      var Autonomiezeit = 0;
                      
                      //Berechnungsgrundlage
                      const idBatEntnahme = 'modbus.1.holdingRegisters.40070_Batterie_Leistung'/*Batterie-Leistung in Watt*/;
                      const idBatSoc = 'modbus.1.holdingRegisters.40083_Batterie_SOC'/*Batterie-SOC in Prozent*/;
                      
                      //states to create Ergebnisse
                      const idAutonomiezeit = Statepfad + 'Autonomiezeit';   
                      const idBatSockWh = Statepfad + 'Batteriekapazitaet';  
                      
                      //states create
                      // Autonomiezeit in Vis auf Sichtbarkeit bei >0 einstellen damit nur Sichtbar bei Entnahme
                      createState(idAutonomiezeit, 0, fC, { type: 'number', name: 'Autonomiezeit',role:'value', unit: ' h'});
                      createState(idBatSockWh, 0, fC, { type: 'number', name: 'Batteriekapazität',role:'value', unit: ' kWh'});
                      
                      //Scriptstart
                      Berechnung();
                      
                      // Trigger Berechnung Aktueller Bat Soc in kwh 
                      on(idBatSoc, function(dp) {
                      Berechnung();
                      });
                      
                      //Berechnung Aktueller Bat Soc in kwh und Wert in State schreiben
                      function Berechnung(){    
                      var BatSoc = getState(idBatSoc).val;    
                      setState(idBatSockWh,Math.round(((Speicher/100) * BatSoc)*100)/100,true);  
                      if(logging)log(['Aktuelle Speicherkapazität ist: ', getState(idBatSockWh).val].join(' kWh')); 
                      }
                      
                      // Schedule Berechnung Autonomiezeit starten bei Entnahme
                      on(idBatEntnahme, function(dp) {
                          if(dp.state.val < 0 ){
                          if(Merker)schedulestart();
                          Merker = false;
                          if(debug)log('Schedule starten. Aktuelle Entnahmeleistung: ' + dp.state.val +' Watt');
                          }
                      });
                      
                      //Berechnung Autonomiezeit
                      function schedulestart(){
                      if(logging)log('Funktion Schedulestart aktiv');  
                      var cronjob = "*/"+cron1+" * * * * *";  
                      Timer = schedule(cronjob, function(){   
                      if(debug)log('Schedule cronjob aktiv');       
                      var Entnahme = getState (idBatEntnahme).val;
                      var BatSockWh = getState (idBatSockWh).val;
                      if(Entnahme<0){
                      BatSockWh = Math.round(( BatSockWh - (Speicher/100*Reserve))*100/100);
                      if(debug)log('aktuelle Gesamtkapazität abzüglich der Notstromreserve ist:  '+ BatSockWh + ' kWh.');
                      setTimeout(function(){
                      Autonomiezeit = Math.round((((BatSockWh*1000)/(Entnahme*-1)))*100/100);    
                      setState(idAutonomiezeit,Autonomiezeit,true);
                      if(debug)log('Autonomiezeit neu berechnet auf:  '+ Autonomiezeit + ' h.');
                      },100);
                      }else{
                      //Berechnung stoppen bei Entnahme 0 und Autonomiezeit auf 0 setzen
                              if(Entnahme >=0){
                              clearSchedule(Timer);
                              Merker = true;
                              if(logging)log('Schedule cronjob gestoppt weil keine Entnahme');
                              setState(idAutonomiezeit,0,true);
                                  }
                              }   
                          });
                      }
                      
                      
                      

                      Unbenannt.JPG

                      1 Antwort Letzte Antwort
                      1
                      • smartboartS smartboart

                        @ArnoD was hälst du davon wenn wir noch ein Script basteln welches die autonomiezeit anhand der Batterie Prozent und der entnommenen Leistung berechnet, sobald Leistung der Batterie entzogen wird waere die Anzeige und Berechnung aktiv...
                        haette da schon ne Idee wie ich das programmieren würde.... Gerade jetzt wo die Tage kürzer werden und ich zum 1. Mal meine notstrom reserve angekratzt habe hatte ich das mal ausgerechnet... Oder gibt es dazu schon was? Die Zeit würde natürlich mit Entnahme Leistung ständig angepasst....

                        A Offline
                        A Offline
                        ArnoD
                        schrieb am zuletzt editiert von
                        #544

                        @smartboart
                        Jetzt must du mich erst mal aufklären was die Autonomiezeit ist :grin:
                        Ist das die Zeit die ich mit der Batterie ohne Netz überbrücken kann ?

                        smartboartS 2 Antworten Letzte Antwort
                        0
                        • A ArnoD

                          @smartboart
                          Jetzt must du mich erst mal aufklären was die Autonomiezeit ist :grin:
                          Ist das die Zeit die ich mit der Batterie ohne Netz überbrücken kann ?

                          smartboartS Offline
                          smartboartS Offline
                          smartboart
                          schrieb am zuletzt editiert von smartboart
                          #545

                          @ArnoD Hi, ja genau.
                          Die Autonomiezeit ist eine bekannte Größe aus der Notstrom Branche bzw. aus dem Bereich der hoch verfügbaren Stromversorgung und ist mit der Leistung die wichtigste Größe einer USV Anlage... Usv = Unterbrechungsfreie Strom Versorgung..

                          Es ist die Zeit bei welcher bei Stromausfall die Verbraucher weiter versorgt werden können.. .

                          Auf unsere Anwendung bezogen ist das die Zeit welche zur Verfügung steht um die Verbraucher aus der Batterie zu versorgen ohne das nachgeladen oder vom Netz Strom bezogen wird und eben auch bei Stromausfall.

                          1 Antwort Letzte Antwort
                          1
                          • A ArnoD

                            @smartboart
                            Jetzt must du mich erst mal aufklären was die Autonomiezeit ist :grin:
                            Ist das die Zeit die ich mit der Batterie ohne Netz überbrücken kann ?

                            smartboartS Offline
                            smartboartS Offline
                            smartboart
                            schrieb am zuletzt editiert von smartboart
                            #546

                            @ArnoD Hab auch das Problem festgestellt, dass bei Prognoseanwahl Änderung ( Proplanta Forcast oder beide die json nicht gleich aktualisiert wird.
                            Konnte das Problem beheben indem ich unter function main() dem makeJson() etzwas Zeit gegeben habe..

                                // Diagramm aktualisieren
                                //makeJson();
                                setTimeout(function(){makeJson();},100);
                            
                            A 1 Antwort Letzte Antwort
                            0
                            • smartboartS smartboart

                              @ArnoD Hab auch das Problem festgestellt, dass bei Prognoseanwahl Änderung ( Proplanta Forcast oder beide die json nicht gleich aktualisiert wird.
                              Konnte das Problem beheben indem ich unter function main() dem makeJson() etzwas Zeit gegeben habe..

                                  // Diagramm aktualisieren
                                  //makeJson();
                                  setTimeout(function(){makeJson();},100);
                              
                              A Offline
                              A Offline
                              ArnoD
                              schrieb am zuletzt editiert von
                              #547

                              @smartboart sagte in E3DC Hauskraftwerk steuern:

                              Konnte das Problem beheben indem ich unter function main() dem makeJson() etzwas Zeit gegeben habe..

                              :+1: Ja , funktioniert.
                              Habe ich so übernommen.

                              Dein Script Autonomiezeit übrigens auch, allerdings habe ich für alle E3DC Modbus Themen ein eigenes Script was ich ja bereits hier schon mal eingestellt hatte.

                              smartboartS 3 Antworten Letzte Antwort
                              0
                              • A ArnoD

                                @smartboart sagte in E3DC Hauskraftwerk steuern:

                                Konnte das Problem beheben indem ich unter function main() dem makeJson() etzwas Zeit gegeben habe..

                                :+1: Ja , funktioniert.
                                Habe ich so übernommen.

                                Dein Script Autonomiezeit übrigens auch, allerdings habe ich für alle E3DC Modbus Themen ein eigenes Script was ich ja bereits hier schon mal eingestellt hatte.

                                smartboartS Offline
                                smartboartS Offline
                                smartboart
                                schrieb am zuletzt editiert von
                                #548

                                @ArnoD sagte in E3DC Hauskraftwerk steuern:

                                Dein Script Autonomiezeit übrigens auch, allerdings habe ich für alle E3DC Modbus Themen ein eigenes Script was ich ja bereits hier schon mal eingestellt hatte.

                                Ja gute Idee... Da passt es besser rein... Läuft bei mir auch als eigenes Script... Werde es da aber auch rein packen..

                                1 Antwort Letzte Antwort
                                0
                                • A ArnoD

                                  @smartboart sagte in E3DC Hauskraftwerk steuern:

                                  Konnte das Problem beheben indem ich unter function main() dem makeJson() etzwas Zeit gegeben habe..

                                  :+1: Ja , funktioniert.
                                  Habe ich so übernommen.

                                  Dein Script Autonomiezeit übrigens auch, allerdings habe ich für alle E3DC Modbus Themen ein eigenes Script was ich ja bereits hier schon mal eingestellt hatte.

                                  smartboartS Offline
                                  smartboartS Offline
                                  smartboart
                                  schrieb am zuletzt editiert von smartboart
                                  #549

                                  @ArnoD sagte in E3DC Hauskraftwerk steuern:

                                  Dein Script Autonomiezeit übrigens auch, allerdings habe ich für alle E3DC Modbus Themen ein eigenes Script was ich ja bereits hier schon mal eingestellt hatte.

                                  Hallo Arno,
                                  ich habe das Script Autonomiezeit weiter ausgebaut. Falls interesse besteht siehe unten..
                                  Änderung:
                                  V0.0.2 -Berechnung auf Durchschnittswert der Autonomiezeit erweitert, dadurch wird die Zeitanzeige ruhiger und gibt einen gemittelten
                                  Wert wieder, welcher auch aussagekräftiger ist.
                                  - Notstromreserve wird nun aus Sript E3DC Control von ArnoD eingelesen. Sowie unterscheidung zur manuellen Eingabe falls in E3DC eine
                                  Notstromreserve hinterlegt wurde. Somit bleibt die Autonomie Berechnung automatisch aktuell sollte in E3DC Control etwas angepasst werden.

                                  V0.0.3- Autonomiezeit Anzeige in Minuten wenn < 1 Stunde . State Autonomiezeit geändert von type numnber zu string.

                                  /*
                                  E3DC dynamische Autonomiezeitberechnung von Smartboard 
                                  28.09.2020
                                  V0.0.1  -Dynamische Berechnung der Batterie  Autonomiezeit bei Entladung anhand der Modbusinformationen 
                                          BatSoc und Batterie_Leistung unter Berücksichtigung der Notstromreserve.   
                                          Für anzeige in Vis..
                                          Autonomiezeit in Vis auf Sichtbarkeit bei >0 einstellen damit Diese nur bei Entnahme angezeigt wird.
                                          BatSoc in kwh   
                                  29.09.2020
                                  V0.0.2 -Berechnung auf Durchschnittswert der Autonomiezeit erweitert,  dadurch wird die Zeitanzeige ruhiger und gibt einen gemittelten 
                                         Wert wieder, welcher auch aussagekräftiger ist.
                                         - Notstromreserve wird nun aus Sript E3DC Control von ArnoD eingelesen. Sowie unterscheidung zur manuellen Eingabe  falls in E3DC eine 
                                         Notstromreserve hinterlegt wurde. Somit bleibt die Autonomie Berechnung automatisch aktuell sollte in E3DC Control etwas angepasst werden.        
                                  30.09.2020
                                  V0.0.3- Autonomiezeit Anzeige in Minuten wenn < 1 Stunde . State Autonomiezeit geändert von type numnber zu string.
                                  
                                  */        
                                  
                                  //Konfiguration
                                  var logging = true;
                                  var debug = true;
                                  var Speicher = 13; // kw/h hier die Speichergröße in kwh eintragen
                                  var E3DCReserve = 0; // % eingestellte Notstromreserve in Prozent bei E3dC. Wenn diese nicht verwendet wird dan 0 eintragen.
                                  var cron1 = 10; // hier die Schedulezeit - Triggerhäufigkeit alle x Sekunden für Zeitberechnung eintragen
                                  var counter = 2; // Hier die Anzahl der Zeitberechnungen eintragen um einen Durchschnitswert zu ermitteln
                                  
                                  const fC = true;
                                  const Statepfad = 'javascript.' + instance + '.PVAnlage.Autonomie.';
                                  
                                  //hier muss nichts geändert werden
                                  
                                  //Variable für Cronjob start stop
                                  var Timer = null;
                                  //Variable Hilfsmerker
                                  var Merker = true;
                                  //Variable zur Berechnung der Zeit
                                  var Autonomiezeit = 0;
                                  //Variable für Berechnung 
                                  var Reserve = 0;
                                  // Variablen für Durchschnittsberechnung
                                  var count = 0;
                                  var Summe = 0;
                                  
                                  
                                  //Berechnungsgrundlage
                                  const idBatEntnahme = 'modbus.1.holdingRegisters.40070_Batterie_Leistung'/*Batterie-Leistung in Watt*/;
                                  const idBatSoc = 'modbus.1.holdingRegisters.40083_Batterie_SOC'/*Batterie-SOC in Prozent*/;
                                  const idHTSockel = 'javascript.1.PVAnlage.E3DC-Control.Parameter.HTsockel';
                                  const idHTon = 'javascript.1.PVAnlage.E3DC-Control.Parameter.HTon';
                                  const idHToff = 'javascript.1.PVAnlage.E3DC-Control.Parameter.HToff'; 
                                  
                                  
                                  //states to create Ergebnisse
                                  const idAutonomiezeit = Statepfad + 'Autonomiezeit';   
                                  const idBatSockWh = Statepfad + 'Batteriekapazitaet';  
                                  
                                  //states create
                                  // Autonomiezeit in Vis auf Sichtbarkeit bei >0 einstellen damit nur Sichtbar bei Entnahme
                                  createState(idAutonomiezeit, null, fC, { type: 'string', name: 'Autonomiezeit',role:'text'});
                                  createState(idBatSockWh, 0, fC, { type: 'number', name: 'Batteriekapazität',role:'value', unit: ' kWh'});
                                  if(fC && logging)log('force Creation Aktiv States angelegt oder überschrieben');
                                  
                                  //Scriptstart
                                  Berechnung();
                                  
                                  // Trigger Berechnung Aktueller Bat Soc in kwh 
                                  on(idBatSoc, function(dp) {
                                  Berechnung();
                                  });
                                  
                                  //Berechnung Aktueller Bat Soc in kwh und Wert in State schreiben
                                  function Berechnung(){    
                                  var BatSoc = getState(idBatSoc).val;    
                                  setState(idBatSockWh,Math.round(((Speicher/100) * BatSoc)*100)/100,true);  
                                  if(logging)log('Aktuelle Speicherkapazität ist: '+ getState(idBatSockWh).val+' kWh'); 
                                  }
                                  
                                  // Schedule Berechnung Autonomiezeit starten bei Entnahme
                                  on(idBatEntnahme, function(dp) {
                                      if(dp.state.val < 0 ){
                                      if(Merker)schedulestart();
                                      Merker = false;
                                      if(debug)log('Aktuelle Entnahmeleistung: ' + dp.state.val +' Watt');
                                      }
                                  });
                                  
                                  //Berechnung Autonomiezeit
                                  function schedulestart(){
                                  if(debug)log('Funktion Schedulestart aktiv');  
                                  var cronjob = "*/"+cron1+" * * * * *";  
                                  Timer = schedule(cronjob, function(){   
                                  if(debug)log('Schedule cronjob aktiv');       
                                  var Entnahme = getState (idBatEntnahme).val;
                                  var BatSockWh = getState (idBatSockWh).val;
                                  var Sockel = getState (idHTSockel).val;
                                  var HToff = getState (idHToff).val;
                                  var HTon = getState (idHTon).val;
                                  if (HTon === HToff && E3DCReserve === 0){
                                      Reserve=Sockel;
                                      if(debug)log('Die Notstrom Reserve entsprichte der Einstellung in E3DC Control und beträgt: ' + Reserve +' %');
                                  }
                                  if (E3DCReserve >0){
                                      Reserve = E3DCReserve;
                                      if(debug)log('Die Notstrom Reserve entspricht der User Konfig Einstellun und beträgt'+ Reserve + ' %');
                                  }
                                  if (HTon != HToff && E3DCReserve === 0){
                                      Reserve=0;
                                      if(debug)log('Es wird keine Notstrom Reserve bei der Berechnung berücksichtigt. Wert auf ' + Reserve +' % gesetzt.');
                                  }
                                  setTimeout(function(){
                                  if(Entnahme<0){
                                  BatSockWh = ( BatSockWh - (Speicher/100*Reserve));
                                  if(debug)log('aktuelle Gesamtkapazität abzüglich der Notstromreserve ist:  '+ BatSockWh + ' kWh.');
                                  setTimeout(function(){
                                  Autonomiezeit = (((BatSockWh*1000)/(Entnahme*-1)));    
                                  //setState(idAutonomiezeit,Autonomiezeit,true);
                                  Durchschnitt();
                                  if(debug)log('Autonomiezeit neu berechnet auf:  '+ Autonomiezeit + ' h.');
                                  },100);
                                  }else{
                                  //Berechnung stoppen bei Entnahme 0 und Autonomiezeit auf 0 setzen
                                          if(Entnahme >=0){
                                          clearSchedule(Timer);
                                          Merker = true;
                                          if(logging)log('Schedule cronjob gestoppt weil keine Entnahme');
                                          setState(idAutonomiezeit,'0',true);
                                                  }
                                              }
                                          },100);   
                                      });
                                  }
                                  
                                  // Zaehlem für Durchschnittsberechnung
                                  
                                  function Durchschnitt(){
                                  count ++
                                  Summe = Summe + Autonomiezeit;
                                  if(debug)log ('Summe: ' + Summe + ' Zaehler: '+count+ ' Addition: + ' + Autonomiezeit);
                                  if(count===counter){
                                  var Zeit= Summe/count;
                                  setTimeout(function(){
                                  if(Zeit>=1){    
                                  setState(idAutonomiezeit,+ Math.round(Zeit*100)/100 +' h',true);  
                                  if(logging)log('Autonomiezeit in h beträgt: '+ Math.round(Zeit*100)/100 + ' h');
                                  }
                                  if(Zeit<1){       
                                  setState(idAutonomiezeit, + Math.round((Zeit*60)*100/100)+' min',true);
                                  if(logging)log('Autonomiezeit in min beträgt: '+Math.round((Zeit*60)*100/100) +' min.');
                                  
                                  }    
                                  count=0;
                                  Summe=0;
                                  if(debug)log('Reset: Count =  '+ count+ ' Summe = ' + Summe);
                                      },100);  
                                  }
                                  }
                                  
                                  
                                  1 Antwort Letzte Antwort
                                  0
                                  • A ArnoD

                                    @smartboart sagte in E3DC Hauskraftwerk steuern:

                                    Konnte das Problem beheben indem ich unter function main() dem makeJson() etzwas Zeit gegeben habe..

                                    :+1: Ja , funktioniert.
                                    Habe ich so übernommen.

                                    Dein Script Autonomiezeit übrigens auch, allerdings habe ich für alle E3DC Modbus Themen ein eigenes Script was ich ja bereits hier schon mal eingestellt hatte.

                                    smartboartS Offline
                                    smartboartS Offline
                                    smartboart
                                    schrieb am zuletzt editiert von
                                    #550

                                    Kann mir jemand erklaeren warum ich bei folgenden Einstellungen noch einspeise und nicht alles lade?

                                    Screenshot_20200930_170459_de.ozerov.fully.jpg

                                    Screenshot_20200930_170504_de.ozerov.fully.jpg

                                    A 1 Antwort Letzte Antwort
                                    0
                                    • smartboartS smartboart

                                      Kann mir jemand erklaeren warum ich bei folgenden Einstellungen noch einspeise und nicht alles lade?

                                      Screenshot_20200930_170459_de.ozerov.fully.jpg

                                      Screenshot_20200930_170504_de.ozerov.fully.jpg

                                      A Offline
                                      A Offline
                                      ArnoD
                                      schrieb am zuletzt editiert von
                                      #551

                                      @smartboart
                                      Gute Frage, eigentlich sollte alles geladen werden, bis der SoC 90% erreicht.
                                      Ausser E3DC-Control läuft nicht mehr oder die e3dc-config.txt wurde nicht geändert oder eingelesen.
                                      Hier wäre die LOG-Ausgabe von E3DC-Control interessant.

                                      smartboartS 2 Antworten Letzte Antwort
                                      0
                                      • A ArnoD

                                        @smartboart
                                        Gute Frage, eigentlich sollte alles geladen werden, bis der SoC 90% erreicht.
                                        Ausser E3DC-Control läuft nicht mehr oder die e3dc-config.txt wurde nicht geändert oder eingelesen.
                                        Hier wäre die LOG-Ausgabe von E3DC-Control interessant.

                                        smartboartS Offline
                                        smartboartS Offline
                                        smartboart
                                        schrieb am zuletzt editiert von smartboart
                                        #552

                                        @ArnoD Hi Arno,
                                        ja evtl. lief E3DC Control nicht, ist sogar eher wahrscheinlich. ...keine Ahnung....ich war zu dem Zeitpunkt nicht zu Hause um das am Gerät zu kontrollieren....Schaue mal ob ich die logs zu dem zeitpunkt von deinem script finde...Aber die Textdatei wurde sauber beschrieben und eingelesen, da ich es es mehrmals manuell durchgeführt habe. Deshalb helfen die logs eher nicht weiter...

                                        Ich habe den Host mal neu gestartet und beobachte weiter..
                                        evtl stelle ich mal auf debug...

                                        1 Antwort Letzte Antwort
                                        0
                                        • A ArnoD

                                          @smartboart
                                          Gute Frage, eigentlich sollte alles geladen werden, bis der SoC 90% erreicht.
                                          Ausser E3DC-Control läuft nicht mehr oder die e3dc-config.txt wurde nicht geändert oder eingelesen.
                                          Hier wäre die LOG-Ausgabe von E3DC-Control interessant.

                                          smartboartS Offline
                                          smartboartS Offline
                                          smartboart
                                          schrieb am zuletzt editiert von
                                          #553

                                          @ArnoD Hi Arno, heute das Selbe Verhalten...
                                          Er3DC Control läuft aber, da die anlage reagiert, wenn ich das Programm wechsle.

                                          Muss also an den eingestellten Parametern liegen. Wird bei alles Laden auch mit einer Kurve geladen? Also als Ergebnis aus unterer und oberer Ladekorridor.. Das hatte nämlich nix geändert...

                                          A 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          959

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe