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

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    E3DC Hauskraftwerk steuern

    This topic has been deleted. Only users with topic management privileges can see it.
    • 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
                                        • smartboart
                                          smartboart @ArnoD last edited by

                                          @ArnoD sagte in E3DC Hauskraftwerk steuern:

                                          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.

                                          ok also hier wird sowohl dir Funktion gestartet als auch die Information für die variable Ueberschuss geholt in einer Zeile? war mir nicht bewusst das das geht..wird doch dann auch bei scriptstart ausgeführt oder?

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

                                            @smartboart sagte in E3DC Hauskraftwerk steuern:

                                            @ArnoD sagte in E3DC Hauskraftwerk steuern:

                                            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.

                                            ok also hier wird sowohl dir Funktion gestartet als auch die Information für die variable Ueberschuss geholt in einer Zeile? war mir nicht bewusst das das geht..wird doch dann auch bei scriptstart ausgeführt oder?

                                            Ja, jedes mal wen die Funktion main() gestartet wird.
                                            Wenn du dir die Funktion Ueberschuss_Prozent() ansiehst ,findest du die Anweisung 'return', damit werden zwei Dinge erreicht:

                                            1. Es kann an den "Aufrufer" der Funktion ein Ergebnis zurückgegeben werden.
                                            2. Die Ausführung der Funktion wird hier beendet.
                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            837
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            70
                                            3333
                                            1363907
                                            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