Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

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

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    770

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    18
    1
    6.2k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.5k

E3DC Hauskraftwerk steuern

Scheduled Pinned Locked Moved JavaScript
3.6k Posts 72 Posters 1.7m Views 64 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • 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 Offline
    A Offline
    ArnoD
    wrote on last edited by 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 Reply Last reply
    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 Offline
      A Offline
      ArnoD
      wrote on last edited by
      #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 Reply Last reply
      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
        wrote on last edited by
        #390

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

        1 Reply Last reply
        0
        • A Offline
          A Offline
          ArnoD
          wrote on last edited by 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 Replies Last reply
          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
            wrote on last edited by 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 Reply Last reply
            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
              wrote on last edited by 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 Replies Last reply
              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.

                A Offline
                A Offline
                Abyss
                wrote on last edited by
                #394

                @ArnoD

                Auch von meiner Seite nochmal ein großes DANKE!! für deine Arbeit.
                So macht der E3DC gleich noch mehr Spaß.

                kurzer Hinweis zu der neuen Version 0.2.07, evtl sollte hier noch ein Hinweis ins Changelog, dass ein zusätzliches Javascript Modul "is-it-bst" notwendig ist.

                A 2 Replies Last reply
                0
                • smartboartS smartboart

                  @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 Offline
                  A Offline
                  ArnoD
                  wrote on last edited by
                  #395

                  @smartboart Das ist ja super. :-)
                  Werde es heute integrieren und testen.

                  1 Reply Last reply
                  0
                  • A Abyss

                    @ArnoD

                    Auch von meiner Seite nochmal ein großes DANKE!! für deine Arbeit.
                    So macht der E3DC gleich noch mehr Spaß.

                    kurzer Hinweis zu der neuen Version 0.2.07, evtl sollte hier noch ein Hinweis ins Changelog, dass ein zusätzliches Javascript Modul "is-it-bst" notwendig ist.

                    A Offline
                    A Offline
                    ArnoD
                    wrote on last edited by
                    #396

                    @Abyss
                    Ja richtig, sollte auf alle Fälle drin stehen.
                    Danke.

                    1 Reply Last reply
                    0
                    • A Abyss

                      @ArnoD

                      Auch von meiner Seite nochmal ein großes DANKE!! für deine Arbeit.
                      So macht der E3DC gleich noch mehr Spaß.

                      kurzer Hinweis zu der neuen Version 0.2.07, evtl sollte hier noch ein Hinweis ins Changelog, dass ein zusätzliches Javascript Modul "is-it-bst" notwendig ist.

                      A Offline
                      A Offline
                      ArnoD
                      wrote on last edited by
                      #397

                      @Abyss habe es bei der Anleitung im ersten Post hier ergänzt und werde es auch ins Changelog eintragen.

                      1 Reply Last reply
                      0
                      • smartboartS smartboart

                        @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 Offline
                        A Offline
                        ArnoD
                        wrote on last edited by
                        #398

                        @smartboart

                        Habe mir das Script jetzt mal angeschaut und verstehe nicht ganz wann dein merker auf true gesetzt wird.
                        Beim Start wird dieser auf false gesetzt und dürfte eigentlich nie true werden oder übersehe ich hier was. :-)

                        smartboartS 1 Reply Last reply
                        0
                        • A ArnoD

                          @smartboart

                          Habe mir das Script jetzt mal angeschaut und verstehe nicht ganz wann dein merker auf true gesetzt wird.
                          Beim Start wird dieser auf false gesetzt und dürfte eigentlich nie true werden oder übersehe ich hier was. :-)

                          smartboartS Offline
                          smartboartS Offline
                          smartboart
                          wrote on last edited by
                          #399

                          @ArnoD sagte in E3DC Hauskraftwerk steuern:

                          @smartboart

                          Habe mir das Script jetzt mal angeschaut und verstehe nicht ganz wann dein merker auf true gesetzt wird.
                          Beim Start wird dieser auf false gesetzt und dürfte eigentlich nie true werden oder übersehe ich hier was. :-)

                                  if(count===0 && Summe ===0){
                          
                                      clearSchedule(Timer);
                          
                                      merker = true;
                          
                                      if(logging)log('minütlicher Schedule gestoppt');
                          
                          smartboartS 1 Reply Last reply
                          0
                          • smartboartS smartboart

                            @ArnoD sagte in E3DC Hauskraftwerk steuern:

                            @smartboart

                            Habe mir das Script jetzt mal angeschaut und verstehe nicht ganz wann dein merker auf true gesetzt wird.
                            Beim Start wird dieser auf false gesetzt und dürfte eigentlich nie true werden oder übersehe ich hier was. :-)

                                    if(count===0 && Summe ===0){
                            
                                        clearSchedule(Timer);
                            
                                        merker = true;
                            
                                        if(logging)log('minütlicher Schedule gestoppt');
                            
                            smartboartS Offline
                            smartboartS Offline
                            smartboart
                            wrote on last edited by smartboart
                            #400

                            oh ja...habe den scriptstart vergessen zu kopieren...

                            //skriptstart
                            schedulestart();
                            

                            habs oben geändert..

                            1 Reply Last reply
                            0
                            • A Offline
                              A Offline
                              ArnoD
                              wrote on last edited by
                              #401

                              Ok habe dein Script jetzt mal übernommen und lass beide Zähler Parallel laufen, mal schauen wie groß der Unterschied ist.
                              Ich habe im Modbus Adapter Pol delay auf 1 sek, eingestellt um die Abtastrate zu erhöhen.
                              bild1.png

                              Das scheint aber source Analytics nicht weiter zu beeinflussen, vermute das dort eine andere Pol Zeit verwendet wird.
                              Über dein Script wird auf alle Fälle eine höherer PV Ertrag berechnet.

                              smartboartS 1 Reply Last reply
                              0
                              • smartboartS Offline
                                smartboartS Offline
                                smartboart
                                wrote on last edited by smartboart
                                #402

                                1 Sekunde ist gut... Je kleiner desto genauer...Evtl. kann man die Pollzeit später etwas erhöhen sollte die Genauigkeit kaum darunter leiden...
                                Ich habe gerade meine beiden Varianten laufen seid heute morgen. Will sehen ob der Schedulestart und Stop sich negativ auswirkt. Was es eigentlich nicht sollte. Es sollten dennoch alle Änderungen berücksichtigt werden....Vergleichen muss man das mit den Leistungswerten Solarproduktion aus dem E3DC Portal...
                                Denke wenn sich das script nicht verzählt, sollte es ziehmlich genau sein...

                                1 Reply Last reply
                                0
                                • A ArnoD

                                  Ok habe dein Script jetzt mal übernommen und lass beide Zähler Parallel laufen, mal schauen wie groß der Unterschied ist.
                                  Ich habe im Modbus Adapter Pol delay auf 1 sek, eingestellt um die Abtastrate zu erhöhen.
                                  bild1.png

                                  Das scheint aber source Analytics nicht weiter zu beeinflussen, vermute das dort eine andere Pol Zeit verwendet wird.
                                  Über dein Script wird auf alle Fälle eine höherer PV Ertrag berechnet.

                                  smartboartS Offline
                                  smartboartS Offline
                                  smartboart
                                  wrote on last edited by smartboart
                                  #403

                                  @ArnoD sagte in E3DC Hauskraftwerk steuern:

                                  Das scheint aber source Analytics nicht weiter zu beeinflussen, vermute das dort eine andere Pol Zeit verwendet wird.
                                  Über dein Script wird auf alle Fälle eine höherer PV Ertrag berechnet.

                                  Mein Zähler geht jetzt seit skriptstart vor 2 Stunden um 0,1 kw/h nach..
                                  Will aber nicht noch kürzer pollen wie eine Sekunde...Das ist mir eigentlich schon zu kurz... Mal sehen wo die Uhr heute Abend steht...

                                  1 Reply Last reply
                                  0
                                  • A Offline
                                    A Offline
                                    ArnoD
                                    wrote on last edited by
                                    #404

                                    Habe es vor 20 min. gestartet und bereits bei deinem Script ein plus von 0,3 kWh zu SourceAnalytix.
                                    Habe den Leistungsmesser 1 vergessen. :-)
                                    Den müsste ich jetzt auch noch integrieren dann könnte man auf das Modul SourceAnalytix verzichten.

                                    S 1 Reply Last reply
                                    0
                                    • A ArnoD

                                      Habe es vor 20 min. gestartet und bereits bei deinem Script ein plus von 0,3 kWh zu SourceAnalytix.
                                      Habe den Leistungsmesser 1 vergessen. :-)
                                      Den müsste ich jetzt auch noch integrieren dann könnte man auf das Modul SourceAnalytix verzichten.

                                      S Offline
                                      S Offline
                                      stevie77
                                      wrote on last edited by
                                      #405

                                      @ArnoD sagte in E3DC Hauskraftwerk steuern:

                                      Habe den Leistungsmesser 1 vergessen. :-)
                                      Den müsste ich jetzt auch noch integrieren

                                      Ja bitte. :-)
                                      Ich lass' euch jetzt mal testen und ich 2-3 Wochen nach meinem Urlaub übernehme ich dann wohl auch den Stand. Dann sind auch hoffentlich alle Fehlerchen raus, die sich so im Betrieb evtl noch zeigen könnten. ;-)

                                      smartboartS 1 Reply Last reply
                                      0
                                      • S stevie77

                                        @ArnoD sagte in E3DC Hauskraftwerk steuern:

                                        Habe den Leistungsmesser 1 vergessen. :-)
                                        Den müsste ich jetzt auch noch integrieren

                                        Ja bitte. :-)
                                        Ich lass' euch jetzt mal testen und ich 2-3 Wochen nach meinem Urlaub übernehme ich dann wohl auch den Stand. Dann sind auch hoffentlich alle Fehlerchen raus, die sich so im Betrieb evtl noch zeigen könnten. ;-)

                                        smartboartS Offline
                                        smartboartS Offline
                                        smartboart
                                        wrote on last edited by smartboart
                                        #406

                                        @stevie77 sagte in E3DC Hauskraftwerk steuern:

                                        @ArnoD sagte in E3DC Hauskraftwerk steuern:

                                        Habe den Leistungsmesser 1 vergessen. :-)
                                        Den müsste ich jetzt auch noch integrieren

                                        Ja bitte. :-)
                                        Ich lass' euch jetzt mal testen und ich 2-3 Wochen nach meinem Urlaub übernehme ich dann wohl auch den Stand. Dann sind auch hoffentlich alle Fehlerchen raus, die sich so im Betrieb evtl noch zeigen könnten. ;-)

                                        Wir machen keine Fehler...Wir testen nur ob es andere bemerken..:man-gesturing-no:

                                        A S 2 Replies Last reply
                                        0
                                        • smartboartS smartboart

                                          @stevie77 sagte in E3DC Hauskraftwerk steuern:

                                          @ArnoD sagte in E3DC Hauskraftwerk steuern:

                                          Habe den Leistungsmesser 1 vergessen. :-)
                                          Den müsste ich jetzt auch noch integrieren

                                          Ja bitte. :-)
                                          Ich lass' euch jetzt mal testen und ich 2-3 Wochen nach meinem Urlaub übernehme ich dann wohl auch den Stand. Dann sind auch hoffentlich alle Fehlerchen raus, die sich so im Betrieb evtl noch zeigen könnten. ;-)

                                          Wir machen keine Fehler...Wir testen nur ob es andere bemerken..:man-gesturing-no:

                                          A Offline
                                          A Offline
                                          ArnoD
                                          wrote on last edited by
                                          #407

                                          @smartboart 👍 😂

                                          smartboartS 1 Reply Last reply
                                          0

                                          Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                          Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                          With your input, this post could be even better 💗

                                          Register Login
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          476

                                          Online

                                          32.8k

                                          Users

                                          82.7k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Home
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe