Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. [gelöst] dynamischer Cronjob, wie?

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] dynamischer Cronjob, wie?

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

      @metaxa Wenn ich das richtig verstehe, holst Du Dir zwei Zeitpunkte für die kommenden 24 Stunden, wo der Strom sehr günstig ist, und möchtes dann Aktionen Auslösen, wenn die Zeitpunkte gekommen sind (auch welche, wenn der Strom wieder teurer wird?)

      Da könnte man natürlich auch Timeouts von Timern bei der Ermittlung gleich so berechnen, dass die beim Erreichen der Zeit abgelaufen sind ...

      Wenn die Genauigkeit nicht so wichtig ist: Eine andere, etwas stumpfe Möglichkeit wäre, stumpf zu "pollen". Ein z. B. minütlich startender Cron-Job prüft, ob die aktuelle Zeit innerhalb eines Zeitintervalls "guten Strompreises" ist .... ansonsten wird nichts getan ...

      metaxa 1 Reply Last reply Reply Quote 0
      • metaxa
        metaxa @MartinP last edited by

        @martinp sagte in [gelöst] dynamischer Cronjob, wie?:

        holst Du Dir zwei Zeitpunkte für die kommenden 24 Stunden, wo der Strom sehr günstig ist, und möchtes dann Aktionen Auslösen, wenn die Zeitpunkte gekommen sind (auch welche, wenn der Strom wieder teurer wird?)

        Exakt: mein akt. Stromprovider stellt mir tgl. um 17:00 die stündlichen Stromtarife des kommenden Tages zur Verfügung. Die hole ich mir und parse sie in DP von 00 - 23 Uhr. Danach suche ich mir den günstigsten und den 2.günstigsten Preis raus. Der 2. günstigere ist eher nur eine Fleißaufgabe, verwende ich aber nicht wirklich. Am nächsten Tag zum Zeitpunkt xx:00 lade ich dann meine Akkus im Keller auf um den Rest des Tages vom relativ günstigen Einkauf zu leben. Das Vollpumpen der Akkus im Winter hat auch den Vorteil, dass diese regelmäßig kalibriert werden.

        In meinem Script fülle ich den 2. Cron mit den Daten des errechneten günstigsten Preises.

        @martinp sagte in [gelöst] dynamischer Cronjob, wie?:

        Da könnte man natürlich auch Timeouts von Timern bei der Ermittlung gleich so berechnen, dass die beim Erreichen der Zeit abgelaufen sind ...

        Das ist gar nicht nötig, die Vollladung meiner kleinen Akkukapazität ist erfahrungsgemäß in max. 70 oder 80 Minuten erledigt. Dass die 10 - 20 Minuten in den nächsten Tarif rutschen krazt mich nicht besonders.

        @martinp sagte in [gelöst] dynamischer Cronjob, wie?:

        .... ansonsten wird nichts getan ...

        jein, erst béim Erreichen des manuellen Ladezeitpunkts prüfe ich noch etliche Parameter ob eine Volladung sinnvoll ist. Aktuell beinhaltet die Prüfung paar Parameter meiner PV (unter anderen den SOC Wert). Aktuell bin ich noch am Überlegen auch den zu erwartenden Sonnenertrag des kommenden Tages miteinfließen zu lassen und die Akkus im Falle des Falles mnur bis zu 70% oder 80% zu laden, in der Hoffnung die Tagessonne erledigt dann die Differenz. Bei einer Volladung hatte ich jetzt schon paar mal die Situation, die Akkus waren gut gefüllt als die Sonne kam und ich schickte dann wieder überschüssige Energie zu einem schlechten Preis ins Netz. Das versuche ich zu umgehen.

        Sorry für den langen Text.

        MartinP Codierknecht 2 Replies Last reply Reply Quote 0
        • MartinP
          MartinP @metaxa last edited by

          @metaxa Wenn das alles zeitlich nicht so genau sein muss, wäre der "Polling" Ansatz vielleicht gar nicht so schlecht...

          Ein Cron-Skript was stumpf alle 5 Minuten aufgerufen wird, und schaut, ob der Zeitpunkt für günstigen Strom schon gekommen ist.

          1 Reply Last reply Reply Quote 0
          • Codierknecht
            Codierknecht Developer Most Active @metaxa last edited by Codierknecht

            @metaxa
            Vielleicht in der Art?

            560dae3c-f024-4767-8c44-e9f9c7bc47cd-image.png

            Um 17:00 Uhr wird der Tarif analysiert und ein genau dazu passender Zeitplan "laden" erstellt.
            Der wird um 17:00 Uhr erstmal beendet, da er ja neu berechnet werden muss.

            MartinP 1 Reply Last reply Reply Quote 1
            • MartinP
              MartinP @Codierknecht last edited by

              @codierknecht Wenn man in den hellblauen Feldern auch berechnete Strings eintragen kann, wäre das wirklich die naheliegende Lösung.
              Ich hatte da mit mehr Limitierungen gerechnet ...

              Codierknecht metaxa 2 Replies Last reply Reply Quote 0
              • Codierknecht
                Codierknecht Developer Most Active @MartinP last edited by Codierknecht

                @martinp sagte in dynamischer Cronjob, wie?:

                Wenn man in den hellblauen Feldern auch berechnete Strings eintragen kann

                Nicht strings - Zahlenwerte.

                8b2b1394-7fc2-4eb6-8800-093504bc4907-image.png

                Wie die zu berechnen sind, weiß der TE am besten.
                Hier wird der Ladevorgang nach 60 Minuten beendet. Ob man das so oder besser anders macht, muss er entscheiden.
                Kann ja auch ein weiterer CRON "ladenBeenden" sein.

                MartinP 1 Reply Last reply Reply Quote 0
                • metaxa
                  metaxa @MartinP last edited by

                  @martinp die Lösung von @Codierknecht gefällt mir auch sehr gut, auch wenn ich sie noch nicht ganz behirnt habe. Jedoch laufe ich unter Umständen in die von @Asgothian augezeigte Problematik, falls der günstigste Tarif des morgigen Tages NACH dem morgigen Lauf des Scripts "Zeitplan laden" liegt.

                  Ich muss den Vorschlag von @Codierknecht erst vollständig durchschauen ........

                  Codierknecht 1 Reply Last reply Reply Quote 0
                  • Codierknecht
                    Codierknecht Developer Most Active @metaxa last edited by Codierknecht

                    @metaxa sagte in dynamischer Cronjob, wie?:

                    falls der günstigste Tarif des morgigen Tages NACH dem morgigen Lauf des Scripts "Zeitplan laden" liegt.

                    Dann erzeuge den neuen CRON doch erst nach 23:00 Uhr.
                    Du erhältst die neuen Zahlen AB 17:00 Uhr. WANN der CRON für den Folgetag erstellt wird, ist doch Wumpe.

                    metaxa 1 Reply Last reply Reply Quote 0
                    • metaxa
                      metaxa @Codierknecht last edited by

                      @codierknecht 👍 🤝

                      1 Reply Last reply Reply Quote 0
                      • MartinP
                        MartinP @Codierknecht last edited by

                        @codierknecht said in dynamischer Cronjob, wie?:

                        @martinp sagte in dynamischer Cronjob, wie?:

                        Wenn man in den hellblauen Feldern auch berechnete Strings eintragen kann

                        Nicht strings - Zahlenwerte.

                        Sicher?

                        Ich habe mir da extra etwas gebastelt, und der generierten Javascript-Code nutzt ...toString() bei der Parametrierung des Cron aus den Werten ....

                        Karnevalsbeginn-Erinnerung

                        ed9403e0-d86e-4595-b261-ca0c208b5dd8-grafik.png

                        Javascript-Ansicht:

                        schedule1 = schedule(11.toString().trim() + ' ' + 11.toString().trim() + ' ' + 11.toString().trim() + ' ' + 11.toString().trim() + ' ' + '*'.toString().trim(), async () => {
                        });
                        
                        Codierknecht 1 Reply Last reply Reply Quote 0
                        • Codierknecht
                          Codierknecht Developer Most Active @MartinP last edited by

                          @martinp sagte in dynamischer Cronjob, wie?:

                          der generierten Javascript-Code nutzt ...toString() bei der Parametrierung des Cron

                          Ich hätte da numerisch Werte erwartet.
                          Muss aber gestehen, dass ich das nicht weiter geprüft habe.

                          Dann nimm halt Strings ...

                          Wenn man nochmal drüber nachdenkt ist's ja auch logisch - könnte ja auch '*' sein.

                          Trotzdem baut Blockly da seltsame Dinge zusammen und macht aus einem String erstmal ... einen String. Interessant 😉

                          '5'.toString().trim() + ' ' + '4'.toString().trim() + ' ' + '3'.toString().trim() + ' ' + '2'.toString().trim() + ' ' + '1'.toString().trim();
                          
                          MartinP 1 Reply Last reply Reply Quote 0
                          • MartinP
                            MartinP @Codierknecht last edited by

                            @codierknecht wirklich interessant - aber fällt ja nicht auf - wer guckt schon unter die Motorhaube 😉

                            Codierknecht 1 Reply Last reply Reply Quote 0
                            • Codierknecht
                              Codierknecht Developer Most Active @MartinP last edited by

                              @martinp sagte in dynamischer Cronjob, wie?:

                              wer guckt schon unter die Motorhaube

                              Jepp - letztlich ist es gehopst wie gesprungen. Ob String oder Zahl ist da eigentlich ziemlich egal.

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

                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              768
                              Online

                              32.0k
                              Users

                              80.4k
                              Topics

                              1.3m
                              Posts

                              blockly
                              4
                              28
                              1277
                              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