Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Mehrere CRON Jobs in einem Skript sorgen für Chaos?

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Mehrere CRON Jobs in einem Skript sorgen für Chaos?

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

      Hallo Zusammen,

      ich habe eine kleine Herausforderung, die ich gar nicht für so außergewöhnlich halte, aber mit Blockly einfach nicht in den Griff bekommen.

      Hier erstmal die Situation:

      Ich möchte eine Poolpumpe zeitabhängig steuern und dazu eine Wärmepumpe in Abhängigkeit der aktuellen Energieeinspeisung meiner PV Anlage ebenfalls steuern. Wenn die Wärmepumpe läuft, muss zwingend auch die Poolpumpe laufen. Wenn keine Überschußproduktion der PV stattfindet, soll aber die Wärmepumpe nicht laufen, die Poolpumpe muss es aber zwangsläufig. Ich steuere damit zwei Shelly Plug S an.

      Meine Idee war es mehrere CRON Jobs zu definieren, welche den Zustand einer Variablen (PoolPumpe) entweder auf wahr oder falsch setzen. Ich starte mit WAHR immer zur Minute 0 in den Nachstunden und Ende mit FALSCH in der Minute 15. tagsüber ähnliches Spiel nur mit 0 und 30. Tagsüber soll die Pumpe mehr laufen.

      Also hab ich schon zwei CRON Jobs.

      Über eine API Verbindung zu meiner PV kann ich herausfinden ob überschüssige Energie erzeugt wird, die ich dann gerne mit der Wärmepumpe verbruachen möchte. Also eine weitere Variable (Wärmepumpe) die in Abhängigkeit der Leistung der PV auch entweder auch wahr oder falsch steht.

      Besonderes Kriterium dabei ist - was mir gerade das Problem bereitet - ist, dass wenn nicht mehr genügend Energie für die Wärmepumpe erzeugt wird, die Poolpumpe dennoch nach dem Zeitplan (0-15 oder 0-30) weiterlaufen soll.

      Ich habe mir bereits ein Skript gebaut, welches oben die verschiedenen CRON Jobs hat und dann die eigentliche Logik im Blockly darunter.

      Es ist etwa wie folgt aufgebaut (ich kann gerade keinen Screenshot machen, liefere ich gerne nach).

      CRON Job 1 - Minute 0 zu Stunde 0,3,6,9,12,15-21 dann Variable Poolpumpe = WAHR (einschalten der Pumpe)
      CRON Job 2 - Minute 15 zu Stunde 0,3,6,9,12,21 dann Variable Poolpumpe = FALSCH (ausschalten der Pumpe)
      CRON Job 3 - Minute 30 zu Stunde 15-20 dann Variable Poolpumpe = FALSCH (ausschalten der Pumpe)

      CRON Job der jede Minute läuft in den der folgende Block eingebettet ist

      FALLS Block mit dem ich den Wert der PV abfrage
      wenn größer/gleich 2 dann Variable Wärmepumpe = WAHR
      wenn keiner/gleich 1 dann Variable Wärmepumpe = FALSCH (extra die Differenz zwischen 1 und 2, damit die nicht so oft schaltet)

      FALLS Block zur Steuerung der Shelly
      wenn wärmepumpe = WAHR
      Shelly Wärmepumpe AN
      Shelly Poolpumpe AN
      sonst wenn (also Wärmepumpe AUS) Poolpumpe = AN (aus der Zeitsteuerung)
      Shelly Poolpumpe = AN
      sonst Poolpumpe = AUS

      Ich habe mir überall Debug Punkte platziert, aber er springt willkürlich in dem Skript umher, erst in den FALLS Block der Shelly Steuerung, dann in den CRON Job ganz oben und ich habe keinen Plan wieso.

      Darf ich nicht mehrere CRON Jobs in einem Skript haben?
      Hat das schon mal Jemand gehabt?
      Sollte ich das komplett anders lösen?

      Wie gesagt, Blockly Screenshot liefere ich gerne heute Abend nach.

      Besten Dank.

      Gruß

      Wolfgang

      Homoran paul53 2 Replies Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @WoFried last edited by Homoran

        @wofried

        ich sehe nichts!
        https://forum.iobroker.net/topic/51555/hinweise-für-gute-forenbeiträge/1

        Bitte den Screenshot zeitnah nachliefern.
        Die Nacherzählung hilft rein gar nichts, ohne die Struktur zu sehen

        W 1 Reply Last reply Reply Quote 0
        • paul53
          paul53 @WoFried last edited by

          @wofried sagte: Darf ich nicht mehrere CRON Jobs in einem Skript haben?

          Doch, darf man. Ich sehe keine.

          W 1 Reply Last reply Reply Quote 0
          • W
            WoFried @Homoran last edited by

            @homoran Ja, ich weiß. Deshalb habe ich extra bemerkt, dass ich das erst heute Abend (beginnt bei mir gegen 20 Uhr) tun kann.

            Aber ich lerne ja dazu, den nächsten Post gibts immer dann erst, wenn ich alles zusammen habe.

            Hier die fehlenden Screenshots, hoffe die helfen.
            3f24e96d-b5d8-4dfb-bc2c-ba3b00691375-image.png
            8913d074-6d09-45a5-a778-62267e502d46-image.png

            paul53 1 Reply Last reply Reply Quote 0
            • W
              WoFried @paul53 last edited by

              @paul53 Das ist schon mal gut zu wissen. Danke für das Feedback.

              W 1 Reply Last reply Reply Quote 0
              • W
                WoFried @WoFried last edited by

                Ich habe mittlerweile gelesen, dass die Reihenfolge egal ist, wo die CRONS im Skript sind. Ich hab sie jetzt aber mal der Übersicht halber ganz nach oben gesetzt.
                Weiter habe ich nun die Test CRONs so eingestellt, dass an den ungeraden Minuten die Pumpen angeschaltet werden soll, an den geraden ausgeschaltet.
                Hier mal ein Screenshot... 😉
                91a36ed4-8c31-430e-bb64-57c1b81a5533-image.png
                In der Debug Ausgabe sieht man aber, dass die Variablen genau den gegenteiligen Wert haben. Bei den geraden Minuten ist sie an und bei den ungeraden aus.
                Ich denke, da liegt irgendwo der Hase im Pfeffer.

                T 1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 @WoFried last edited by

                  @wofried sagte: Screenshots

                  Es dürfen keine Zeitpläne innerhalb des Minutenzeitplans verwendet werden, sondern außerhalb.

                  W 1 Reply Last reply Reply Quote 0
                  • W
                    WoFried @paul53 last edited by

                    @paul53 Ja, ich denke der Minutenzeitplan ist mein Problem. Auch wenn ich die Inhalte umstelle, springt das Skript zuerst immer in den Minutenplan und dann zum Schluß nochmal in den AN bzw. AUS Plan.
                    DAS ist mein Problem, weil das natürlich die Variable durcheinander bringt.

                    Gibt es eine Möglichkeit nachdem ich in dem AN oder AUS CRON Block verarbeitet habe, in den Verarbeitungsblock zu springen? Weil das ist es ja was ich brauche, die Variable für die Pumpe je nach Zeit entweder auf AN oder auf AUS zu setzen, um dann die Verarbeitung der anderen Dinge fortzusetzen. Ich hab leider nichts gefunden. 🤷‍♂️

                    paul53 1 Reply Last reply Reply Quote 0
                    • T
                      ticaki Developer @WoFried last edited by ticaki

                      @wofried

                      Blockly macht mir nen Knoten in die Maushand, aber das einfachste wäre so:

                      Zeitplan der die Variable poolpumpe auf true oder false setzt

                      Zeitplan jede 1 Minuter der bei Überschuss die Variable wärempumpe auf true/false setzt und dann eine logische Verknüfung.

                      poolpumpe = wärmepumpe oder poolpumpe

                      und dann poolpumpe mit poolpumpe schalten
                      und wäremepumpe mit wärmepumpe

                      W 1 Reply Last reply Reply Quote 0
                      • W
                        WoFried @ticaki last edited by

                        @ticaki Coole Idee! Danke! Bin ich nicht drauf gekommen. Werde ich auf jeden Fall nachbauen, nur um zu lernen.
                        Ich habe mittlerweile auch eine Lösung gefunden. Ich hab den Minutenzeitplan ausgebaut und durch eine andere Schleife ersetzt und damit mir das Ding nicht den RasPi auslastet eine Minutenpause dafür eingebaut. So passt dann auch die Reihenfolge und das Skript tut das was es soll! Die Reihenfolge und die Werte sieht man unten in der Debug Ausgabe,

                        Und für alle die das gleiche Schleifenproblem haben, hier mal eine (von mehreren) Lösungen.
                        f3883e4b-caf6-4d4c-9b5e-043828cf077c-image.png

                        T 1 Reply Last reply Reply Quote 0
                        • paul53
                          paul53 @WoFried last edited by paul53

                          @wofried sagte: Möglichkeit nachdem ich in dem AN oder AUS CRON Block verarbeitet habe, in den Verarbeitungsblock zu springen?

                          Ja eine kurze Verzögerung sorgt dafür, dass die nach Uhrzeit gesetzten Variablen vor der Auswertung gesetzt werden.

                          Blockly_temp.JPG

                          1 Reply Last reply Reply Quote 0
                          • T
                            ticaki Developer @WoFried last edited by ticaki

                            @wofried
                            Auch wenn es geht.

                            Keine while (wiederholen) schleifen mit Pause.

                            Es gibt auch ein Intervalblockly das macht das selbe ohne das eine fehlende Pause den Javascriptadapter abschießt. Oder das von Paul wenn der genaue Zeitpunkt relevant ist.

                            Edit: weiß garnicht was heute passiert, auf dem 3er pi hat alles angehalten und war unbedienbar. Danach wusste ich aber wie man Adapter von der Console aus stoppt 🙂

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

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            808
                            Online

                            32.0k
                            Users

                            80.4k
                            Topics

                            1.3m
                            Posts

                            4
                            12
                            501
                            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