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.6k

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

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

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.
  • smartboartS smartboart

    @ArnoD
    Hallo Arno,

    mal ne weitere Frage...

    Im Script lässt du ja die Prognosen öfter aktualisieren...
    Macht es nicht auch Sinn die Funktion main nach einer Aktualisierug nochmal durch zu führen?

    
    schedule({hour: 5, minute: 45}, function(){main();});
    
    

    Du legst dich um 5 : 45 Uhr mit der Prognose fest, wie du die anlage fahren willst.

    Heute hatte ich den Fall, dass Programm 1 aktiv war und als ich an das Einspeiselimit kam war die Batterie schon voll...
    Ist nicht schlimm , weil ich das in nem separaten Script abfange und dann die Klimaanlage loslaufen lasse.

    Macht es nicht Sinn mehrmals am Tag zu prüfen ob die Prognose noch richtig ist?
    Vlt kurz vor Regelbeginn und zwischen maximum und Ladeende nochmal?
    oder immer dann wenn du nen erfolgreicheien Datenabruf der Wetterdaten gemacht hast?

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

    und noch ne Idee.
    Die function main würde ich gerne bei Umschaltung auf manuell nachdem ein zusätzlicher manueller programmwahl state aktiviert wurde erneut durchlaufen lassen um dann die Programmvorwahl manuell einzuleiten...
    Beispiel am Programm 5

    on(idProgrammwahl, function(dp) {
    setState(idAutomatikVorwahl,false,true);
    main();
    if(logging)log("Trigger manuelle Programmvorwahl");
    });
    
    // 5Prognose PV-Leistung höher als benötigter Eigenverbrauch,Batterie laden und Überschuss ins Netz einspeisen.
    
    	// ab 15:00 - 18:00 Uhr Bewölkung > 90%
    var Programmwahl= getState(idProgrammwahl).val;
    if( (Ueberschuss > 0 && Bedeckungsgrad12<90 && Bedeckungsgrad15>=90 && AutomatikAnwahl )|| (AutomatikAnwahl === false && Programmwahl ===5)){
    if (LogAusgabe){log('Einstellung 5 aktiv');}
    
    		setState(instanz + PfadEbene1 + PfadEbene2[1] + 'Einstellung',5);
    
            StateRead();
    
    		e3dcConfigWrite(5);
    
    		setTimeout(e3dcConfigRead, 1000);
    
    
    A 1 Antwort Letzte Antwort
    0
    • smartboartS smartboart

      @ArnoD
      Hallo Arno,

      mal ne weitere Frage...

      Im Script lässt du ja die Prognosen öfter aktualisieren...
      Macht es nicht auch Sinn die Funktion main nach einer Aktualisierug nochmal durch zu führen?

      
      schedule({hour: 5, minute: 45}, function(){main();});
      
      

      Du legst dich um 5 : 45 Uhr mit der Prognose fest, wie du die anlage fahren willst.

      Heute hatte ich den Fall, dass Programm 1 aktiv war und als ich an das Einspeiselimit kam war die Batterie schon voll...
      Ist nicht schlimm , weil ich das in nem separaten Script abfange und dann die Klimaanlage loslaufen lasse.

      Macht es nicht Sinn mehrmals am Tag zu prüfen ob die Prognose noch richtig ist?
      Vlt kurz vor Regelbeginn und zwischen maximum und Ladeende nochmal?
      oder immer dann wenn du nen erfolgreicheien Datenabruf der Wetterdaten gemacht hast?

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

      @smartboart sagte in E3DC Hauskraftwerk steuern:

      Heute hatte ich den Fall, dass Programm 1 aktiv war und als ich an das Einspeiselimit kam war die Batterie schon voll...

      Wo gab's denn heute in Deutschland einen Regentag? Einstellung 1 ist doch Winter/Regen/fast keine Erzeugung/Erzeugung geringer als Eigenverbrauch den ganzen Tag über?! Wetterprognose bei Hamburg war heute 92-103 für meine Anlage, Berechnungsgrundlage 85 kWh, was dann mit tatsächlichen 83 kWh ganz gut hin kam... :-)

      smartboartS 1 Antwort Letzte Antwort
      0
      • S stevie77

        @smartboart sagte in E3DC Hauskraftwerk steuern:

        Heute hatte ich den Fall, dass Programm 1 aktiv war und als ich an das Einspeiselimit kam war die Batterie schon voll...

        Wo gab's denn heute in Deutschland einen Regentag? Einstellung 1 ist doch Winter/Regen/fast keine Erzeugung/Erzeugung geringer als Eigenverbrauch den ganzen Tag über?! Wetterprognose bei Hamburg war heute 92-103 für meine Anlage, Berechnungsgrundlage 85 kWh, was dann mit tatsächlichen 83 kWh ganz gut hin kam... :-)

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

        @stevie77 ja ich hatte schon zum 2. x die 1 aktiv..
        es war Gewitter vorhergesagt , hat sich aber gegen 12 wieder aufgehellt und dann sonne den Rest des tages bis Abends wieder Wolken aufzogen... Demnach wäre eine Neubewertung gegen mittag vorteilhaft gewesen...
        EDIT:
        Ich denke die Prognosen sind auch generell sehr unterschiedlich was die Genauigkeit je nach Region betrifft....

        Wäre vlt. noch ein dritter Wetterdienst vorteilhaft um daraus zu mitteln...

        die Beiden Prognosen liegen oft ganz schön auseinander...

        S 1 Antwort Letzte Antwort
        0
        • smartboartS smartboart

          @stevie77 ja ich hatte schon zum 2. x die 1 aktiv..
          es war Gewitter vorhergesagt , hat sich aber gegen 12 wieder aufgehellt und dann sonne den Rest des tages bis Abends wieder Wolken aufzogen... Demnach wäre eine Neubewertung gegen mittag vorteilhaft gewesen...
          EDIT:
          Ich denke die Prognosen sind auch generell sehr unterschiedlich was die Genauigkeit je nach Region betrifft....

          Wäre vlt. noch ein dritter Wetterdienst vorteilhaft um daraus zu mitteln...

          die Beiden Prognosen liegen oft ganz schön auseinander...

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

          @smartboart sagte in E3DC Hauskraftwerk steuern:

          @stevie77 ja ich hatte schon zum 2. x die 1 aktiv..
          es war Gewitter vorhergesagt , hat sich aber gegen 12 wieder aufgehellt und dann sonne den Rest des tages bis Abends wieder Wolken aufzogen... Demnach wäre eine Neubewertung gegen mittag vorteilhaft gewesen...

          Das würde ja eher zu Einstellung 5 passen: Ab 12:00 - 15 Uhr Bewölkung < 90 %, ab 15:00 - 18:00 Uhr Bewölkung >= 90 %. Aber wenn ich dich jetzt richtig verstehe, war die Prognose so schlecht, dass sie meinte es würde den ganzen Tag regnen?!
          Dann isses natürlich blöd...

          1 Antwort Letzte Antwort
          0
          • smartboartS smartboart

            @ArnoD
            Hallo Arno,

            mal ne weitere Frage...

            Im Script lässt du ja die Prognosen öfter aktualisieren...
            Macht es nicht auch Sinn die Funktion main nach einer Aktualisierug nochmal durch zu führen?

            
            schedule({hour: 5, minute: 45}, function(){main();});
            
            

            Du legst dich um 5 : 45 Uhr mit der Prognose fest, wie du die anlage fahren willst.

            Heute hatte ich den Fall, dass Programm 1 aktiv war und als ich an das Einspeiselimit kam war die Batterie schon voll...
            Ist nicht schlimm , weil ich das in nem separaten Script abfange und dann die Klimaanlage loslaufen lasse.

            Macht es nicht Sinn mehrmals am Tag zu prüfen ob die Prognose noch richtig ist?
            Vlt kurz vor Regelbeginn und zwischen maximum und Ladeende nochmal?
            oder immer dann wenn du nen erfolgreicheien Datenabruf der Wetterdaten gemacht hast?

            A Online
            A Online
            ArnoD
            schrieb am zuletzt editiert von
            #378

            @smartboart sagte in E3DC Hauskraftwerk steuern:

            Macht es nicht auch Sinn die Funktion main nach einer Aktualisierug nochmal durch zu führen?

            Wird in der neuen Version so gemacht, hatte es bei der Umstellung der automatischen Abfrage Proplanta übersehen, das die Funktion main() nicht noch mal aufgerufen wird.

            1 Antwort Letzte Antwort
            0
            • smartboartS smartboart

              und noch ne Idee.
              Die function main würde ich gerne bei Umschaltung auf manuell nachdem ein zusätzlicher manueller programmwahl state aktiviert wurde erneut durchlaufen lassen um dann die Programmvorwahl manuell einzuleiten...
              Beispiel am Programm 5

              on(idProgrammwahl, function(dp) {
              setState(idAutomatikVorwahl,false,true);
              main();
              if(logging)log("Trigger manuelle Programmvorwahl");
              });
              
              // 5Prognose PV-Leistung höher als benötigter Eigenverbrauch,Batterie laden und Überschuss ins Netz einspeisen.
              
              	// ab 15:00 - 18:00 Uhr Bewölkung > 90%
              var Programmwahl= getState(idProgrammwahl).val;
              if( (Ueberschuss > 0 && Bedeckungsgrad12<90 && Bedeckungsgrad15>=90 && AutomatikAnwahl )|| (AutomatikAnwahl === false && Programmwahl ===5)){
              if (LogAusgabe){log('Einstellung 5 aktiv');}
              
              		setState(instanz + PfadEbene1 + PfadEbene2[1] + 'Einstellung',5);
              
                      StateRead();
              
              		e3dcConfigWrite(5);
              
              		setTimeout(e3dcConfigRead, 1000);
              
              
              A Online
              A Online
              ArnoD
              schrieb am zuletzt editiert von
              #379

              @smartboart sagte in E3DC Hauskraftwerk steuern:

              und noch ne Idee.
              Die function main würde ich gerne bei Umschaltung auf manuell nachdem ein zusätzlicher manueller programmwahl state aktiviert wurde erneut durchlaufen lassen um dann die Programmvorwahl manuell einzuleiten...
              Beispiel am Programm 5

              on(idProgrammwahl, function(dp) {
              setState(idAutomatikVorwahl,false,true);
              main();
              if(logging)log("Trigger manuelle Programmvorwahl");
              });
              
              // 5Prognose PV-Leistung höher als benötigter Eigenverbrauch,Batterie laden und Überschuss ins Netz einspeisen.
              
              	// ab 15:00 - 18:00 Uhr Bewölkung > 90%
              var Programmwahl= getState(idProgrammwahl).val;
              if( (Ueberschuss > 0 && Bedeckungsgrad12<90 && Bedeckungsgrad15>=90 && AutomatikAnwahl )|| (AutomatikAnwahl === false && Programmwahl ===5)){
              if (LogAusgabe){log('Einstellung 5 aktiv');}
              
              		setState(instanz + PfadEbene1 + PfadEbene2[1] + 'Einstellung',5);
              
                      StateRead();
              
              		e3dcConfigWrite(5);
              
              		setTimeout(e3dcConfigRead, 1000);
              
              

              Gute Idee, bin noch nicht dazu gekommen mir über die manuelle Anwahl gedanken zu machen. Kann ich ja jetzt so übernehmen, Danke. :-)

              Bin noch mit der Formel von eba zur berechnung der Uhrzeit von Start und Ende des Regelzeitraum beschäftigt.
              Würde gerne diese Zeiten gleich in MEZ bzw. MESZ anzeigen, da mit UTC ständig überlegt werden muss, wann der Regelbeginn ist.

              A smartboartS 2 Antworten Letzte Antwort
              0
              • A ArnoD

                @smartboart sagte in E3DC Hauskraftwerk steuern:

                und noch ne Idee.
                Die function main würde ich gerne bei Umschaltung auf manuell nachdem ein zusätzlicher manueller programmwahl state aktiviert wurde erneut durchlaufen lassen um dann die Programmvorwahl manuell einzuleiten...
                Beispiel am Programm 5

                on(idProgrammwahl, function(dp) {
                setState(idAutomatikVorwahl,false,true);
                main();
                if(logging)log("Trigger manuelle Programmvorwahl");
                });
                
                // 5Prognose PV-Leistung höher als benötigter Eigenverbrauch,Batterie laden und Überschuss ins Netz einspeisen.
                
                	// ab 15:00 - 18:00 Uhr Bewölkung > 90%
                var Programmwahl= getState(idProgrammwahl).val;
                if( (Ueberschuss > 0 && Bedeckungsgrad12<90 && Bedeckungsgrad15>=90 && AutomatikAnwahl )|| (AutomatikAnwahl === false && Programmwahl ===5)){
                if (LogAusgabe){log('Einstellung 5 aktiv');}
                
                		setState(instanz + PfadEbene1 + PfadEbene2[1] + 'Einstellung',5);
                
                        StateRead();
                
                		e3dcConfigWrite(5);
                
                		setTimeout(e3dcConfigRead, 1000);
                
                

                Gute Idee, bin noch nicht dazu gekommen mir über die manuelle Anwahl gedanken zu machen. Kann ich ja jetzt so übernehmen, Danke. :-)

                Bin noch mit der Formel von eba zur berechnung der Uhrzeit von Start und Ende des Regelzeitraum beschäftigt.
                Würde gerne diese Zeiten gleich in MEZ bzw. MESZ anzeigen, da mit UTC ständig überlegt werden muss, wann der Regelbeginn ist.

                A Online
                A Online
                ArnoD
                schrieb am zuletzt editiert von
                #380

                Die Prognosen Proplanta im August, mit der regelmässigen Aktualisierung ist bis jetzt der Wahnsinn.
                Wenn das so bleibt, brauche ich forecast nicht mehr :-)
                Bin schon auf heute gespannt wer wieder Recht hat, Proplanta oder Forecast.
                2020-08-13 01_27_28-vis.png

                S smartboartS 2 Antworten Letzte Antwort
                0
                • A ArnoD

                  Die Prognosen Proplanta im August, mit der regelmässigen Aktualisierung ist bis jetzt der Wahnsinn.
                  Wenn das so bleibt, brauche ich forecast nicht mehr :-)
                  Bin schon auf heute gespannt wer wieder Recht hat, Proplanta oder Forecast.
                  2020-08-13 01_27_28-vis.png

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

                  @ArnoD Bei mir geht's drunter und drüber. Proplanta kriegt die Tendenz eher richtig hin, liegt aber wertemäßig schon etwas ungenau. Forecast ist die reinste Achterbahn, landet mal nen Treffer, versaut es aber auch öfter, weil halt der niedrigere Wert genommen wird. Aber mir ist lieber eine konservative Schätzung zu haben, die dann übertroffen wird als andersrum.

                  9692d824-21d0-4110-8d55-436b5b75efba-image.png

                  1 Antwort Letzte Antwort
                  0
                  • A ArnoD

                    @smartboart sagte in E3DC Hauskraftwerk steuern:

                    und noch ne Idee.
                    Die function main würde ich gerne bei Umschaltung auf manuell nachdem ein zusätzlicher manueller programmwahl state aktiviert wurde erneut durchlaufen lassen um dann die Programmvorwahl manuell einzuleiten...
                    Beispiel am Programm 5

                    on(idProgrammwahl, function(dp) {
                    setState(idAutomatikVorwahl,false,true);
                    main();
                    if(logging)log("Trigger manuelle Programmvorwahl");
                    });
                    
                    // 5Prognose PV-Leistung höher als benötigter Eigenverbrauch,Batterie laden und Überschuss ins Netz einspeisen.
                    
                    	// ab 15:00 - 18:00 Uhr Bewölkung > 90%
                    var Programmwahl= getState(idProgrammwahl).val;
                    if( (Ueberschuss > 0 && Bedeckungsgrad12<90 && Bedeckungsgrad15>=90 && AutomatikAnwahl )|| (AutomatikAnwahl === false && Programmwahl ===5)){
                    if (LogAusgabe){log('Einstellung 5 aktiv');}
                    
                    		setState(instanz + PfadEbene1 + PfadEbene2[1] + 'Einstellung',5);
                    
                            StateRead();
                    
                    		e3dcConfigWrite(5);
                    
                    		setTimeout(e3dcConfigRead, 1000);
                    
                    

                    Gute Idee, bin noch nicht dazu gekommen mir über die manuelle Anwahl gedanken zu machen. Kann ich ja jetzt so übernehmen, Danke. :-)

                    Bin noch mit der Formel von eba zur berechnung der Uhrzeit von Start und Ende des Regelzeitraum beschäftigt.
                    Würde gerne diese Zeiten gleich in MEZ bzw. MESZ anzeigen, da mit UTC ständig überlegt werden muss, wann der Regelbeginn ist.

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

                    Würde gerne diese Zeiten gleich in MEZ bzw. MESZ anzeigen, da mit UTC ständig überlegt werden muss, wann der Regelbeginn ist.

                    Finde ich super das du das aufgenommen hast.. Das war ja auch der Grund warum ich es auch angemerkt hatte...

                    1 Antwort Letzte Antwort
                    0
                    • A ArnoD

                      Die Prognosen Proplanta im August, mit der regelmässigen Aktualisierung ist bis jetzt der Wahnsinn.
                      Wenn das so bleibt, brauche ich forecast nicht mehr :-)
                      Bin schon auf heute gespannt wer wieder Recht hat, Proplanta oder Forecast.
                      2020-08-13 01_27_28-vis.png

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

                      @ArnoD denke auch das proplanta genauer liegt... Hab nochmal genauer geschaut.. Die Kurve von proplanta passt generell zur prognose.. Ist halt bei mir zu hoch weil ich die nutzbare Energie messe.... Aber das geht ja mit dem korrekturfaktor klar...
                      Vlt.. Hilft aber zusaetzlich auch ein Kupfer Nagel...

                      1 Antwort Letzte Antwort
                      0
                      • A Online
                        A Online
                        ArnoD
                        schrieb am zuletzt editiert von
                        #384

                        Neue Version 0.2.06 hochgeladen und neue View Stand 14.08.2020.

                        Änderungen:
                        Version: 0.2.06 Regelzeitraum Start, Ende und Ladezeitende werden jetzt nach der Formel von
                        Eberhard berechnet und je nach Einstellung in MEZ oder MESZ in VIS angezeigt. Es wird die Systemzeit vom IoBroker verwendet, da ich über Modbus keine Zeit vom E3DC bekomme.
                        Wenn diese beiden Zeiten nicht synchron sind, stimmen die Zeiten natürlich nicht. Die manuelle
                        Anwahl der 5 Einstellungen ist jetzt möglich, Danke an smartboart für seine Vorarbeit.

                        Version: 0.2.05 Zeiten werden in MEZ umgerechnet und in eigenen States gespeichert:'Winterminimum_MEZ','Sommermaximum_MEZ','Sommerladeende_MEZ','HTon_MEZ','HToff_MEZ'. Fehler in der PrognoseBerechnung_kWh_heute korrigiert, durch die laufende Neuberechnung muss die bereits produzierte PV-Leistung von der Prognose Tag abgezogen werden und das Gleiche bei nEigenverbrauchTag in kWh. nKorrFaktor geändert, es wird jetzt der % Wert angegeben um den die Prognose reduziert werden soll.

                        Version: 0.2.04 Nach der Aktualisierung Proplanta wird die Function main() aufgerufen und neu berechnet

                        smartboartS 3 Antworten Letzte Antwort
                        1
                        • A ArnoD

                          Neue Version 0.2.06 hochgeladen und neue View Stand 14.08.2020.

                          Änderungen:
                          Version: 0.2.06 Regelzeitraum Start, Ende und Ladezeitende werden jetzt nach der Formel von
                          Eberhard berechnet und je nach Einstellung in MEZ oder MESZ in VIS angezeigt. Es wird die Systemzeit vom IoBroker verwendet, da ich über Modbus keine Zeit vom E3DC bekomme.
                          Wenn diese beiden Zeiten nicht synchron sind, stimmen die Zeiten natürlich nicht. Die manuelle
                          Anwahl der 5 Einstellungen ist jetzt möglich, Danke an smartboart für seine Vorarbeit.

                          Version: 0.2.05 Zeiten werden in MEZ umgerechnet und in eigenen States gespeichert:'Winterminimum_MEZ','Sommermaximum_MEZ','Sommerladeende_MEZ','HTon_MEZ','HToff_MEZ'. Fehler in der PrognoseBerechnung_kWh_heute korrigiert, durch die laufende Neuberechnung muss die bereits produzierte PV-Leistung von der Prognose Tag abgezogen werden und das Gleiche bei nEigenverbrauchTag in kWh. nKorrFaktor geändert, es wird jetzt der % Wert angegeben um den die Prognose reduziert werden soll.

                          Version: 0.2.04 Nach der Aktualisierung Proplanta wird die Function main() aufgerufen und neu berechnet

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

                          @ArnoD super... Komm heut nicht mehr dazu... Werds morgen gleich testen...

                          1 Antwort Letzte Antwort
                          0
                          • A ArnoD

                            Neue Version 0.2.06 hochgeladen und neue View Stand 14.08.2020.

                            Änderungen:
                            Version: 0.2.06 Regelzeitraum Start, Ende und Ladezeitende werden jetzt nach der Formel von
                            Eberhard berechnet und je nach Einstellung in MEZ oder MESZ in VIS angezeigt. Es wird die Systemzeit vom IoBroker verwendet, da ich über Modbus keine Zeit vom E3DC bekomme.
                            Wenn diese beiden Zeiten nicht synchron sind, stimmen die Zeiten natürlich nicht. Die manuelle
                            Anwahl der 5 Einstellungen ist jetzt möglich, Danke an smartboart für seine Vorarbeit.

                            Version: 0.2.05 Zeiten werden in MEZ umgerechnet und in eigenen States gespeichert:'Winterminimum_MEZ','Sommermaximum_MEZ','Sommerladeende_MEZ','HTon_MEZ','HToff_MEZ'. Fehler in der PrognoseBerechnung_kWh_heute korrigiert, durch die laufende Neuberechnung muss die bereits produzierte PV-Leistung von der Prognose Tag abgezogen werden und das Gleiche bei nEigenverbrauchTag in kWh. nKorrFaktor geändert, es wird jetzt der % Wert angegeben um den die Prognose reduziert werden soll.

                            Version: 0.2.04 Nach der Aktualisierung Proplanta wird die Function main() aufgerufen und neu berechnet

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

                            @ArnoD sagte in E3DC Hauskraftwerk steuern:

                            Version: 0.2.05 Zeiten werden in MEZ umgerechnet und in eigenen States

                            Hallo Arno...

                            Wenn ich das richtig deute, muss zwischen Sommerzeit und Winterzeit
                            über vis umgestellt werden...

                            ich habe hierzu etwas um das zu automatisieren...siehe script unten..

                            https://forum.iobroker.net/topic/2730/sommerzeit-winterzeit-in-script-abfragen

                            es muss allerdings das npm modul is-it-bst im javascript adapter eingebunden werden.

                            const idSommerzeit ='javascript.1.PVAnlage.E3DC-Control.Allgemein.Anwahl_MEZ_MESZ'/*true = MESZ ,false = MEZ*/;
                            // Sommerzeit ermitteln
                            var dst = require('is-it-bst');
                            setState(idSommerzeit, dst());  // Script start
                            if(LogAusgabe)log('MESZ Status '+dst);
                            schedule("0 4 24-31 3,10 7", function() {
                            setState("Sommerzeit", dst());
                            if(LogAusgabe)log('MESZ Status '+dst);
                            });
                            

                            das kommt dann zurück. siehe log..


                            javascript.1 (11597) script.js.common.Tests.Sommerzeit: Statusfunction (date) { date = date || new Date(); var year = date.getUTCFullYear(), timestamp = date.getTime(), day, x; // see if date is before the 1am on the last sunday in march x = new Date(year + '-03-31 01:00Z'); day = x.getUTCDay(); if (day !== 0) x = new Date(year + '-03-' + (31 - day) + ' 01:00Z'); if (timestamp < x.getTime()) return false; // see if date is after the last sunday in october x = new Date(year + '-10-31 01:00Z'); day = x.getUTCDay(); if (day !== 0) x = new Date(year + '-10-' + (31 - day) + ' 01:00Z'); if (timestamp >= x.getTime()) return false; // it's summer return true; }

                            A 1 Antwort Letzte Antwort
                            0
                            • A ArnoD

                              Neue Version 0.2.06 hochgeladen und neue View Stand 14.08.2020.

                              Änderungen:
                              Version: 0.2.06 Regelzeitraum Start, Ende und Ladezeitende werden jetzt nach der Formel von
                              Eberhard berechnet und je nach Einstellung in MEZ oder MESZ in VIS angezeigt. Es wird die Systemzeit vom IoBroker verwendet, da ich über Modbus keine Zeit vom E3DC bekomme.
                              Wenn diese beiden Zeiten nicht synchron sind, stimmen die Zeiten natürlich nicht. Die manuelle
                              Anwahl der 5 Einstellungen ist jetzt möglich, Danke an smartboart für seine Vorarbeit.

                              Version: 0.2.05 Zeiten werden in MEZ umgerechnet und in eigenen States gespeichert:'Winterminimum_MEZ','Sommermaximum_MEZ','Sommerladeende_MEZ','HTon_MEZ','HToff_MEZ'. Fehler in der PrognoseBerechnung_kWh_heute korrigiert, durch die laufende Neuberechnung muss die bereits produzierte PV-Leistung von der Prognose Tag abgezogen werden und das Gleiche bei nEigenverbrauchTag in kWh. nKorrFaktor geändert, es wird jetzt der % Wert angegeben um den die Prognose reduziert werden soll.

                              Version: 0.2.04 Nach der Aktualisierung Proplanta wird die Function main() aufgerufen und neu berechnet

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

                              @ArnoD
                              und noch ne kleine Änderung...
                              Hab hier noch ne Verzögerung eingebaut..
                              Besseres Handling und um Programmwahl nicht 2 mal ausführen zu müssen wenn die Automatik nicht schnell genug abgewählt wurde...

                              on({id: instanz + PfadEbene1 + PfadEbene2[1] + 'EinstellungAnwahl'}, function(obj) {
                                  EinstellungAnwahl = getState(obj.id).val
                                  setState(instanz + PfadEbene1 + PfadEbene2[1]+'Automatik',false,true);
                                  if(LogAusgabe)log("Trigger manuelle Programmvorwahl");
                                  setTimeout(function(){main();},200);//Automatik Abwahl Zeit geben bevor main ausgeführt wird
                              });
                              
                              A 1 Antwort Letzte Antwort
                              0
                              • smartboartS smartboart

                                @ArnoD sagte in E3DC Hauskraftwerk steuern:

                                Version: 0.2.05 Zeiten werden in MEZ umgerechnet und in eigenen States

                                Hallo Arno...

                                Wenn ich das richtig deute, muss zwischen Sommerzeit und Winterzeit
                                über vis umgestellt werden...

                                ich habe hierzu etwas um das zu automatisieren...siehe script unten..

                                https://forum.iobroker.net/topic/2730/sommerzeit-winterzeit-in-script-abfragen

                                es muss allerdings das npm modul is-it-bst im javascript adapter eingebunden werden.

                                const idSommerzeit ='javascript.1.PVAnlage.E3DC-Control.Allgemein.Anwahl_MEZ_MESZ'/*true = MESZ ,false = MEZ*/;
                                // Sommerzeit ermitteln
                                var dst = require('is-it-bst');
                                setState(idSommerzeit, dst());  // Script start
                                if(LogAusgabe)log('MESZ Status '+dst);
                                schedule("0 4 24-31 3,10 7", function() {
                                setState("Sommerzeit", dst());
                                if(LogAusgabe)log('MESZ Status '+dst);
                                });
                                

                                das kommt dann zurück. siehe log..


                                javascript.1 (11597) script.js.common.Tests.Sommerzeit: Statusfunction (date) { date = date || new Date(); var year = date.getUTCFullYear(), timestamp = date.getTime(), day, x; // see if date is before the 1am on the last sunday in march x = new Date(year + '-03-31 01:00Z'); day = x.getUTCDay(); if (day !== 0) x = new Date(year + '-03-' + (31 - day) + ' 01:00Z'); if (timestamp < x.getTime()) return false; // see if date is after the last sunday in october x = new Date(year + '-10-31 01:00Z'); day = x.getUTCDay(); if (day !== 0) x = new Date(year + '-10-' + (31 - day) + ' 01:00Z'); if (timestamp >= x.getTime()) return false; // it's summer return true; }

                                A Online
                                A Online
                                ArnoD
                                schrieb am zuletzt editiert von ArnoD
                                #388

                                @smartboart sagte in E3DC Hauskraftwerk steuern:

                                @ArnoD sagte in E3DC Hauskraftwerk steuern:

                                Version: 0.2.05 Zeiten werden in MEZ umgerechnet und in eigenen States

                                Hallo Arno...

                                Wenn ich das richtig deute, muss zwischen Sommerzeit und Winterzeit
                                über vis umgestellt werden...

                                ich habe hierzu etwas um das zu automatisieren...siehe script unten..

                                https://forum.iobroker.net/topic/2730/sommerzeit-winterzeit-in-script-abfragen

                                es muss allerdings das npm modul is-it-bst im javascript adapter eingebunden werden.

                                const idSommerzeit ='javascript.1.PVAnlage.E3DC-Control.Allgemein.Anwahl_MEZ_MESZ'/*true = MESZ ,false = MEZ*/;
                                // Sommerzeit ermitteln
                                var dst = require('is-it-bst');
                                setState(idSommerzeit, dst());  // Script start
                                if(LogAusgabe)log('MESZ Status '+dst);
                                schedule("0 4 24-31 3,10 7", function() {
                                setState("Sommerzeit", dst());
                                if(LogAusgabe)log('MESZ Status '+dst);
                                });
                                

                                das kommt dann zurück. siehe log..


                                javascript.1 (11597) script.js.common.Tests.Sommerzeit: Statusfunction (date) { date = date || new Date(); var year = date.getUTCFullYear(), timestamp = date.getTime(), day, x; // see if date is before the 1am on the last sunday in march x = new Date(year + '-03-31 01:00Z'); day = x.getUTCDay(); if (day !== 0) x = new Date(year + '-03-' + (31 - day) + ' 01:00Z'); if (timestamp < x.getTime()) return false; // see if date is after the last sunday in october x = new Date(year + '-10-31 01:00Z'); day = x.getUTCDay(); if (day !== 0) x = new Date(year + '-10-' + (31 - day) + ' 01:00Z'); if (timestamp >= x.getTime()) return false; // it's summer return true; }

                                Hatte die Umschaltung zuerst automatisch, doch dann war ich mir nicht sicher ob das international funktioniert.
                                Sollte aber zumindest in der Schweiz,Österreich und Italien funktionieren. :-)
                                Werde es einbauen Danke.

                                1 Antwort Letzte Antwort
                                0
                                • smartboartS smartboart

                                  @ArnoD
                                  und noch ne kleine Änderung...
                                  Hab hier noch ne Verzögerung eingebaut..
                                  Besseres Handling und um Programmwahl nicht 2 mal ausführen zu müssen wenn die Automatik nicht schnell genug abgewählt wurde...

                                  on({id: instanz + PfadEbene1 + PfadEbene2[1] + 'EinstellungAnwahl'}, function(obj) {
                                      EinstellungAnwahl = getState(obj.id).val
                                      setState(instanz + PfadEbene1 + PfadEbene2[1]+'Automatik',false,true);
                                      if(LogAusgabe)log("Trigger manuelle Programmvorwahl");
                                      setTimeout(function(){main();},200);//Automatik Abwahl Zeit geben bevor main ausgeführt wird
                                  });
                                  
                                  A Online
                                  A Online
                                  ArnoD
                                  schrieb am zuletzt editiert von
                                  #389

                                  @smartboart sagte in E3DC Hauskraftwerk steuern:

                                  @ArnoD
                                  und noch ne kleine Änderung...
                                  Hab hier noch ne Verzögerung eingebaut..
                                  Besseres Handling und um Programmwahl nicht 2 mal ausführen zu müssen wenn die Automatik nicht schnell genug abgewählt wurde...

                                  on({id: instanz + PfadEbene1 + PfadEbene2[1] + 'EinstellungAnwahl'}, function(obj) {
                                      EinstellungAnwahl = getState(obj.id).val
                                      setState(instanz + PfadEbene1 + PfadEbene2[1]+'Automatik',false,true);
                                      if(LogAusgabe)log("Trigger manuelle Programmvorwahl");
                                      setTimeout(function(){main();},200);//Automatik Abwahl Zeit geben bevor main ausgeführt wird
                                  });
                                  

                                  Hatte es bei mir gestestet und keine Probleme festgestellt, musste die Verzögerung beim Aufruf der main() funktion nur bei der Abfrage der Proplanta Werte einbauen, da die Rückantwort zu langsam war. Aber es schadet generel nicht etwas zu warten und ich werde auch das übernehmen. :-)

                                  smartboartS 1 Antwort Letzte Antwort
                                  0
                                  • A ArnoD

                                    @smartboart sagte in E3DC Hauskraftwerk steuern:

                                    @ArnoD
                                    und noch ne kleine Änderung...
                                    Hab hier noch ne Verzögerung eingebaut..
                                    Besseres Handling und um Programmwahl nicht 2 mal ausführen zu müssen wenn die Automatik nicht schnell genug abgewählt wurde...

                                    on({id: instanz + PfadEbene1 + PfadEbene2[1] + 'EinstellungAnwahl'}, function(obj) {
                                        EinstellungAnwahl = getState(obj.id).val
                                        setState(instanz + PfadEbene1 + PfadEbene2[1]+'Automatik',false,true);
                                        if(LogAusgabe)log("Trigger manuelle Programmvorwahl");
                                        setTimeout(function(){main();},200);//Automatik Abwahl Zeit geben bevor main ausgeführt wird
                                    });
                                    

                                    Hatte es bei mir gestestet und keine Probleme festgestellt, musste die Verzögerung beim Aufruf der main() funktion nur bei der Abfrage der Proplanta Werte einbauen, da die Rückantwort zu langsam war. Aber es schadet generel nicht etwas zu warten und ich werde auch das übernehmen. :-)

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

                                    @ArnoD ich muss es nochmal los werden... Das ist wirklich wieder richtig Klasse Arbeit die du hier ablieferst.. :+1: :+1: :+1:

                                    1 Antwort Letzte Antwort
                                    0
                                    • A Online
                                      A Online
                                      ArnoD
                                      schrieb am zuletzt editiert von ArnoD
                                      #391

                                      Neue Version 0.2.07 hochgeladen

                                      Änderungen:
                                      Version: 0.2.07 Umschaltung MEZ oder MESZ wird automatisch ausgeführt. Man kann aber immer noch manuell umschalten.
                                      Verzögerung beim Aufruf der main() function nach manueller Anwahl der Einstellungen 1-5.
                                      Es muss das NPM-Module "is-it-bst" in der Javascript Instanz installiert werden.

                                      smartboartS A 2 Antworten Letzte Antwort
                                      0
                                      • A ArnoD

                                        Neue Version 0.2.07 hochgeladen

                                        Änderungen:
                                        Version: 0.2.07 Umschaltung MEZ oder MESZ wird automatisch ausgeführt. Man kann aber immer noch manuell umschalten.
                                        Verzögerung beim Aufruf der main() function nach manueller Anwahl der Einstellungen 1-5.
                                        Es muss das NPM-Module "is-it-bst" in der Javascript Instanz installiert werden.

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

                                        @ArnoD
                                        Hallo Arno, ich habe ein script geschrieben, welches dein Script ohne source Analytics auskommen lässt.
                                        Bei Sekunden Pollzeit des Modbusadapter, sollte das Script so genau sein wie source analytics.

                                        Je kleiner die Pollzeit vom modbus adapter desto genauer wird das Ergebnis sein...

                                        Ich hoffe ich habe keinen Denkfehler, heute Abend weiß ich ob es ordentlich gezählt hat.

                                        Habe vernommen, dass du ja auch auf den adapter verzichten möchtest?

                                        Da es für die Prognose wohl doch besser ist mit dem Ertrag zu rechnen und nicht mit dem was entnommen wird, da der Verbrauch im Haus und Ladung bzw Batterieentnahme doch eher schwankt, habe ich das nun so gelöst.

                                        Wenn du Interesse hast es zu übernehmen, kannst du mit testen wie genau es ist.. hier das Script...

                                        createState('javascript.1.PVAnlage.PVArbeitE3DC.heute',    0, {name: 'PV Leistung Heute laufender Tag', type: 'number', unit: 'kWh' });
                                        
                                        const idLeistung = 'modbus.1.holdingRegisters.40068_PV_Leistung';
                                        const idPVErtrag = 'javascript.1.PVAnlage.PVArbeitE3DC.heute'
                                        
                                        var debug = false;
                                        var logging = true;
                                        var count = 0;
                                        var Summe = 0;
                                        
                                        // Zaehlem
                                        on(idLeistung, function(dp) {
                                        var Leistung = getState(idLeistung).val;
                                        if(Leistung >= 1){
                                        count ++
                                        Summe = Summe + Leistung;
                                        if(debug)log(['Summe: ' + Summe, ' Zaehler: '+count, ' Addition: + ' +Leistung ].join(''));
                                            }
                                        });
                                        
                                        // jede minute in W/h umrechen W = P*t
                                        schedule ("* * * * *", function () { 
                                        if(debug)log('minütlicher Schedule aktiv');    
                                        if(count >0 && Summe >0){    
                                        var PVErtrag = getState (idPVErtrag).val    
                                        var Pmin = Summe/count;
                                        setState(idPVErtrag, PVErtrag + Pmin/60/1000,true);//kWh
                                        if(debug)log(['Schedule Umrechnen W = P*t.  Minutenwert Leistung: '+ Pmin, ' Minutenwert Arbeit: ' + (Pmin/60/1000), ' Tageswert Ertrag: ' +PVErtrag ].join(''));
                                        setTimeout(function(){
                                        count=0;
                                        Summe=0;
                                        if(debug)log(['verzögerter Reset: Count =  '+ count, ' Summe = ' + Summe ].join(''));
                                        },100);
                                            }
                                        });
                                        
                                        // jeden Tag um 23:59 Tageswert nullen.
                                        schedule({hour: 0, minute: 1}, function () { 
                                        setState(idPVErtrag,0,true);
                                        if (logging)log('Tagesertragswert auf 0 gesetzt');
                                        });
                                        

                                        EDIT: hatte noch nen Fehler bei 0 Leistungswerten...
                                        ist oben korrgiert.
                                        Arbeite noch daran den minütlichen schedule zu stoppen wenn nicht mehr benötigt...

                                        smartboartS 1 Antwort Letzte Antwort
                                        0
                                        • smartboartS smartboart

                                          @ArnoD
                                          Hallo Arno, ich habe ein script geschrieben, welches dein Script ohne source Analytics auskommen lässt.
                                          Bei Sekunden Pollzeit des Modbusadapter, sollte das Script so genau sein wie source analytics.

                                          Je kleiner die Pollzeit vom modbus adapter desto genauer wird das Ergebnis sein...

                                          Ich hoffe ich habe keinen Denkfehler, heute Abend weiß ich ob es ordentlich gezählt hat.

                                          Habe vernommen, dass du ja auch auf den adapter verzichten möchtest?

                                          Da es für die Prognose wohl doch besser ist mit dem Ertrag zu rechnen und nicht mit dem was entnommen wird, da der Verbrauch im Haus und Ladung bzw Batterieentnahme doch eher schwankt, habe ich das nun so gelöst.

                                          Wenn du Interesse hast es zu übernehmen, kannst du mit testen wie genau es ist.. hier das Script...

                                          createState('javascript.1.PVAnlage.PVArbeitE3DC.heute',    0, {name: 'PV Leistung Heute laufender Tag', type: 'number', unit: 'kWh' });
                                          
                                          const idLeistung = 'modbus.1.holdingRegisters.40068_PV_Leistung';
                                          const idPVErtrag = 'javascript.1.PVAnlage.PVArbeitE3DC.heute'
                                          
                                          var debug = false;
                                          var logging = true;
                                          var count = 0;
                                          var Summe = 0;
                                          
                                          // Zaehlem
                                          on(idLeistung, function(dp) {
                                          var Leistung = getState(idLeistung).val;
                                          if(Leistung >= 1){
                                          count ++
                                          Summe = Summe + Leistung;
                                          if(debug)log(['Summe: ' + Summe, ' Zaehler: '+count, ' Addition: + ' +Leistung ].join(''));
                                              }
                                          });
                                          
                                          // jede minute in W/h umrechen W = P*t
                                          schedule ("* * * * *", function () { 
                                          if(debug)log('minütlicher Schedule aktiv');    
                                          if(count >0 && Summe >0){    
                                          var PVErtrag = getState (idPVErtrag).val    
                                          var Pmin = Summe/count;
                                          setState(idPVErtrag, PVErtrag + Pmin/60/1000,true);//kWh
                                          if(debug)log(['Schedule Umrechnen W = P*t.  Minutenwert Leistung: '+ Pmin, ' Minutenwert Arbeit: ' + (Pmin/60/1000), ' Tageswert Ertrag: ' +PVErtrag ].join(''));
                                          setTimeout(function(){
                                          count=0;
                                          Summe=0;
                                          if(debug)log(['verzögerter Reset: Count =  '+ count, ' Summe = ' + Summe ].join(''));
                                          },100);
                                              }
                                          });
                                          
                                          // jeden Tag um 23:59 Tageswert nullen.
                                          schedule({hour: 0, minute: 1}, function () { 
                                          setState(idPVErtrag,0,true);
                                          if (logging)log('Tagesertragswert auf 0 gesetzt');
                                          });
                                          

                                          EDIT: hatte noch nen Fehler bei 0 Leistungswerten...
                                          ist oben korrgiert.
                                          Arbeite noch daran den minütlichen schedule zu stoppen wenn nicht mehr benötigt...

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

                                          @ArnoD

                                          und hier nochmal mit Aktivierung und Deaktivierung des minütlichen Schedule.
                                          Somit werden der minütliche Schedule auch nur ausgeführt wenn es was zum Rechnen gibt...

                                          Hab es noch nicht testen können, also hier weiß ich erst morgen ob es klappt oder noch ne Kleinigkeit geändert werden muss...

                                          createState('javascript.1.Test.E3DC.Ertrag_Heute',    0, {name: 'Ertrag Heute laufender Tag', type: 'number', unit: 'kWh' });
                                          
                                          const idLeistung = 'modbus.1.holdingRegisters.40068_PV_Leistung';
                                          const idPVErtrag = 'javascript.1.Test.E3DC.Ertrag_Heute'
                                          
                                          var debug = true;
                                          var logging = true;
                                          var count = 0;
                                          var Summe = 0;
                                          var Timer = null;
                                          var merker = false;
                                          
                                          
                                          // Zaehlem
                                          on(idLeistung, function(dp) {
                                              var Leistung = getState(idLeistung).val;
                                              if(Leistung >= 1){
                                              if(merker)schedulestart();
                                              merker = false;
                                              count ++
                                              Summe = Summe + Leistung;
                                              if(debug)log(['Summe: ' + Summe, ' Zaehler: '+count, ' Addition: + ' +Leistung ].join(''));
                                              }
                                          });
                                          
                                          //Skriptstart
                                          schedulestart()
                                          
                                          // jede minute in W/h umrechen W = P*t
                                          function schedulestart(){
                                          if(debug)log('Funktion Schedulestart aktiv');     
                                          var AufDieMinute =  '* * * * *';
                                          Timer = schedule(AufDieMinute, function(){   
                                          if(debug)log('minuten Schedule aktiv');       
                                          var PVErtrag = getState (idPVErtrag).val;   
                                          var Pmin = Summe/count;
                                          if(count>0 && Summe >0){
                                          setState(idPVErtrag, PVErtrag + Pmin/60/1000,true);//kWh
                                          if(debug)log(['Schedule Umrechnen W = P*t.  Minutenwert Leistung: '+ Pmin, ' Minutenwert Arbeit: ' + (Pmin/60/1000), ' Tageswert Ertrag: ' +PVErtrag ].join(''));
                                          setTimeout(function(){
                                          count=0;
                                          Summe=0;
                                          if(debug)log(['Reset: Count =  '+ count, ' Summe = ' + Summe ].join(''));
                                          },100);
                                              }else{
                                                  if(count===0 && Summe ===0){
                                                      clearSchedule(Timer);
                                                      merker = true;
                                                      if(logging)log('minuten Schedule gestoppt');
                                                      }
                                                  }  
                                              });
                                          }
                                          
                                          
                                          // jeden Tag um 23:59 Tageswert nullen.
                                          schedule({hour: 0, minute: 1}, function () { 
                                          setState(idPVErtrag,0,true);
                                          if (logging)log('Tagesertragswert auf 0 gesetzt');
                                          });
                                          
                                          
                                          A 2 Antworten Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          672

                                          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