Skip to content
  • 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
Logo
  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.1k

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

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

E3DC Hauskraftwerk steuern

Scheduled Pinned Locked Moved JavaScript
3.4k Posts 70 Posters 1.6m Views 62 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.
  • A ArnoD

    @zelkin
    Nein, beim Eigenverbrauch ist alles beim alten geblieben.
    Der Durchschnittsverbrauch für die Berechnung der Entladezeit Notstromreserve wird automatisch berechnet und eingetragen, da musst du nichts machen.
    Die einzigen Variablen wo du was eintragen musst, sind 10_minWertPrognose_kWh ab welcher Prognose für den nächsten Tag in kWh die Notstromreserve verwendet werden darf und 10_Offset_sunriseEnd wie viele Minuten nach Sonnenaufgang soll die Notstromreserve noch abdecken bevor die Batterie leer ist.
    Wenn du bei 10_Offset_sunriseEnd z. B. 0 eintragen würdest, dann wird anhand vom berechnetet Durchschnittsverbrauch vom Vortag mit dem Entladen der Notstromreserve gestartet, sodass die Batterie bis zum Sonnenaufgang ausreicht. Wenn du da z. B. 60 einträgst, wird später mit dem Entladen gestartet, sodass die Batterie erst 60 Min. nach Sonnenaufgang leer ist.

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

    @arnod
    Hi Arno ich habe das Script Autonomiezeitberchnung aktualisiert und an die neuen Bedingungen / RSCP Adapter und deinem aktuellen Sript angepasst. Falls du oder andere es noch benutzten kann es hier kopiert werden.

    /*
    E3DC dynamische Autonomiezeitberechnung bis zur eingestellten Reserve
    von Smartboard 
    28.09.2020
    V0.0.1  -Dynamische Berechnung der Batterie  Autonomiezeit bei Entladung anhand der Modbusinformationen 
            BatSoc und Batterie_Leistung unter Berücksichtigung der Notstromreserve.   
            Für anzeige in Vis..
            Autonomiezeit in Vis auf Sichtbarkeit bei != 0 einstellen damit Diese nur bei Entnahme angezeigt wird.
            BatSoc in kwh   
    29.09.2020
    V0.0.2 -Berechnung auf Durchschnittswert der Autonomiezeit erweitert,  dadurch wird die Zeitanzeige ruhiger und gibt einen gemittelten 
           Wert wieder, welcher auch aussagekräftiger ist.
           - Notstromreserve wird nun aus Sript E3DC Control von ArnoD eingelesen. Sowie unterscheidung zur manuellen Eingabe  falls in E3DC eine 
           Notstromreserve hinterlegt wurde. Somit bleibt die Autonomie Berechnung automatisch aktuell sollte in E3DC Control etwas angepasst werden.        
    30.09.2020
    V0.0.3- Autonomiezeit Anzeige in Minuten wenn < 1 Stunde . State Autonomiezeit geändert von type numnber zu string.
    03.10.2020
    V0.0.4- debug überarbeitet für Anzeige im Log Adapter
    07.10.2020
    V0.0.6 - Berechnungsfehler, welche -Werte erzeugten wurden behoben.
             Ausgabe der 1. Autonomiezeitberechnung sofort anzeigen dann wird auf Durchschnittswert umgeschalte
    20.10.2020
    V0.0.7 - Hinweis stevie77 Wirkungsgrad in Berechnung einbeziehen. laut Datenblatt: max. Systemwirkungsgrad inkl. Batterie (%) > 88
    Bei 13 KW 13 / 100 * 88 = 11.44 Bemerkung .Vermutlich kann hier 1 eingetragen werden, da im Verbrauchswert Watt schon die die Verluste inkludiert sind.
    21.10.2020
    V0.0.7 - Hinweis stevie77 Tiefenentladeschutz bei 10 % mit  in Berechnung einbeziehen. 
    V0.0.8 - Berücksichtung Notstrombetrieb: Im Normalbetrieb erfolgt die Autonomierzeitberechnung
             bis zur Notstromreserve . Im Notstrombetrieb wird die Autonomiezeit nun weiter berechnet 
             und die Berechnung erfolgt dann bis zur Nettokapazitätsgrenze (Entladeschutz).
             Die Anzeige in kWh zeigt immer die Nettokapazität bis zum Entladeschutz.
    13.11.2022
    V0.0.9 - Notstromreserve nun aus E3DC-Charge-Control importiert. Lastabwurf ist entfallen
    13.11.2022
    v0.1.0 - Wirkungsgrad und Entladetiefe bei Autonomieberechnung entfernt, da dies zu Fehlberechnungen führt. Die Entnommene Leistung beinhaltet 
            ja schon die Verluste, somit kann mit dem Brutto gerechnet werden. SOH einbezogen. 
    11.01.2023
    v0.1.1 - Berechnungsformel Autonomiteit geändert. Anderer Rechenweg. 
    */        
    
    //Konfiguration
    var debug = false;
    var SpeicherNetto = 18.525; // kw/h hier die Speichergröße in kwh abzügl der Sicherheitsreserve 5 %
    var cron1 = 6; // hier die Schedulezeit - Triggerhäufigkeit alle x Sekunden für Zeitberechnung eintragen
    var Counter = 10; // Hier die Anzahl der Zeitberechnungen eintragen um einen Durchschnitswert zu ermitteln
    
    const fC = false;
    const Statepfad = 'javascript.' + instance + '.PVAnlage.Autonomie.';
    
    //Variable für Cronjob start stop
    var Timer = null;
    //Variable Hilfsmerker
    var Merker = true;
    //Variablen zur Berechnung der Zeiten
    var Autonomiezeit = 0;// bis Notstromreserve
    // Variablen für Durchschnittsberechnung
    var Count = 0;
    var Summe = 0;
    // Wert gleich anzeigen
    var Anzeige = false;
    // Variable für Bat Soc in kwh abzüglich Notstromreserve
    var BatSockWh = 0;
    var Entnahme = 0;
    var BatSoc = 0;
    var Speicher = 0;
    var Asoc1 = 0;
    var Asoc2 = 0;
    var Asoc = 0;
    
    
    //states to create Ergebnisse
    const idAutonomiezeit = Statepfad + 'Autonomiezeit';   
    const idBatSockWh = Statepfad + 'Batteriekapazitaet';  
    
    //Berechnungsgrundlagen
    
    const idAsoc1 = 'e3dc-rscp.0.BAT.BAT_0.ASOC'/*Alterungszustand*/
    const idAsoc2 = 'e3dc-rscp.0.BAT.BAT_1.ASOC'/*Alterungszustand*/
    
    const idBatEntnahme = 'modbus.1.holdingRegisters.40070_Batterie_Leistung'/*Batterie-Leistung in Watt*/;
    const idBatSoc = 'modbus.1.holdingRegisters.40083_Batterie_SOC'/*Batterie-SOC in Prozent*/;
    const idNotstrombetrieb = 'modbus.1.holdingRegisters.40084_Emergency_Power_Status'/*Emergency-Power Status*/;
    const idE3DCReserve = 'javascript.1.PVAnlage.E3DC-Control.Allgemein.Notstrom_akt'/*aktuell berechnete Notstromreserve*/;
    
    
    //states create
    // Autonomiezeit in Vis auf Sichtbarkeit bei != 0 einstellen damit nur Sichtbar bei Entnahme
    createState(idAutonomiezeit, 0, fC, { type: 'string', name: 'Autonomiezeit',role:'text'});
    createState(idBatSockWh, 0, fC, { type: 'number', name: 'Batteriekapazität',role:'value', unit: ' kWh'});
    if(fC && debug)log('force Creation Aktiv States angelegt oder überschrieben');
    
    //Scriptstart
    setState(idAutonomiezeit, '0' ,true);  
    setTimeout( function(){
    Berechnung();
    },500);
    
    // Trigger Berechnung Aktueller Bat Soc in kwh
    on(idBatSoc, function(dp) { 
    if(debug)log('Batterie E3DC: Trigger BatSoc aktiv. BatSoc beträgt: '+ dp.state.val +' %'); 
    Berechnung();
    });
    
    
    
    //Berechnung Aktueller Bat Soc in kwh und Wert in State schreiben
    function Berechnung(){    
    BatSoc = getState(idBatSoc).val;
    Asoc1 = getState(idAsoc1).val;
    Asoc2 = getState(idAsoc2).val;
    Asoc = (Asoc1+Asoc2)/2;
    Speicher = SpeicherNetto/100*Asoc;
    setState(idBatSockWh,Math.round(((Speicher/100) * BatSoc)*100)/100,true);  
    if(debug)log('Batterie E3DC: Die Aktuell verfügbare Speicherkapazität ist: '+ getState(idBatSockWh).val+' kWh'); 
    }
    
    // Schedule Berechnung Autonomiezeit starten bei Entnahme
    on(idBatEntnahme, function(dp) {
        if(dp.state.val < 0 ){
        if(Merker)schedulestart();
        Merker = false;
        if(debug)log('Batterie E3DC: Aktuelle Entnahmeleistung: ' + dp.state.val +' Watt');
        }
    });
    
    //Berechnung Autonomiezeit
    function schedulestart(){
    if(debug)log('Batterie E3DC: Funktion Schedulestart aktiv');  
    var cronjob = "*/"+cron1+" * * * * *";  
    Timer = schedule(cronjob, function(){   
    if(debug)log('Batterie E3DC: Schedule cronjob aktiv');       
    Entnahme = getState (idBatEntnahme).val;
    BatSockWh = getState (idBatSockWh).val;
    BatSoc = getState(idBatSoc).val;
    var Reserve = getState(idE3DCReserve).val;
    var Notstrombetrieb = getState(idNotstrombetrieb).val;
    if  (Notstrombetrieb !=2){
    Reserve = 0;
    }
    setTimeout(function(){
    if(Entnahme<0){
    //BatSockWh = Math.round(BatSockWh - (Speicher/100*Reserve*100)/100);
    BatSockWh = BatSockWh/BatSoc*(BatSoc-Reserve);
    if(debug)log('Batterie E3DC: aktuelle Netto Gesamtkapazität abzüglich der Notstromreserve ist:  '+ BatSockWh + ' kWh.');
    setTimeout(function(){
    Autonomiezeit = Math.round(BatSockWh*1000/Entnahme*-1*100)/100;    
    Durchschnitt();
    if(Anzeige === false && Autonomiezeit >0){
    setState(idAutonomiezeit, Autonomiezeit +' h',true);
    Anzeige = true;
    }
    if(debug)log('Batterie E3DC: Autonomiezeit neu berechnet auf:  '+ Autonomiezeit + ' h.');
    },100);
    }else{
    //Berechnung stoppen bei Entnahme 0 und Autonomiezeit auf 0 setzen
            if(Entnahme >=0){
            clearSchedule(Timer);
            Merker = true;
            if(debug)log('Batterie E3DC: Schedule cronjob gestoppt weil keine Entnahme');
            setState(idAutonomiezeit,'0',true);
            Anzeige = false;
                    }
                }
            },100);   
        });
    }
    
    // Zaehlem für Durchschnittsberechnung
    
    function Durchschnitt(){
    Count ++
    Summe = Summe + Autonomiezeit;
    if(debug)log ('Summe: ' + Summe + ' Zaehler: '+Count+ ' Addition: + ' + Autonomiezeit);
    if(Count===Counter){
    var Zeit= Summe/Count;
    setTimeout(function(){
    if(debug)log('Batterie E3DC: Aktuelle Netto Speicherkapazität beträgt: '+ getState(idBatSockWh).val+' kWh, abzüglich der Notstromreserve '+BatSockWh+ ' kWh' );     
    if(Zeit>=1){    
    setState(idAutonomiezeit,+ Math.round(Zeit*100)/100 +' h',true);  
    if(debug)log('Batterie E3DC: Autonomiezeit beträgt: '+ Math.round(Zeit*10)/10 + ' h');
        }
    if(Zeit<1 && Zeit >0){       
    setState(idAutonomiezeit, + Math.round((Zeit*60)*100/100)+' min',true);
    if(debug)log('Batterie E3DC: Autonomiezeit bis Notstromreserve beträgt: '+Math.round((Zeit*60)*100/100) +' min.');
        }
    if(Zeit < 0){
    setState(idAutonomiezeit, '0' ,true);
    if(debug)log('Batterie E3DC: Autonomiezeit beträgt: 0 min.');
        }
    Count=0;
    Summe=0;
    if(debug)log('Batterie E3DC: Reset: Count =  '+ Count+ ' Summe = ' + Summe);
            },100);  
        }
    }
    
    
    
    A A 2 Replies Last reply
    2
    • smartboartS smartboart

      @arnod
      Hi Arno ich habe das Script Autonomiezeitberchnung aktualisiert und an die neuen Bedingungen / RSCP Adapter und deinem aktuellen Sript angepasst. Falls du oder andere es noch benutzten kann es hier kopiert werden.

      /*
      E3DC dynamische Autonomiezeitberechnung bis zur eingestellten Reserve
      von Smartboard 
      28.09.2020
      V0.0.1  -Dynamische Berechnung der Batterie  Autonomiezeit bei Entladung anhand der Modbusinformationen 
              BatSoc und Batterie_Leistung unter Berücksichtigung der Notstromreserve.   
              Für anzeige in Vis..
              Autonomiezeit in Vis auf Sichtbarkeit bei != 0 einstellen damit Diese nur bei Entnahme angezeigt wird.
              BatSoc in kwh   
      29.09.2020
      V0.0.2 -Berechnung auf Durchschnittswert der Autonomiezeit erweitert,  dadurch wird die Zeitanzeige ruhiger und gibt einen gemittelten 
             Wert wieder, welcher auch aussagekräftiger ist.
             - Notstromreserve wird nun aus Sript E3DC Control von ArnoD eingelesen. Sowie unterscheidung zur manuellen Eingabe  falls in E3DC eine 
             Notstromreserve hinterlegt wurde. Somit bleibt die Autonomie Berechnung automatisch aktuell sollte in E3DC Control etwas angepasst werden.        
      30.09.2020
      V0.0.3- Autonomiezeit Anzeige in Minuten wenn < 1 Stunde . State Autonomiezeit geändert von type numnber zu string.
      03.10.2020
      V0.0.4- debug überarbeitet für Anzeige im Log Adapter
      07.10.2020
      V0.0.6 - Berechnungsfehler, welche -Werte erzeugten wurden behoben.
               Ausgabe der 1. Autonomiezeitberechnung sofort anzeigen dann wird auf Durchschnittswert umgeschalte
      20.10.2020
      V0.0.7 - Hinweis stevie77 Wirkungsgrad in Berechnung einbeziehen. laut Datenblatt: max. Systemwirkungsgrad inkl. Batterie (%) > 88
      Bei 13 KW 13 / 100 * 88 = 11.44 Bemerkung .Vermutlich kann hier 1 eingetragen werden, da im Verbrauchswert Watt schon die die Verluste inkludiert sind.
      21.10.2020
      V0.0.7 - Hinweis stevie77 Tiefenentladeschutz bei 10 % mit  in Berechnung einbeziehen. 
      V0.0.8 - Berücksichtung Notstrombetrieb: Im Normalbetrieb erfolgt die Autonomierzeitberechnung
               bis zur Notstromreserve . Im Notstrombetrieb wird die Autonomiezeit nun weiter berechnet 
               und die Berechnung erfolgt dann bis zur Nettokapazitätsgrenze (Entladeschutz).
               Die Anzeige in kWh zeigt immer die Nettokapazität bis zum Entladeschutz.
      13.11.2022
      V0.0.9 - Notstromreserve nun aus E3DC-Charge-Control importiert. Lastabwurf ist entfallen
      13.11.2022
      v0.1.0 - Wirkungsgrad und Entladetiefe bei Autonomieberechnung entfernt, da dies zu Fehlberechnungen führt. Die Entnommene Leistung beinhaltet 
              ja schon die Verluste, somit kann mit dem Brutto gerechnet werden. SOH einbezogen. 
      11.01.2023
      v0.1.1 - Berechnungsformel Autonomiteit geändert. Anderer Rechenweg. 
      */        
      
      //Konfiguration
      var debug = false;
      var SpeicherNetto = 18.525; // kw/h hier die Speichergröße in kwh abzügl der Sicherheitsreserve 5 %
      var cron1 = 6; // hier die Schedulezeit - Triggerhäufigkeit alle x Sekunden für Zeitberechnung eintragen
      var Counter = 10; // Hier die Anzahl der Zeitberechnungen eintragen um einen Durchschnitswert zu ermitteln
      
      const fC = false;
      const Statepfad = 'javascript.' + instance + '.PVAnlage.Autonomie.';
      
      //Variable für Cronjob start stop
      var Timer = null;
      //Variable Hilfsmerker
      var Merker = true;
      //Variablen zur Berechnung der Zeiten
      var Autonomiezeit = 0;// bis Notstromreserve
      // Variablen für Durchschnittsberechnung
      var Count = 0;
      var Summe = 0;
      // Wert gleich anzeigen
      var Anzeige = false;
      // Variable für Bat Soc in kwh abzüglich Notstromreserve
      var BatSockWh = 0;
      var Entnahme = 0;
      var BatSoc = 0;
      var Speicher = 0;
      var Asoc1 = 0;
      var Asoc2 = 0;
      var Asoc = 0;
      
      
      //states to create Ergebnisse
      const idAutonomiezeit = Statepfad + 'Autonomiezeit';   
      const idBatSockWh = Statepfad + 'Batteriekapazitaet';  
      
      //Berechnungsgrundlagen
      
      const idAsoc1 = 'e3dc-rscp.0.BAT.BAT_0.ASOC'/*Alterungszustand*/
      const idAsoc2 = 'e3dc-rscp.0.BAT.BAT_1.ASOC'/*Alterungszustand*/
      
      const idBatEntnahme = 'modbus.1.holdingRegisters.40070_Batterie_Leistung'/*Batterie-Leistung in Watt*/;
      const idBatSoc = 'modbus.1.holdingRegisters.40083_Batterie_SOC'/*Batterie-SOC in Prozent*/;
      const idNotstrombetrieb = 'modbus.1.holdingRegisters.40084_Emergency_Power_Status'/*Emergency-Power Status*/;
      const idE3DCReserve = 'javascript.1.PVAnlage.E3DC-Control.Allgemein.Notstrom_akt'/*aktuell berechnete Notstromreserve*/;
      
      
      //states create
      // Autonomiezeit in Vis auf Sichtbarkeit bei != 0 einstellen damit nur Sichtbar bei Entnahme
      createState(idAutonomiezeit, 0, fC, { type: 'string', name: 'Autonomiezeit',role:'text'});
      createState(idBatSockWh, 0, fC, { type: 'number', name: 'Batteriekapazität',role:'value', unit: ' kWh'});
      if(fC && debug)log('force Creation Aktiv States angelegt oder überschrieben');
      
      //Scriptstart
      setState(idAutonomiezeit, '0' ,true);  
      setTimeout( function(){
      Berechnung();
      },500);
      
      // Trigger Berechnung Aktueller Bat Soc in kwh
      on(idBatSoc, function(dp) { 
      if(debug)log('Batterie E3DC: Trigger BatSoc aktiv. BatSoc beträgt: '+ dp.state.val +' %'); 
      Berechnung();
      });
      
      
      
      //Berechnung Aktueller Bat Soc in kwh und Wert in State schreiben
      function Berechnung(){    
      BatSoc = getState(idBatSoc).val;
      Asoc1 = getState(idAsoc1).val;
      Asoc2 = getState(idAsoc2).val;
      Asoc = (Asoc1+Asoc2)/2;
      Speicher = SpeicherNetto/100*Asoc;
      setState(idBatSockWh,Math.round(((Speicher/100) * BatSoc)*100)/100,true);  
      if(debug)log('Batterie E3DC: Die Aktuell verfügbare Speicherkapazität ist: '+ getState(idBatSockWh).val+' kWh'); 
      }
      
      // Schedule Berechnung Autonomiezeit starten bei Entnahme
      on(idBatEntnahme, function(dp) {
          if(dp.state.val < 0 ){
          if(Merker)schedulestart();
          Merker = false;
          if(debug)log('Batterie E3DC: Aktuelle Entnahmeleistung: ' + dp.state.val +' Watt');
          }
      });
      
      //Berechnung Autonomiezeit
      function schedulestart(){
      if(debug)log('Batterie E3DC: Funktion Schedulestart aktiv');  
      var cronjob = "*/"+cron1+" * * * * *";  
      Timer = schedule(cronjob, function(){   
      if(debug)log('Batterie E3DC: Schedule cronjob aktiv');       
      Entnahme = getState (idBatEntnahme).val;
      BatSockWh = getState (idBatSockWh).val;
      BatSoc = getState(idBatSoc).val;
      var Reserve = getState(idE3DCReserve).val;
      var Notstrombetrieb = getState(idNotstrombetrieb).val;
      if  (Notstrombetrieb !=2){
      Reserve = 0;
      }
      setTimeout(function(){
      if(Entnahme<0){
      //BatSockWh = Math.round(BatSockWh - (Speicher/100*Reserve*100)/100);
      BatSockWh = BatSockWh/BatSoc*(BatSoc-Reserve);
      if(debug)log('Batterie E3DC: aktuelle Netto Gesamtkapazität abzüglich der Notstromreserve ist:  '+ BatSockWh + ' kWh.');
      setTimeout(function(){
      Autonomiezeit = Math.round(BatSockWh*1000/Entnahme*-1*100)/100;    
      Durchschnitt();
      if(Anzeige === false && Autonomiezeit >0){
      setState(idAutonomiezeit, Autonomiezeit +' h',true);
      Anzeige = true;
      }
      if(debug)log('Batterie E3DC: Autonomiezeit neu berechnet auf:  '+ Autonomiezeit + ' h.');
      },100);
      }else{
      //Berechnung stoppen bei Entnahme 0 und Autonomiezeit auf 0 setzen
              if(Entnahme >=0){
              clearSchedule(Timer);
              Merker = true;
              if(debug)log('Batterie E3DC: Schedule cronjob gestoppt weil keine Entnahme');
              setState(idAutonomiezeit,'0',true);
              Anzeige = false;
                      }
                  }
              },100);   
          });
      }
      
      // Zaehlem für Durchschnittsberechnung
      
      function Durchschnitt(){
      Count ++
      Summe = Summe + Autonomiezeit;
      if(debug)log ('Summe: ' + Summe + ' Zaehler: '+Count+ ' Addition: + ' + Autonomiezeit);
      if(Count===Counter){
      var Zeit= Summe/Count;
      setTimeout(function(){
      if(debug)log('Batterie E3DC: Aktuelle Netto Speicherkapazität beträgt: '+ getState(idBatSockWh).val+' kWh, abzüglich der Notstromreserve '+BatSockWh+ ' kWh' );     
      if(Zeit>=1){    
      setState(idAutonomiezeit,+ Math.round(Zeit*100)/100 +' h',true);  
      if(debug)log('Batterie E3DC: Autonomiezeit beträgt: '+ Math.round(Zeit*10)/10 + ' h');
          }
      if(Zeit<1 && Zeit >0){       
      setState(idAutonomiezeit, + Math.round((Zeit*60)*100/100)+' min',true);
      if(debug)log('Batterie E3DC: Autonomiezeit bis Notstromreserve beträgt: '+Math.round((Zeit*60)*100/100) +' min.');
          }
      if(Zeit < 0){
      setState(idAutonomiezeit, '0' ,true);
      if(debug)log('Batterie E3DC: Autonomiezeit beträgt: 0 min.');
          }
      Count=0;
      Summe=0;
      if(debug)log('Batterie E3DC: Reset: Count =  '+ Count+ ' Summe = ' + Summe);
              },100);  
          }
      }
      
      
      
      A Offline
      A Offline
      ArnoD
      wrote on last edited by
      #1888

      @smartboart
      Super, danke 👍

      1 Reply Last reply
      0
      • smartboartS smartboart

        @arnod
        Hi Arno ich habe das Script Autonomiezeitberchnung aktualisiert und an die neuen Bedingungen / RSCP Adapter und deinem aktuellen Sript angepasst. Falls du oder andere es noch benutzten kann es hier kopiert werden.

        /*
        E3DC dynamische Autonomiezeitberechnung bis zur eingestellten Reserve
        von Smartboard 
        28.09.2020
        V0.0.1  -Dynamische Berechnung der Batterie  Autonomiezeit bei Entladung anhand der Modbusinformationen 
                BatSoc und Batterie_Leistung unter Berücksichtigung der Notstromreserve.   
                Für anzeige in Vis..
                Autonomiezeit in Vis auf Sichtbarkeit bei != 0 einstellen damit Diese nur bei Entnahme angezeigt wird.
                BatSoc in kwh   
        29.09.2020
        V0.0.2 -Berechnung auf Durchschnittswert der Autonomiezeit erweitert,  dadurch wird die Zeitanzeige ruhiger und gibt einen gemittelten 
               Wert wieder, welcher auch aussagekräftiger ist.
               - Notstromreserve wird nun aus Sript E3DC Control von ArnoD eingelesen. Sowie unterscheidung zur manuellen Eingabe  falls in E3DC eine 
               Notstromreserve hinterlegt wurde. Somit bleibt die Autonomie Berechnung automatisch aktuell sollte in E3DC Control etwas angepasst werden.        
        30.09.2020
        V0.0.3- Autonomiezeit Anzeige in Minuten wenn < 1 Stunde . State Autonomiezeit geändert von type numnber zu string.
        03.10.2020
        V0.0.4- debug überarbeitet für Anzeige im Log Adapter
        07.10.2020
        V0.0.6 - Berechnungsfehler, welche -Werte erzeugten wurden behoben.
                 Ausgabe der 1. Autonomiezeitberechnung sofort anzeigen dann wird auf Durchschnittswert umgeschalte
        20.10.2020
        V0.0.7 - Hinweis stevie77 Wirkungsgrad in Berechnung einbeziehen. laut Datenblatt: max. Systemwirkungsgrad inkl. Batterie (%) > 88
        Bei 13 KW 13 / 100 * 88 = 11.44 Bemerkung .Vermutlich kann hier 1 eingetragen werden, da im Verbrauchswert Watt schon die die Verluste inkludiert sind.
        21.10.2020
        V0.0.7 - Hinweis stevie77 Tiefenentladeschutz bei 10 % mit  in Berechnung einbeziehen. 
        V0.0.8 - Berücksichtung Notstrombetrieb: Im Normalbetrieb erfolgt die Autonomierzeitberechnung
                 bis zur Notstromreserve . Im Notstrombetrieb wird die Autonomiezeit nun weiter berechnet 
                 und die Berechnung erfolgt dann bis zur Nettokapazitätsgrenze (Entladeschutz).
                 Die Anzeige in kWh zeigt immer die Nettokapazität bis zum Entladeschutz.
        13.11.2022
        V0.0.9 - Notstromreserve nun aus E3DC-Charge-Control importiert. Lastabwurf ist entfallen
        13.11.2022
        v0.1.0 - Wirkungsgrad und Entladetiefe bei Autonomieberechnung entfernt, da dies zu Fehlberechnungen führt. Die Entnommene Leistung beinhaltet 
                ja schon die Verluste, somit kann mit dem Brutto gerechnet werden. SOH einbezogen. 
        11.01.2023
        v0.1.1 - Berechnungsformel Autonomiteit geändert. Anderer Rechenweg. 
        */        
        
        //Konfiguration
        var debug = false;
        var SpeicherNetto = 18.525; // kw/h hier die Speichergröße in kwh abzügl der Sicherheitsreserve 5 %
        var cron1 = 6; // hier die Schedulezeit - Triggerhäufigkeit alle x Sekunden für Zeitberechnung eintragen
        var Counter = 10; // Hier die Anzahl der Zeitberechnungen eintragen um einen Durchschnitswert zu ermitteln
        
        const fC = false;
        const Statepfad = 'javascript.' + instance + '.PVAnlage.Autonomie.';
        
        //Variable für Cronjob start stop
        var Timer = null;
        //Variable Hilfsmerker
        var Merker = true;
        //Variablen zur Berechnung der Zeiten
        var Autonomiezeit = 0;// bis Notstromreserve
        // Variablen für Durchschnittsberechnung
        var Count = 0;
        var Summe = 0;
        // Wert gleich anzeigen
        var Anzeige = false;
        // Variable für Bat Soc in kwh abzüglich Notstromreserve
        var BatSockWh = 0;
        var Entnahme = 0;
        var BatSoc = 0;
        var Speicher = 0;
        var Asoc1 = 0;
        var Asoc2 = 0;
        var Asoc = 0;
        
        
        //states to create Ergebnisse
        const idAutonomiezeit = Statepfad + 'Autonomiezeit';   
        const idBatSockWh = Statepfad + 'Batteriekapazitaet';  
        
        //Berechnungsgrundlagen
        
        const idAsoc1 = 'e3dc-rscp.0.BAT.BAT_0.ASOC'/*Alterungszustand*/
        const idAsoc2 = 'e3dc-rscp.0.BAT.BAT_1.ASOC'/*Alterungszustand*/
        
        const idBatEntnahme = 'modbus.1.holdingRegisters.40070_Batterie_Leistung'/*Batterie-Leistung in Watt*/;
        const idBatSoc = 'modbus.1.holdingRegisters.40083_Batterie_SOC'/*Batterie-SOC in Prozent*/;
        const idNotstrombetrieb = 'modbus.1.holdingRegisters.40084_Emergency_Power_Status'/*Emergency-Power Status*/;
        const idE3DCReserve = 'javascript.1.PVAnlage.E3DC-Control.Allgemein.Notstrom_akt'/*aktuell berechnete Notstromreserve*/;
        
        
        //states create
        // Autonomiezeit in Vis auf Sichtbarkeit bei != 0 einstellen damit nur Sichtbar bei Entnahme
        createState(idAutonomiezeit, 0, fC, { type: 'string', name: 'Autonomiezeit',role:'text'});
        createState(idBatSockWh, 0, fC, { type: 'number', name: 'Batteriekapazität',role:'value', unit: ' kWh'});
        if(fC && debug)log('force Creation Aktiv States angelegt oder überschrieben');
        
        //Scriptstart
        setState(idAutonomiezeit, '0' ,true);  
        setTimeout( function(){
        Berechnung();
        },500);
        
        // Trigger Berechnung Aktueller Bat Soc in kwh
        on(idBatSoc, function(dp) { 
        if(debug)log('Batterie E3DC: Trigger BatSoc aktiv. BatSoc beträgt: '+ dp.state.val +' %'); 
        Berechnung();
        });
        
        
        
        //Berechnung Aktueller Bat Soc in kwh und Wert in State schreiben
        function Berechnung(){    
        BatSoc = getState(idBatSoc).val;
        Asoc1 = getState(idAsoc1).val;
        Asoc2 = getState(idAsoc2).val;
        Asoc = (Asoc1+Asoc2)/2;
        Speicher = SpeicherNetto/100*Asoc;
        setState(idBatSockWh,Math.round(((Speicher/100) * BatSoc)*100)/100,true);  
        if(debug)log('Batterie E3DC: Die Aktuell verfügbare Speicherkapazität ist: '+ getState(idBatSockWh).val+' kWh'); 
        }
        
        // Schedule Berechnung Autonomiezeit starten bei Entnahme
        on(idBatEntnahme, function(dp) {
            if(dp.state.val < 0 ){
            if(Merker)schedulestart();
            Merker = false;
            if(debug)log('Batterie E3DC: Aktuelle Entnahmeleistung: ' + dp.state.val +' Watt');
            }
        });
        
        //Berechnung Autonomiezeit
        function schedulestart(){
        if(debug)log('Batterie E3DC: Funktion Schedulestart aktiv');  
        var cronjob = "*/"+cron1+" * * * * *";  
        Timer = schedule(cronjob, function(){   
        if(debug)log('Batterie E3DC: Schedule cronjob aktiv');       
        Entnahme = getState (idBatEntnahme).val;
        BatSockWh = getState (idBatSockWh).val;
        BatSoc = getState(idBatSoc).val;
        var Reserve = getState(idE3DCReserve).val;
        var Notstrombetrieb = getState(idNotstrombetrieb).val;
        if  (Notstrombetrieb !=2){
        Reserve = 0;
        }
        setTimeout(function(){
        if(Entnahme<0){
        //BatSockWh = Math.round(BatSockWh - (Speicher/100*Reserve*100)/100);
        BatSockWh = BatSockWh/BatSoc*(BatSoc-Reserve);
        if(debug)log('Batterie E3DC: aktuelle Netto Gesamtkapazität abzüglich der Notstromreserve ist:  '+ BatSockWh + ' kWh.');
        setTimeout(function(){
        Autonomiezeit = Math.round(BatSockWh*1000/Entnahme*-1*100)/100;    
        Durchschnitt();
        if(Anzeige === false && Autonomiezeit >0){
        setState(idAutonomiezeit, Autonomiezeit +' h',true);
        Anzeige = true;
        }
        if(debug)log('Batterie E3DC: Autonomiezeit neu berechnet auf:  '+ Autonomiezeit + ' h.');
        },100);
        }else{
        //Berechnung stoppen bei Entnahme 0 und Autonomiezeit auf 0 setzen
                if(Entnahme >=0){
                clearSchedule(Timer);
                Merker = true;
                if(debug)log('Batterie E3DC: Schedule cronjob gestoppt weil keine Entnahme');
                setState(idAutonomiezeit,'0',true);
                Anzeige = false;
                        }
                    }
                },100);   
            });
        }
        
        // Zaehlem für Durchschnittsberechnung
        
        function Durchschnitt(){
        Count ++
        Summe = Summe + Autonomiezeit;
        if(debug)log ('Summe: ' + Summe + ' Zaehler: '+Count+ ' Addition: + ' + Autonomiezeit);
        if(Count===Counter){
        var Zeit= Summe/Count;
        setTimeout(function(){
        if(debug)log('Batterie E3DC: Aktuelle Netto Speicherkapazität beträgt: '+ getState(idBatSockWh).val+' kWh, abzüglich der Notstromreserve '+BatSockWh+ ' kWh' );     
        if(Zeit>=1){    
        setState(idAutonomiezeit,+ Math.round(Zeit*100)/100 +' h',true);  
        if(debug)log('Batterie E3DC: Autonomiezeit beträgt: '+ Math.round(Zeit*10)/10 + ' h');
            }
        if(Zeit<1 && Zeit >0){       
        setState(idAutonomiezeit, + Math.round((Zeit*60)*100/100)+' min',true);
        if(debug)log('Batterie E3DC: Autonomiezeit bis Notstromreserve beträgt: '+Math.round((Zeit*60)*100/100) +' min.');
            }
        if(Zeit < 0){
        setState(idAutonomiezeit, '0' ,true);
        if(debug)log('Batterie E3DC: Autonomiezeit beträgt: 0 min.');
            }
        Count=0;
        Summe=0;
        if(debug)log('Batterie E3DC: Reset: Count =  '+ Count+ ' Summe = ' + Summe);
                },100);  
            }
        }
        
        
        
        A Offline
        A Offline
        Abyss
        wrote on last edited by
        #1889

        @smartboart
        Danke für das Update des neuen Scriptes.
        @ArnoD
        Danke für das neue Charge-Control und die neue Art der Regelung.
        Klasse Sache!!
        Freue mich schon auf die Möglichkeit der manuellen Speicherladung. 😉

        Nach langer Pause hab ich mich mal wieder drangesetzt um meine Systeme auf den aktuellen Stand zu bringen.
        Bei deinem Autonomie-Script scheitere ich grad an folgender Zeile:
        const idE3DCReserve = 'javascript.0.PVAnlage.E3DC-Control.Allgemein.Notstrom_akt'/aktuell berechnete Notstromreserve/;

        Wo kommt das Objekt her? das gibt es bei mir nicht und wird weder durch Charge-Control noch die Autonomiezeit erstellt?
        Hab ich hier was verpasst?
        Ohne das bekomme ich nur Fehlermeldungen und die Berechnung läuft nicht.

        Danke und Grüße

        H smartboartS 2 Replies Last reply
        0
        • A Abyss

          @smartboart
          Danke für das Update des neuen Scriptes.
          @ArnoD
          Danke für das neue Charge-Control und die neue Art der Regelung.
          Klasse Sache!!
          Freue mich schon auf die Möglichkeit der manuellen Speicherladung. 😉

          Nach langer Pause hab ich mich mal wieder drangesetzt um meine Systeme auf den aktuellen Stand zu bringen.
          Bei deinem Autonomie-Script scheitere ich grad an folgender Zeile:
          const idE3DCReserve = 'javascript.0.PVAnlage.E3DC-Control.Allgemein.Notstrom_akt'/aktuell berechnete Notstromreserve/;

          Wo kommt das Objekt her? das gibt es bei mir nicht und wird weder durch Charge-Control noch die Autonomiezeit erstellt?
          Hab ich hier was verpasst?
          Ohne das bekomme ich nur Fehlermeldungen und die Berechnung läuft nicht.

          Danke und Grüße

          H Offline
          H Offline
          HDAndy
          wrote on last edited by
          #1890

          @abyss
          Das Objekt legt Charge-Control an und befindet sich bei mir unter: '0_userdata.0.Charge_Control.Allgemein.Notstrom_akt'.

          Pfad ändern und geht 🙂

          A 1 Reply Last reply
          1
          • A Abyss

            @smartboart
            Danke für das Update des neuen Scriptes.
            @ArnoD
            Danke für das neue Charge-Control und die neue Art der Regelung.
            Klasse Sache!!
            Freue mich schon auf die Möglichkeit der manuellen Speicherladung. 😉

            Nach langer Pause hab ich mich mal wieder drangesetzt um meine Systeme auf den aktuellen Stand zu bringen.
            Bei deinem Autonomie-Script scheitere ich grad an folgender Zeile:
            const idE3DCReserve = 'javascript.0.PVAnlage.E3DC-Control.Allgemein.Notstrom_akt'/aktuell berechnete Notstromreserve/;

            Wo kommt das Objekt her? das gibt es bei mir nicht und wird weder durch Charge-Control noch die Autonomiezeit erstellt?
            Hab ich hier was verpasst?
            Ohne das bekomme ich nur Fehlermeldungen und die Berechnung läuft nicht.

            Danke und Grüße

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

            @abyss Ja sorry..eben erst gelesen...arnos Script legt alles unter userdata an..ich habe das bei mir geändert weil ich nie auf userdata umgestellt habe und vergessen darauf hinzuweisen...

            1 Reply Last reply
            0
            • H HDAndy

              @abyss
              Das Objekt legt Charge-Control an und befindet sich bei mir unter: '0_userdata.0.Charge_Control.Allgemein.Notstrom_akt'.

              Pfad ändern und geht 🙂

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

              @hdandy

              Danke euch für den Hinweis.
              Hab alles durchgeklickt aber an der Stelle wohl aktiv überlesen. 😉
              Jetzt sieht es deutlich besser aus.

              Danke nochmal!!

              1 Reply Last reply
              0
              • A ArnoD

                Neue Version Charge-Control auf GitHub hochgeladen.
                Version: 1.1.5
                Änderungen:

                • Entladen wird bei Erreichen der Notstromreserve gestoppt und erst bei +1 % Batterie SOC über Notstromreserve SOC wieder freigeben.
                • Neue Objekt ID 0_userdata.0.Charge_Control.Allgemein.Automatik_Regelung, um die Regelung vom Script in VIS ausschalten zu können. Achtung! Es wird dann auch keine Notstromreserve mehr berücksichtigt und man muss diese, wenn gewünscht, wieder direkt beim E3DC einstellen.
                • Fehler behoben das die untere Ladeschwelle nicht mehr berücksichtigt wurde
                A Offline
                A Offline
                ArnoD
                wrote on last edited by
                #1893

                Neue Version Charge-Control auf GitHub hochgeladen.
                Version: 1.1.6
                Änderungen:

                • Bei der Abfragezeit der Daten von Solcast, werden die Minuten zufällig berechnet. Solcast Daten werden jetzt zwischen 4:01 Uhr und 4:59 Uhr abgerufen.
                • Fehler in Funktion CheckPrognose() behoben. Die Variable Notstrom_SOC_Proz wurde hier auf Einstellwert zurückgesetzt.
                A 1 Reply Last reply
                0
                • J jans_ios

                  Ich habe leider nach wie vor die Situation, dass meine Wallbox bei dem Modbus-InputRegister "modbus.1.inputRegisters.128_total_kwh" immer eine 0 liefert. Ich vermute mittlerweile die Ursache eher in der Wallbox-Konfiguration, gerade der Bereich "Energy Meter" könnte hier relevant sein. Auch kommt mir der Status "Energy Charge Sequence" auf der Status-Seite komisch vor - da zählt nichts hoch, laut Handbuch soll hier die "Energiemenge, die im aktuellen Ladevorgang bereits geladen wurde" angezeigt werden - bei mir nichts 😞

                  Ich habe mal Screenshots aus dem Webinterface meiner Wallbox gemacht. Kann die mal bitte jemand vergleichen mit seinen Settings?
                  Danke!
                  Status.jpg Configuration.jpg Energy Meter.jpg

                  Z Offline
                  Z Offline
                  Zorrokater
                  wrote on last edited by Zorrokater
                  #1894

                  @jans_ios Hi, wie bist Du auf die Website der Wallbox gekommen. Mir fehlt das Kennwort. Kannst Du mir bitte helfen?
                  Liebe Grüße Zorrokater

                  smartboartS 1 Reply Last reply
                  0
                  • Z Zorrokater

                    @jans_ios Hi, wie bist Du auf die Website der Wallbox gekommen. Mir fehlt das Kennwort. Kannst Du mir bitte helfen?
                    Liebe Grüße Zorrokater

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

                    @zorrokater probier mal wallbe7213

                    1 Reply Last reply
                    0
                    • J Offline
                      J Offline
                      jans_ios
                      wrote on last edited by
                      #1896

                      @ArnoD
                      Ich hatte (bis eben) den Wert "Unload" auf 32% stehen. Das führte heute Nacht und auch in einer vorherigen Nacht dazu, dass der Speicher ab 01:00 Uhr bis auf 32% ins Netz entladen wurde. Ich hatte es eigentlich so verstanden, dass dies erst bei PV-Produktions-Beginn passieren sollte, was ja auch Sinn machen würde - liegt hier ein Fehler vor? Ich schicke Dir mal per PN mein heutiges Log, da kann man das schön sehen.

                      Außerdem: Besteht die Möglichkeit, den hier ins Netz eingespeisten Strom "umzulenken" bspw. zu einem MyPV-Heizstab in der Heizung? Das würde mir mehr bringen in Richtung Eigenverbrauch.

                      Danke!

                      Gruß, Jan

                      A 1 Reply Last reply
                      0
                      • J jans_ios

                        @ArnoD
                        Ich hatte (bis eben) den Wert "Unload" auf 32% stehen. Das führte heute Nacht und auch in einer vorherigen Nacht dazu, dass der Speicher ab 01:00 Uhr bis auf 32% ins Netz entladen wurde. Ich hatte es eigentlich so verstanden, dass dies erst bei PV-Produktions-Beginn passieren sollte, was ja auch Sinn machen würde - liegt hier ein Fehler vor? Ich schicke Dir mal per PN mein heutiges Log, da kann man das schön sehen.

                        Außerdem: Besteht die Möglichkeit, den hier ins Netz eingespeisten Strom "umzulenken" bspw. zu einem MyPV-Heizstab in der Heizung? Das würde mir mehr bringen in Richtung Eigenverbrauch.

                        Danke!

                        Gruß, Jan

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

                        @jans_ios
                        Hallo Jan,
                        der Link zum Download funktioniert aktuell nicht, da bekomme ich immer eine Zeitüberschreitung.
                        Ich werde es aber später noch mal versuchen.

                        Gruß Arno

                        J 1 Reply Last reply
                        0
                        • A ArnoD

                          @jans_ios
                          Hallo Jan,
                          der Link zum Download funktioniert aktuell nicht, da bekomme ich immer eine Zeitüberschreitung.
                          Ich werde es aber später noch mal versuchen.

                          Gruß Arno

                          J Offline
                          J Offline
                          jans_ios
                          wrote on last edited by
                          #1898

                          @arnod
                          Mist, da habe ich wohl gerade ein kleineres Problem 😉 Schön, dass sowas immer dann auftritt, wenn man selbst nicht zuhause ist.
                          Ich poste hier mal ein paar relevante Zeilen. So beginnt es um 01:00 Uhr:

                          2023-02-14 01:00:00.243  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" -==== Vor Regelbeginn ====- "}##
                          2023-02-14 01:00:00.243  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" -==== 1 M_Power: -261 = Math.round(((Unload_SOC_Proz:32 - Batterie_SOC_Proz:46)*Speichergroesse_kWh: 18*10*3600) / (tRegelbeginn:34750 - Zeit_aktuell_UTC_sek:0)) ====- "}##
                          2023-02-14 01:00:00.290  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" Entladeleistung M_Power=-261 "}##
                          2023-02-14 01:00:00.290  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" Entladeleistung PowerGrid =-730"}##
                          2023-02-14 01:00:00.342  - warn: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen Schritt = 1 Set_Power_Mode = 2 entladen Set_Power_Value_W = -730 M_Power = -730 ====-"}##
                          2023-02-14 01:00:03.006  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" -==== 1 M_Power: -261 = Math.round(((Unload_SOC_Proz:32 - Batterie_SOC_Proz:46)*Speichergroesse_kWh: 18*10*3600) / (tRegelbeginn:34750 - Zeit_aktuell_UTC_sek:3)) ====- "}##
                          2023-02-14 01:00:03.054  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" Entladeleistung M_Power=-261 "}##
                          2023-02-14 01:00:03.055  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" Entladeleistung PowerGrid =-526"}##
                          2023-02-14 01:00:03.117  - warn: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen Schritt = 1 Set_Power_Mode = 2 entladen Set_Power_Value_W = -526 M_Power = -526 ====-"}##
                          2023-02-14 01:00:06.008  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" -==== 1 M_Power: -261 = Math.round(((Unload_SOC_Proz:32 - Batterie_SOC_Proz:46)*Speichergroesse_kWh: 18*10*3600) / (tRegelbeginn:34750 - Zeit_aktuell_UTC_sek:6)) ====- "}##
                          2023-02-14 01:00:06.053  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" Entladeleistung M_Power=-261 "}##
                          2023-02-14 01:00:06.054  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" Entladeleistung PowerGrid =-927"}##
                          2023-02-14 01:00:06.068  - warn: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen Schritt = 1 Set_Power_Mode = 2 entladen Set_Power_Value_W = -927 M_Power = -927 ====-"}##
                          2023-02-14 01:00:09.072  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" -==== 1 M_Power: -261 = Math.round(((Unload_SOC_Proz:32 - Batterie_SOC_Proz:46)*Speichergroesse_kWh: 18*10*3600) / (tRegelbeginn:34750 - Zeit_aktuell_UTC_sek:9)) ====- "}##
                          2023-02-14 01:00:09.157  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" Entladeleistung M_Power=-261 "}##
                          2023-02-14 01:00:09.157  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" Entladeleistung PowerGrid =-509"}##
                          2023-02-14 01:00:09.222  - warn: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen Schritt = 1 Set_Power_Mode = 2 entladen Set_Power_Value_W = -509 M_Power = -509 ====-"}##
                          
                          

                          Und so endet es dann um 03:47 Uhr:

                          2023-02-14 03:47:12.050  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" Entladeleistung M_Power=-26 "}##
                          2023-02-14 03:47:12.050  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" Entladeleistung PowerGrid =-508"}##
                          2023-02-14 03:47:15.009  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" -==== 1 M_Power: -26 = Math.round(((Unload_SOC_Proz:32 - Batterie_SOC_Proz:33)*Speichergroesse_kWh: 18*10*3600) / (tRegelbeginn:34750 - Zeit_aktuell_UTC_sek:10035)) ====- "}##
                          2023-02-14 03:47:15.055  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" Entladeleistung M_Power=-26 "}##
                          2023-02-14 03:47:15.056  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" Entladeleistung PowerGrid =-519"}##
                          2023-02-14 03:47:18.012  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" -==== Laderegelung wird gestoppt ====- "}##
                          2023-02-14 03:47:18.058  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" -==== Regelung E3DC überlassen. Schritt = 1 SET_POWER_MODE = 0 normal ====- "}##
                          2023-02-14 03:47:21.010  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" -==== Laderegelung wird gestoppt ====- "}##
                          
                          A 1 Reply Last reply
                          0
                          • J jans_ios

                            @arnod
                            Mist, da habe ich wohl gerade ein kleineres Problem 😉 Schön, dass sowas immer dann auftritt, wenn man selbst nicht zuhause ist.
                            Ich poste hier mal ein paar relevante Zeilen. So beginnt es um 01:00 Uhr:

                            2023-02-14 01:00:00.243  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" -==== Vor Regelbeginn ====- "}##
                            2023-02-14 01:00:00.243  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" -==== 1 M_Power: -261 = Math.round(((Unload_SOC_Proz:32 - Batterie_SOC_Proz:46)*Speichergroesse_kWh: 18*10*3600) / (tRegelbeginn:34750 - Zeit_aktuell_UTC_sek:0)) ====- "}##
                            2023-02-14 01:00:00.290  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" Entladeleistung M_Power=-261 "}##
                            2023-02-14 01:00:00.290  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" Entladeleistung PowerGrid =-730"}##
                            2023-02-14 01:00:00.342  - warn: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen Schritt = 1 Set_Power_Mode = 2 entladen Set_Power_Value_W = -730 M_Power = -730 ====-"}##
                            2023-02-14 01:00:03.006  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" -==== 1 M_Power: -261 = Math.round(((Unload_SOC_Proz:32 - Batterie_SOC_Proz:46)*Speichergroesse_kWh: 18*10*3600) / (tRegelbeginn:34750 - Zeit_aktuell_UTC_sek:3)) ====- "}##
                            2023-02-14 01:00:03.054  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" Entladeleistung M_Power=-261 "}##
                            2023-02-14 01:00:03.055  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" Entladeleistung PowerGrid =-526"}##
                            2023-02-14 01:00:03.117  - warn: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen Schritt = 1 Set_Power_Mode = 2 entladen Set_Power_Value_W = -526 M_Power = -526 ====-"}##
                            2023-02-14 01:00:06.008  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" -==== 1 M_Power: -261 = Math.round(((Unload_SOC_Proz:32 - Batterie_SOC_Proz:46)*Speichergroesse_kWh: 18*10*3600) / (tRegelbeginn:34750 - Zeit_aktuell_UTC_sek:6)) ====- "}##
                            2023-02-14 01:00:06.053  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" Entladeleistung M_Power=-261 "}##
                            2023-02-14 01:00:06.054  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" Entladeleistung PowerGrid =-927"}##
                            2023-02-14 01:00:06.068  - warn: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen Schritt = 1 Set_Power_Mode = 2 entladen Set_Power_Value_W = -927 M_Power = -927 ====-"}##
                            2023-02-14 01:00:09.072  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" -==== 1 M_Power: -261 = Math.round(((Unload_SOC_Proz:32 - Batterie_SOC_Proz:46)*Speichergroesse_kWh: 18*10*3600) / (tRegelbeginn:34750 - Zeit_aktuell_UTC_sek:9)) ====- "}##
                            2023-02-14 01:00:09.157  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" Entladeleistung M_Power=-261 "}##
                            2023-02-14 01:00:09.157  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" Entladeleistung PowerGrid =-509"}##
                            2023-02-14 01:00:09.222  - warn: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen Schritt = 1 Set_Power_Mode = 2 entladen Set_Power_Value_W = -509 M_Power = -509 ====-"}##
                            
                            

                            Und so endet es dann um 03:47 Uhr:

                            2023-02-14 03:47:12.050  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" Entladeleistung M_Power=-26 "}##
                            2023-02-14 03:47:12.050  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" Entladeleistung PowerGrid =-508"}##
                            2023-02-14 03:47:15.009  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" -==== 1 M_Power: -26 = Math.round(((Unload_SOC_Proz:32 - Batterie_SOC_Proz:33)*Speichergroesse_kWh: 18*10*3600) / (tRegelbeginn:34750 - Zeit_aktuell_UTC_sek:10035)) ====- "}##
                            2023-02-14 03:47:15.055  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" Entladeleistung M_Power=-26 "}##
                            2023-02-14 03:47:15.056  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" Entladeleistung PowerGrid =-519"}##
                            2023-02-14 03:47:18.012  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" -==== Laderegelung wird gestoppt ====- "}##
                            2023-02-14 03:47:18.058  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" -==== Regelung E3DC überlassen. Schritt = 1 SET_POWER_MODE = 0 normal ====- "}##
                            2023-02-14 03:47:21.010  - info: javascript.0 (197) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" -==== Laderegelung wird gestoppt ====- "}##
                            
                            A Offline
                            A Offline
                            ArnoD
                            wrote on last edited by
                            #1899

                            @jans_ios

                            Welche Version vom Script hast du im Einsatz?
                            Der Fehler ist eigentlich, dass die Lade-\Entladefreigabe nicht deaktiviert wurde, warum auch immer.
                            Das sollte eigentlich mit der aktuellen Version nicht mehr passieren.

                            Ich schaue mir das mal genauer an, ob ich da was übersehen habe.

                            Gruß Arno

                            J 1 Reply Last reply
                            0
                            • A ArnoD

                              @jans_ios

                              Welche Version vom Script hast du im Einsatz?
                              Der Fehler ist eigentlich, dass die Lade-\Entladefreigabe nicht deaktiviert wurde, warum auch immer.
                              Das sollte eigentlich mit der aktuellen Version nicht mehr passieren.

                              Ich schaue mir das mal genauer an, ob ich da was übersehen habe.

                              Gruß Arno

                              J Offline
                              J Offline
                              jans_ios
                              wrote on last edited by
                              #1900

                              @arnod
                              Ich habe die aktuelle 1.1.6 im Einsatz

                              A 2 Replies Last reply
                              0
                              • J jans_ios

                                @arnod
                                Ich habe die aktuelle 1.1.6 im Einsatz

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

                                @jans_ios
                                Was ist bei dir aktuell für ein Notstrom SoC eingestellt?

                                1 Reply Last reply
                                0
                                • A ArnoD

                                  Neue Version Charge-Control auf GitHub hochgeladen.
                                  Version: 1.1.6
                                  Änderungen:

                                  • Bei der Abfragezeit der Daten von Solcast, werden die Minuten zufällig berechnet. Solcast Daten werden jetzt zwischen 4:01 Uhr und 4:59 Uhr abgerufen.
                                  • Fehler in Funktion CheckPrognose() behoben. Die Variable Notstrom_SOC_Proz wurde hier auf Einstellwert zurückgesetzt.
                                  A Offline
                                  A Offline
                                  ArnoD
                                  wrote on last edited by
                                  #1902

                                  Neue Version Charge-Control auf GitHub hochgeladen.
                                  Version: 1.1.7
                                  Änderungen:

                                  • Fehler in behoben, dass auf Unload SoC entladen wurde, obwohl noch keine PV-Leistung vorhanden war.
                                  1 Reply Last reply
                                  0
                                  • J jans_ios

                                    @arnod
                                    Ich habe die aktuelle 1.1.6 im Einsatz

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

                                    @jans_ios
                                    Kannst du mal bitte die Version 1.1.7 testen und schauen, ob damit das Problem behoben ist?

                                    J 2 Replies Last reply
                                    0
                                    • A ArnoD

                                      @jans_ios
                                      Kannst du mal bitte die Version 1.1.7 testen und schauen, ob damit das Problem behoben ist?

                                      J Offline
                                      J Offline
                                      jans_ios
                                      wrote on last edited by
                                      #1904

                                      @arnod
                                      Klar, mache ich morgen, wenn ich wieder zuhause bin.

                                      Gibt es eine Möglichkeit, den Strom an ein Gerät wie meinen Heizstab zu schicken, statt einzuspeisen?

                                      Danke für Deinen.Einsatz!

                                      Gruß, Jan

                                      A 1 Reply Last reply
                                      0
                                      • J jans_ios

                                        @arnod
                                        Klar, mache ich morgen, wenn ich wieder zuhause bin.

                                        Gibt es eine Möglichkeit, den Strom an ein Gerät wie meinen Heizstab zu schicken, statt einzuspeisen?

                                        Danke für Deinen.Einsatz!

                                        Gruß, Jan

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

                                        @jans_ios
                                        Wenn du eine Schnittstelle hast, über die du den Heizstab einschalten kannst, ist das kein Problem.
                                        Ich bekomme nächste Woche meine Wärmepumpe und werde diese dann über Modbus einbinden, um möglichst viel am Tag zu verbrauchen.
                                        Wird aber vermutlich ein eigenes Script, was die Wärmepumpe, Pool, Wallbox und Batterieladung E3DC steuern soll.

                                        J 1 Reply Last reply
                                        1
                                        • A ArnoD

                                          @jans_ios
                                          Wenn du eine Schnittstelle hast, über die du den Heizstab einschalten kannst, ist das kein Problem.
                                          Ich bekomme nächste Woche meine Wärmepumpe und werde diese dann über Modbus einbinden, um möglichst viel am Tag zu verbrauchen.
                                          Wird aber vermutlich ein eigenes Script, was die Wärmepumpe, Pool, Wallbox und Batterieladung E3DC steuern soll.

                                          J Offline
                                          J Offline
                                          jans_ios
                                          wrote on last edited by
                                          #1906

                                          @arnod
                                          Der Heizstab (Elwa-E) kann einfach per Modbus angesteuert werden. Ich schreibe da eine W-Zahl rein und los läuft er. Ich hatte mir schon mal auf blockly-Ebene gebaut, was dann den Überschuss nahm und in den Wert überführte, jedoch war das dann immer eine Art Timing-Problem. Das Charge-Control-Skript sah einfach einen dadurch erhöhten Hausverbrauch und stellte um auf "Steurung durch E3DC", durch Zufall war dann zwischendurch mal sehr viel Überschuss vorhanden und der Heizstab wurde auf sein max. von 3kW hochgedreht und die Akku-Ladung brach ein etc.

                                          Man müsste also irgendwie im Charge-Control-Sktipt etwas bauen, welches verschiedene Stromabnehmer wie bspw. einen Heizstab oder eine Wärmepumpe entweder selbst steuert oder aber deren Verbräuche dem Überschuss zurechnet oder so.

                                          Die 1.1.7 konnte ich übrigens mangels Sonne noch nicht intensiv testen, aber diese Woche sieht es so aus, als könnte ich auch mal mit einem randvollen Akku in den Abend gehen. Ich werde berichten!

                                          J 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          629

                                          Online

                                          32.4k

                                          Users

                                          81.4k

                                          Topics

                                          1.3m

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

                                          • Don't have an account? Register

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