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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo
  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.2k

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

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

E3DC Hauskraftwerk steuern

Geplant Angeheftet Gesperrt Verschoben JavaScript
3.4k Beiträge 70 Kommentatoren 1.6m Aufrufe 62 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • smartboartS smartboart

    @arnod
    Ok...Sind nicht auch die verwendeten Größen beim Wechsel der Betriebsmodi bzw. bei Eingriff, Schwankungen unterworfen? Ich will dir nicht weiter damit auf den keks gehen..
    Wenn du eine Optimierung hier als nicht nötig erachtest kann ich ja mal selbst versuchen mein System zu beruhigen.. sind ja auch recht individuelle Verhalten.. je nach Konfiguration und Verbrauch unterschiedlich...

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

    @smartboart
    du gehst mir nicht auf den Keks. 🙂
    Ich lerne gerne neues dazu und bin für Optimierungen immer offen.
    Nur in dem Fall ist eine vernünftige Regelung nur möglich, wenn diese möglichst ohne Verzögerungen erfolgt.
    Eine „Beruhigung“ der Regelung hätte immer zur Folge, dass die Regelung träge wird bzw. verzögert erfolgt.
    Du solltest dich nicht von dem Signal "EMS Control" beunruhigen lassen, da das E3DC ohne Script genau so regelt.
    Kannst ja mal die Notstromreserve von E3DC einschalten und das Script stoppen, ob sich dann an der Regelung was ändert.

    1 Antwort Letzte Antwort
    0
    • A ArnoD

      @stiwy18

      Ab der Version 1.1.5 gibt es die neue Objekt ID 0_userdata.0.Charge_Control.Allgemein.Automatik_Regelung, um die Regelung vom Script in VIS ausschalten zu können.
      Bitte diese auf true einstellen, dann sollte es funktionieren.

      Habe auf Github auch die View Import Datei neu hochgeladen mit dem neuen Schalter:
      dec82556-a39c-40e3-9ae7-2e24c074291e-grafik.png

      stiwy18S Offline
      stiwy18S Offline
      stiwy18
      schrieb am zuletzt editiert von
      #1872

      @arnod Achja Arno, danke das hab voll übersehen und war natürlich das Problem, sorry 🙂

      1 Antwort Letzte Antwort
      0
      • bluebeanB Offline
        bluebeanB Offline
        bluebean
        schrieb am zuletzt editiert von
        #1873

        @ArnoD
        Sag mal, hier hattest Du mal etwas geschrieben zum Fall einer manuellen Ladung.
        Jetzt in der dunklen Jahreszeit passiert es ja schon, dass der SOC aufgrund der Selbstentladung unter die eingestellte Notstromreserve fällt. Kannst Du das einbauen, dass zu einer Uhrzeit immer nachgeladen wird (dann auch aus dem Netz), so dass die Notreserve auch über längere Zeit erhalten bleibt, selbst wenn die PV-Leistung nicht reicht, um den Speicher nachzuladen?

        A 1 Antwort Letzte Antwort
        0
        • C Offline
          C Offline
          ChrisChros
          schrieb am zuletzt editiert von
          #1874

          Hallo @ArnoD ist dir bekannt ob Solcast an der Datenabfrage geändert hat. Ich bekomme seit einigen Tagen folgende Meldung im Log-File:

          2022-12-07 04:00:00.005 - info: javascript.0 (632) script.js.common.E3_DC.E3DC_Control_Prognose: ****************************** Es wird Solcast Dach 2 abgerufen ******************************
          2022-12-07 04:00:00.030 - warn: javascript.0 (632) script.js.common.E3_DC.E3DC_Control_Prognose: Error in der function InterrogateSolcast. Fehler = Error, status code = 0
          2022-12-07 04:00:00.030 - info: javascript.0 (632) script.js.common.E3_DC.E3DC_Control_Prognose: ****************************** Es wird Solcast Dach 1 abgerufen ******************************
          2022-12-07 04:00:00.034 - warn: javascript.0 (632) script.js.common.E3_DC.E3DC_Control_Prognose: Error in der function InterrogateSolcast. Fehler = Error, status code = 0
          

          Gruß Chris

          A 1 Antwort Letzte Antwort
          0
          • bluebeanB bluebean

            @ArnoD
            Sag mal, hier hattest Du mal etwas geschrieben zum Fall einer manuellen Ladung.
            Jetzt in der dunklen Jahreszeit passiert es ja schon, dass der SOC aufgrund der Selbstentladung unter die eingestellte Notstromreserve fällt. Kannst Du das einbauen, dass zu einer Uhrzeit immer nachgeladen wird (dann auch aus dem Netz), so dass die Notreserve auch über längere Zeit erhalten bleibt, selbst wenn die PV-Leistung nicht reicht, um den Speicher nachzuladen?

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

            @bluebean
            Kann ich machen, das dauert jetzt aber etwas, da ich aktuell wenig Zeit für mein Hobby habe.
            Nach Weihnachten sieht es wieder besser aus.

            bluebeanB 1 Antwort Letzte Antwort
            0
            • C ChrisChros

              Hallo @ArnoD ist dir bekannt ob Solcast an der Datenabfrage geändert hat. Ich bekomme seit einigen Tagen folgende Meldung im Log-File:

              2022-12-07 04:00:00.005 - info: javascript.0 (632) script.js.common.E3_DC.E3DC_Control_Prognose: ****************************** Es wird Solcast Dach 2 abgerufen ******************************
              2022-12-07 04:00:00.030 - warn: javascript.0 (632) script.js.common.E3_DC.E3DC_Control_Prognose: Error in der function InterrogateSolcast. Fehler = Error, status code = 0
              2022-12-07 04:00:00.030 - info: javascript.0 (632) script.js.common.E3_DC.E3DC_Control_Prognose: ****************************** Es wird Solcast Dach 1 abgerufen ******************************
              2022-12-07 04:00:00.034 - warn: javascript.0 (632) script.js.common.E3_DC.E3DC_Control_Prognose: Error in der function InterrogateSolcast. Fehler = Error, status code = 0
              

              Gruß Chris

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

              @chrischros
              Komisch, ist bei mir auch so, nur dass ich überhaupt keine Rückmeldung von der Seite erhalte.
              Wenn ich aber das Script manuell starte, werden die Daten normal abgerufen.
              Muss mal testen, ob das nur ein Problem um 4:00 Uhr ist oder generell.

              Nachtrag: Um 5:10 Uhr hat es heute funktioniert. Vermute das Solcast um 4:00 Uhr ein Problem hat.
              Kannst es ja mal bei dir testen und die Zeile 303 im Script so ändern:

              schedule('{"time":{"exactTime":true,"start":"05:10"},"period":{"days":1}}', function() {
              
              C 1 Antwort Letzte Antwort
              0
              • A ArnoD

                @bluebean
                Kann ich machen, das dauert jetzt aber etwas, da ich aktuell wenig Zeit für mein Hobby habe.
                Nach Weihnachten sieht es wieder besser aus.

                bluebeanB Offline
                bluebeanB Offline
                bluebean
                schrieb am zuletzt editiert von
                #1877

                @arnod said in E3DC Hauskraftwerk steuern:

                @bluebean
                Kann ich machen, das dauert jetzt aber etwas, da ich aktuell wenig Zeit für mein Hobby habe.
                Nach Weihnachten sieht es wieder besser aus.

                Cool, danke dir bereits jetzt 🙂

                C 1 Antwort Letzte Antwort
                0
                • bluebeanB Offline
                  bluebeanB Offline
                  bluebean
                  schrieb am zuletzt editiert von
                  #1878

                  Bei mir war heute früh die Abfrage wieder normal:

                  Screenshot_20221209-065147~01.png

                  A 1 Antwort Letzte Antwort
                  0
                  • bluebeanB bluebean

                    Bei mir war heute früh die Abfrage wieder normal:

                    Screenshot_20221209-065147~01.png

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

                    @bluebean
                    ok, dann ist anscheinend das Problem bei Solcast behoben.

                    1 Antwort Letzte Antwort
                    0
                    • A ArnoD

                      @chrischros
                      Komisch, ist bei mir auch so, nur dass ich überhaupt keine Rückmeldung von der Seite erhalte.
                      Wenn ich aber das Script manuell starte, werden die Daten normal abgerufen.
                      Muss mal testen, ob das nur ein Problem um 4:00 Uhr ist oder generell.

                      Nachtrag: Um 5:10 Uhr hat es heute funktioniert. Vermute das Solcast um 4:00 Uhr ein Problem hat.
                      Kannst es ja mal bei dir testen und die Zeile 303 im Script so ändern:

                      schedule('{"time":{"exactTime":true,"start":"05:10"},"period":{"days":1}}', function() {
                      
                      C Offline
                      C Offline
                      ChrisChros
                      schrieb am zuletzt editiert von
                      #1880

                      @arnod said in E3DC Hauskraftwerk steuern:

                      Nachtrag: Um 5:10 Uhr hat es heute funktioniert. Vermute das Solcast um 4:00 Uhr ein Problem hat.
                      Kannst es ja mal bei dir testen und die Zeile 303 im Script so ändern:
                      schedule('{"time":{"exactTime":true,"start":"05:10"},"period":{"days":1}}', function() {

                      Danke, habe es nun eingepflegt und werde es die Tage beobachten.

                      Heute Morgen war keine Fehlermeldung im Log gewesen, eventuell hatten die auch Server Probleme bei Solcast die Tage.

                      1 Antwort Letzte Antwort
                      0
                      • bluebeanB bluebean

                        @arnod said in E3DC Hauskraftwerk steuern:

                        @bluebean
                        Kann ich machen, das dauert jetzt aber etwas, da ich aktuell wenig Zeit für mein Hobby habe.
                        Nach Weihnachten sieht es wieder besser aus.

                        Cool, danke dir bereits jetzt 🙂

                        C Offline
                        C Offline
                        cacum
                        schrieb am zuletzt editiert von
                        #1881

                        @bluebean said in E3DC Hauskraftwerk steuern:

                        @arnod said in E3DC Hauskraftwerk steuern:

                        @bluebean
                        Kann ich machen, das dauert jetzt aber etwas, da ich aktuell wenig Zeit für mein Hobby habe.
                        Nach Weihnachten sieht es wieder besser aus.

                        Cool, danke dir bereits jetzt 🙂

                        Ich würde mich dafür auch sehr bedanken, wenn ich zu einer bestimmten Zeit eine bestimmte Menge in den Speicher laden könnte (wegen flexibler tarife und so)

                        Habt ihr auch die neue Nachicht im E3DC-System wegen dynamischer Direktvermarktung? Dass wird ja noch mal neuen Schwung in die Programmierung bringen. Ob es sich bei mir lohnt ist fraglich, weil ich mit meiner Anlage von 2011 noch mit üppiger Vergütung gesegnet bin.

                        A 1 Antwort Letzte Antwort
                        0
                        • C cacum

                          @bluebean said in E3DC Hauskraftwerk steuern:

                          @arnod said in E3DC Hauskraftwerk steuern:

                          @bluebean
                          Kann ich machen, das dauert jetzt aber etwas, da ich aktuell wenig Zeit für mein Hobby habe.
                          Nach Weihnachten sieht es wieder besser aus.

                          Cool, danke dir bereits jetzt 🙂

                          Ich würde mich dafür auch sehr bedanken, wenn ich zu einer bestimmten Zeit eine bestimmte Menge in den Speicher laden könnte (wegen flexibler tarife und so)

                          Habt ihr auch die neue Nachicht im E3DC-System wegen dynamischer Direktvermarktung? Dass wird ja noch mal neuen Schwung in die Programmierung bringen. Ob es sich bei mir lohnt ist fraglich, weil ich mit meiner Anlage von 2011 noch mit üppiger Vergütung gesegnet bin.

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

                          @cacum sagte in E3DC Hauskraftwerk steuern:

                          Habt ihr auch die neue Nachicht im E3DC-System wegen dynamischer Direktvermarktung?

                          Wo genau soll diese Nachricht sein?

                          bluebeanB Z 3 Antworten Letzte Antwort
                          0
                          • A ArnoD

                            @cacum sagte in E3DC Hauskraftwerk steuern:

                            Habt ihr auch die neue Nachicht im E3DC-System wegen dynamischer Direktvermarktung?

                            Wo genau soll diese Nachricht sein?

                            bluebeanB Offline
                            bluebeanB Offline
                            bluebean
                            schrieb am zuletzt editiert von bluebean
                            #1883

                            @arnod
                            Die kommt, wenn man sich im S10 Portal oder über die E3DC App anmeldet.
                            Es wird zunächst abgefragt, ob Nutzer prinzipiell Interesse haben - auf der Basis soll dann im nächsten Schritt ein konkretes Angebot geschnitten werden gemeinsam mit dem Partner, den E3DC dafür gewonnen hat.

                            1 Antwort Letzte Antwort
                            0
                            • A ArnoD

                              @cacum sagte in E3DC Hauskraftwerk steuern:

                              Habt ihr auch die neue Nachicht im E3DC-System wegen dynamischer Direktvermarktung?

                              Wo genau soll diese Nachricht sein?

                              Z Offline
                              Z Offline
                              Zelkin
                              schrieb am zuletzt editiert von Zelkin
                              #1884

                              @arnod
                              Mann, Mann, da hat man mal ein paar Wochen was um die Ohren .... dann verdoppelt sich gefühlt der umfang des Thread .... wow
                              Danke dir @ArnoD, dass du meine Idee aufgenommen hast 🙂
                              Die Arbeit die du hier leistest ist einfach unglaublich

                              eben alles aktualisiert und läuft

                              Danke für die Mühe

                              1 Antwort Letzte Antwort
                              0
                              • A ArnoD

                                @cacum sagte in E3DC Hauskraftwerk steuern:

                                Habt ihr auch die neue Nachicht im E3DC-System wegen dynamischer Direktvermarktung?

                                Wo genau soll diese Nachricht sein?

                                Z Offline
                                Z Offline
                                Zelkin
                                schrieb am zuletzt editiert von
                                #1885

                                @arnod
                                Mal ne Frage zum Eigenverbrauch (ist in der Vis Info noch "alt" beschrieben)
                                Soll Ich hier nun wirklich den MIN Eigenverbrach zwischen 06:00 und 19:00 Uhr angeben??
                                Also sozusagen 13 x meine Grundlast?

                                Bisher war meine Angabe ja der Durchschnittsverbrauch vom ganzen Tag

                                Sorry wenn die frage schon aufkam ... habs nicht gefunden

                                A 1 Antwort Letzte Antwort
                                0
                                • Z Zelkin

                                  @arnod
                                  Mal ne Frage zum Eigenverbrauch (ist in der Vis Info noch "alt" beschrieben)
                                  Soll Ich hier nun wirklich den MIN Eigenverbrach zwischen 06:00 und 19:00 Uhr angeben??
                                  Also sozusagen 13 x meine Grundlast?

                                  Bisher war meine Angabe ja der Durchschnittsverbrauch vom ganzen Tag

                                  Sorry wenn die frage schon aufkam ... habs nicht gefunden

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

                                  @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 1 Antwort Letzte Antwort
                                  0
                                  • 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
                                    schrieb am zuletzt editiert von
                                    #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 Antworten Letzte Antwort
                                    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
                                      schrieb am zuletzt editiert von
                                      #1888

                                      @smartboart
                                      Super, danke 👍

                                      1 Antwort Letzte Antwort
                                      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
                                        schrieb am zuletzt editiert von
                                        #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 Antworten Letzte Antwort
                                        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
                                          schrieb am zuletzt editiert von
                                          #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 Antwort Letzte Antwort
                                          1
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          745

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

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

                                          • Du hast noch kein Konto? Registrieren

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