Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. E3DC Hauskraftwerk steuern

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    E3DC Hauskraftwerk steuern

    This topic has been deleted. Only users with topic management privileges can see it.
    • smartboart
      smartboart @smartboart last edited by smartboart

      @ArnoD Hallo Arno,

      wäre denn Bedarf da ein weiteres Programm zu fahren, wobei auch noch die aktuelle Batt Soc in die Programmwahl integriert wird?
      Z.B Batterie morgens unter 30 % und programm sonne würde gewählt werden. Wenn nun die Vorhersage nicht stimmt und ab mittag wirds wetter schlecht , läuft man gefahr die batterie nicht voll zu bekommen.

      Lösungsansatz... Bei Batterie unter 30% und isTime in Range 7 - 12 Uhr fahr Programm 1 alles laden bis Batterie soc über 50 und dann zuzrück in 2 wechseln...

      Wäre einfach mit ner weiteren && Bedingung in der Programmwahl zu lösen.. und in Programm 1 einfach ne oder | Bedingung <30....

      Main müsste halt noch nen zusätzlichen Trigger bekommen..

      A 1 Reply Last reply Reply Quote 0
      • A
        ArnoD @smartboart last edited by

        @smartboart
        Eberhard sein Programm prüft laufend die Ladung der Batterie und korrigiert selbstständig die Ladung der Batterie wenn die berechneten Werte nicht erreicht werden. Einziger Schwachpunkt ist dein Beschriebener Fall, das am Nachmittag bei schlechtem Wetter keine ausreichende PV-Leistung mehr da ist um die Batterie voll zu laden.
        Die Wetterdaten von Proplanta sollen genau das verhindern.
        Wenn ich deinen Vorschlag umsetzen würde, hätte das zur Folge das bei einem SoC unter 30% ein gleichmäßiges Laden der Batterie über den Tag ausgeschlossen wäre. Das kann man mit den Parameter von E3DC-Control auch bereits jetzt erreichen, indem man als Einstellung 2 als ladeschwelle 50% einstellt, dann wird bis zu einem SoC von 50% alles in die Batterie geladen.

        Heute hatte ich das Problem das die Werte von Forecast falsch waren und bei mir um 5:00 Uhr mit der Einstellung 1 gestartet wurde. Bei der Überprüfung um 10:10 Uhr wurde das auf Einstellung2 korrigiert. Da war aber meine Batterie bereits zu 86% geladen. Ist jetzt noch kein Problem da noch genügend Reserve da ist für die Regelung so das ich nicht in die Abregelung komme.
        Ich habe jetzt im Script aber eine neue Aktualisierung der Forecast Daten um 8:00 Uhr eingefügt und somit auch eine neu Berechnung der Einstellung um 8:10 Uhr.

        Es wird jetzt alle 2 Stunden, um 5:45 die erste Berechnung , um 8:10 Uhr die zweite und dann wieder um 10:10 Uhr neu berechnet.
        Die letzte Berechnung die sinn macht ist dann um 15:30 mit den neuen Daten von Proplanta.

        Hier die Ladekurve von heute:

        bild1.png

        Ursache war die falsche Prognose Forecast von 5:15 Uhr:
        bild2.png

        Nachdem ich manuell noch mal um 11:45 die Daten von Forecast aktualisiert hatte, sieht die Prognose so aus:
        bild3.png

        Mit der Neu Berechnung um 8:10 Uhr wird eine falsche Prognose früher erkannt und hat auch den Vorteil das die Forecast Daten für den Rest des Tages aktueller sind.

        smartboart 1 Reply Last reply Reply Quote 0
        • smartboart
          smartboart @ArnoD last edited by smartboart

          @ArnoD ja das macht auf jeden Fall Sinn....

          Bei mir stimmen die Prognosen generell nicht so gut..die letze Woche lag komplett daneben... Denke eine weiter aktualisierung macht auf jedenfall sinn...

          Screenshot_20200819_124546_com.android.keyguard.jpg

          1 Reply Last reply Reply Quote 0
          • smartboart
            smartboart @smartboart last edited by

            @smartboart sagte in E3DC Hauskraftwerk steuern:

            Nachdem gestern mein Ergebnis mit 1s pollzeit ne Punktlandung war habe ich heute mit 2s gepollt und das Ergebnis ist immer noch sehr gut..
            Portal 34,33kwh
            Script 34,51kwh
            Morgen gehe ich auf 3 s..

            Ab 3 Sekunden wirds ungenau!

            jetzt schon 1 kw zu viel gezählt..Also entweder 1 fürs ganz genaue oder der kompromiss zum resourcen sparen auf 2 sekunden pollen...

            1 Reply Last reply Reply Quote 0
            • A
              ArnoD last edited by

              Habe mir jetzt das Abruflimit von Forecast noch mal angesehen für die kostenlose Version.
              Demnach kann man pro Stunde maximal 12 Abrufe der Daten pro IP durchführen.
              Wir könnten somit jede Stunde die Forecast Daten aktualisieren. Bei Proplanta werden nur ca, alle 4 Stunden die Daten aktualisiert.
              Proplanta wird bereits jetzt alle 4 Stunden abgerufen und aktualisiert, für Forecast könnte ich eine Stündliche Aktualisierung integrieren. Weiß nur noch nicht ob das Sinn macht. Werde ich jetzt einfach mal testen.

              1 Reply Last reply Reply Quote 0
              • A
                ArnoD last edited by

                @smartboart gibt es eine Möglichkeit eine schedule Stündlich, aber nur von 5 - 21 Uhr zu programmieren ?

                smartboart 1 Reply Last reply Reply Quote 0
                • A
                  ArnoD last edited by

                  @smartboart hat sich erledigt, die Antwort hast du ja bereits in deiner Änderung umgesetzt 🙂

                  1 Reply Last reply Reply Quote 0
                  • smartboart
                    smartboart @ArnoD last edited by smartboart

                    @ArnoD sagte in E3DC Hauskraftwerk steuern:

                    @smartboart gibt es eine Möglichkeit eine schedule Stündlich, aber nur von 5 - 21 Uhr zu programmieren ?

                    ja im Prinzip ist das ja schon in Teilen was ich oben gemacht habe vorhanden ..

                    Man kann jetzt das kombinieren mit IsTimeinRange...
                    Ist ein Script aus dem Forum und ich lasse es global laufen..
                    weil ich es in mehreren Scripten verwende...

                    Damit kannst ne if Bedingung aufbauen..Wenn du es Global installierst , reicht dann in jedem Script das hier...

                    if(IsTimeInRange('05:00:00', '21:00:00')) {
                    losgehts();
                    }

                    function currentDate() {
                        var d = new Date();
                        return new Date(d.getFullYear(), d.getMonth(), d.getDate());
                    }
                    function addTime(strTime) {
                        var time = strTime.split(':');
                        var d = currentDate();
                        d.setHours(time[0]);
                        d.setMinutes(time[1]);
                        d.setSeconds(time[2]);
                        return d;
                    }
                    function isTimeInRange(strLower, strUpper) {
                        var now = new Date();
                        var lower = addTime(strLower);
                        var upper = addTime(strUpper);
                        var inRange = false;
                        if (upper > lower) {
                            // opens and closes in same day
                            inRange = (now >= lower && now <= upper) ? true : false;
                        } else {
                            // closes in the following day
                            inRange = (now >= upper && now <= lower) ? false : true;
                        }
                        return inRange;
                    }
                    
                    
                    smartboart 1 Reply Last reply Reply Quote 0
                    • smartboart
                      smartboart @smartboart last edited by smartboart

                      Aber ja wie es schon oben ist reicht es auch...mit 5 Uhr triggern zum setzen und mit 21 triggern zum zurück setzen..

                      A 1 Reply Last reply Reply Quote 0
                      • A
                        ArnoD @smartboart last edited by

                        @smartboart
                        Musste mich jetzt über Funktionen im Modul Javascript aufklären lassen 🙂
                        Im Editor ist oben links ein Button mit einer Uhr:
                        bild1.png

                        Wen man den Bereich im Code markiert wo man die Zeit einfügen will und dann auf diesen Button klickt, kann man ganz bequem einstellen wie man es haben will.
                        bild2.png

                        Wenn man dann auf ok klickt wird automatisch der richtige Code im Script eingetragen.
                        Großes Lob an die Entwickler 👍 😁
                        Man sollte sich doch mal die Anleitungen durchlesen.

                        smartboart 1 Reply Last reply Reply Quote 0
                        • smartboart
                          smartboart @ArnoD last edited by

                          @ArnoD krass .....wusste ich auch nicht....🙄

                          A 1 Reply Last reply Reply Quote 0
                          • A
                            ArnoD @smartboart last edited by

                            @smartboart
                            Das Ganze sieht dann in einer Zeile so aus:
                            Timer3 = schedule('{"time":{"start":"04:10","end":"15:20","mode":"hours","interval":1},"period":{"days":1}}', function(){}

                            smartboart 1 Reply Last reply Reply Quote 0
                            • smartboart
                              smartboart @ArnoD last edited by smartboart

                              @ArnoD sagte in E3DC Hauskraftwerk steuern:

                              @smartboart
                              Das Ganze sieht dann in einer Zeile so aus:
                              Timer3 = schedule('{"time":{"start":"04:10","end":"15:20","mode":"hours","interval":1},"period":{"days":1}}', function(){}

                              krass das ersetzt das Time in Range script komplett...

                              1 Reply Last reply Reply Quote 0
                              • A
                                ArnoD last edited by

                                Neue Version 0.2.10 hochgeladen.

                                Änderungen:
                                Version: 0.2.10 Forecast Daten werden jede Stunde von 4:10 Uhr bis 15:20 aktualisiert.Fehler in der function Ueberschuss_Prozent() behoben, die zu einer falschen Berechnung vom Eigenverbrauch geführt hat.

                                smartboart 1 Reply Last reply Reply Quote 0
                                • smartboart
                                  smartboart @ArnoD last edited by

                                  @ArnoD sagte in E3DC Hauskraftwerk steuern:

                                  Neue Version 0.2.10 hochgeladen.

                                  Änderungen:
                                  Version: 0.2.10 Forecast Daten werden jede Stunde von 4:10 Uhr bis 15:20 aktualisiert.Fehler in der function Ueberschuss_Prozent() behoben, die zu einer falschen Berechnung vom Eigenverbrauch geführt hat.

                                  langt es diesmal nur den Teil unter konfig ende zu tauschen. dann muss ich nicht alles durchforsten...

                                  A 1 Reply Last reply Reply Quote 0
                                  • A
                                    ArnoD @smartboart last edited by

                                    @smartboart
                                    Ja, User Einstellungen sind gleich geblieben.

                                    smartboart 1 Reply Last reply Reply Quote 0
                                    • smartboart
                                      smartboart @ArnoD last edited by smartboart

                                      @ArnoD heute ist das Skript zwischendurch wieder auf 1 gesprungen..irgendwann nachmittag...
                                      Gibt es noch ein Thema mit der Überschussberechnung?
                                      Wie / Wo startest du die Funktion

                                      function Ueberschuss_Prozent()
                                      

                                      ...Kann ich nicht nachvollziehen...

                                          Ueberschuss = Ueberschuss_Prozent();
                                      
                                      

                                      was macht das

                                      irgendwo muss ja so die Funktion eingeleitet werden...

                                      Ueberschuss_Prozent();
                                      
                                      smartboart A 2 Replies Last reply Reply Quote 0
                                      • smartboart
                                        smartboart @smartboart last edited by smartboart

                                        @ArnoD
                                        Und nach meinem Verständnis müsste eben diese Funktion auch nochmal aufgerufen werden jedesmal bevor main gestartet wird...

                                        A 1 Reply Last reply Reply Quote 0
                                        • A
                                          ArnoD @smartboart last edited by

                                          @smartboart
                                          Ja war bei mir auch so.
                                          Das liegt an der Stündlichen neu Berechnung und das irgendwann die Prognose von der Realität eingeholt wird. Bedeute wenn für den Tag die Prognose z.B. 10 kWh vorhersagt und der tatsächliche PV Ertrag 10 kWh erreicht, ergibt die Berechnung das nur noch 0 kWh zu erwarten sind und das bedeutet Einstellung 1 anwählen.
                                          Habe mir das ganze heute noch mal überlegt und bin zu dem Schluss gekommen das ich einen Denkfehler bei der Aktualisierung hatte.
                                          Eberhards Programm ist so intelligent das es eigentlich nicht viel zu ändern gibt. 🙂
                                          Das Script muss nur zwei dinge feststellen , nämlich ob die PV Leistung am Tag ausreicht um die Batterie voll zu laden und ob am Nachmittag schlechtes Wetter ist um die richtige Einstellung zu wählen.
                                          Das wiederum bedeutet das man spätestens bis 10 Uhr, besser bis 9:00 Uhr wissen muss ob die PV Leistung ab 12:00Uhr noch ausreicht um noch was entscheiden zu können.
                                          Alle neu Berechnungen die nach 10:00 Uhr gemacht werden kann man sich somit sparen, denn wenn ich um 11:Uhr durch die Prognose erst mitbekomme das die PV Leistung wegen schlechtem Wetter nicht ausreicht, habe ich bereits bis dahin ins Netz eingespeist.
                                          Werde die letzte Abfrage und Berechnung somit versuchsweise um 10:00 Uhr machen, weil da auch die Proplanta Daten nochmal aktualisiert werden.

                                          1 Reply Last reply Reply Quote 0
                                          • A
                                            ArnoD @smartboart last edited by

                                            @smartboart sagte in E3DC Hauskraftwerk steuern:

                                            @ArnoD heute ist das Skript zwischendurch wieder auf 1 gesprungen..irgendwann nachmittag...
                                            Gibt es noch ein Thema mit der Überschussberechnung?
                                            Wie / Wo startest du die Funktion

                                            function Ueberschuss_Prozent()
                                            

                                            ...Kann ich nicht nachvollziehen...

                                                Ueberschuss = Ueberschuss_Prozent();
                                            
                                            

                                            was macht das

                                            Das ruft die Funktion auf und erhält als Ergebnis den gerundeten Überschuss oder null wenn was nicht berechnet werden kann.

                                            smartboart 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            769
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            70
                                            3331
                                            1363671
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo