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] Timer in Schleife mit Listenelementen

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    [GELÖST] Timer in Schleife mit Listenelementen

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

      Moin,
      ich verzweifle grade an einem Blockly mit Timeouts. Ich weiß, es gibt schon einen Adapter zur Rollladensteuerung, aber ich möchte mein eigenes Ding nach meiner Vorstellung programmieren. Und zwar so, wie ich es bereits unter FHEM gemacht hatte.
      Ich habe mir ein Skript gebaut, welches mir unter 0_userdata eine Ordnerstruktur zur Konfiguration und mit Statuswerten anlegt für meine vorhanden Rollläden. Soweit so gut. Nun möchte ich diese natürlich steuern. In einem Datenpunkt liegt das eigentlich Rollladendevice bzw. dessen LEVEL-Datenpunkt. Außerdem kann ich dort konfigurieren, dass ich eine Zufallszeit in Sekunden und einen Offset in Minuten habe. Kommt nun der Timer, dass die Rollläden zum Beispiel geschlossen werden sollen, dann packe ich alle Rollläden in eine Liste und arbeite diese ab.
      Dazu möchte ich dort dynamische Timer in Abhängigkeit der Zufallszahl und des Offsets erzeugen, damit die Rollläden jeden Tag in einer zufälligen Reihenfolge fahren (der Offset hat den Sinn, dass ich einen Rollladen definiert zu letzt fahren lassen kann). Das anlegen der Timer (bzw. der Timeouts) klappt auch super.

      Nun habe ich aber das Problem, dass dieses Timeouts alle mit den Werten des letzten Listeneintrags ausgeführt werden. Und ich habe momentan keine Idee, wie ich dort die individuellen Werte (vom Zeitpunkt des Anlegen) aufheben könnte. Hat da jemand einen schlauen Rat für mich?

      3f3f3344-02d7-4743-a929-df956595b536-5FEB0FD7-5CB0-43AD-BAE6-00076C6F0F08.jpeg

      332ec1a3-b0cd-4cd1-b79f-d40d33e57dd3-DF21269F-1FB3-481C-83F9-58E43DDCCB06_4_5005_c.jpeg

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

        Ich glaube, ich habe einen Workaround gefunden. Statt Timeouts zu erzeugen, werde ich direkt einen Steuerungsblock mit Verzögerung verwenden. Die Idee ist mir grade in der Pause gekommen. Mal kurz getestet auf einem Dummy-DP und scheint zu klappen. 😀

        Screenshot.jpg

        Der Datenpunkt "Dummy_Text" wird hintereinander (mit den zufälligen Zeitabständen) mit dem Datenpunkt des zu steuernden Rollladen upgedatet. Und der Rollladen, der als letztes dran sein soll, erscheint auch dort als letztes. Alles so, wie ich es möchte.

        Rene55 1 Reply Last reply Reply Quote 0
        • Rene55
          Rene55 @Cluni last edited by

          @cluni Solche Ideen hatte ich auch mal. Der ShutterController genügt mir auch nicht.
          Als Gedankenanstoss: Ich setzte morgens zu einer bestimmten Zeit für jede Aktion von jedem Rollladen einen Scheduler, ebenfalls abhänging vom Sonnenaufgang/-untergang mit einer zufälligen Komponente (damit die Rollläden eben nicht gleichzeitig fahren) und das sieht dann im Log so aus:

          2023-10-19 04:44:04.022  - info: javascript.1 (2302) script.js.common.Rollladen.RollControl: (f) fillTimerArray Sunrise: 08:04:52 <> Sunset: 18:36:19  => Twilight: 19:48:26
          2023-10-19 04:44:04.045  - info: javascript.1 (2302) script.js.common.Rollladen.RollControl: (f) fillTimerArray[0] 0_userdata.0.Rollladen.Atelier für 08:22:39 vorgemerkt
          2023-10-19 04:44:04.049  - info: javascript.1 (2302) script.js.common.Rollladen.RollControl: (f) fillTimerArray[1] 0_userdata.0.Rollladen.Atelier für 19:51:36 vorgemerkt
          2023-10-19 04:44:04.051  - info: javascript.1 (2302) script.js.common.Rollladen.RollControl: (f) fillTimerArray[2] 0_userdata.0.Rollladen.Bad für 08:01:13 vorgemerkt
          2023-10-19 04:44:04.054  - info: javascript.1 (2302) script.js.common.Rollladen.RollControl: (f) fillTimerArray[3] 0_userdata.0.Rollladen.Bad für 19:52:19 vorgemerkt
          2023-10-19 04:44:04.064  - info: javascript.1 (2302) script.js.common.Rollladen.RollControl: (f) fillTimerArray[4] 0_userdata.0.Rollladen.Gast für 07:56:39 vorgemerkt
          2023-10-19 04:44:04.141  - info: javascript.1 (2302) script.js.common.Rollladen.RollControl: (f) fillTimerArray[5] 0_userdata.0.Rollladen.Gast für 19:54:48 vorgemerkt
          2023-10-19 04:44:04.225  - info: javascript.1 (2302) script.js.common.Rollladen.RollControl: (f) fillTimerArray[6] 0_userdata.0.Rollladen.Gast für 20:32:36 vorgemerkt
          2023-10-19 04:44:04.289  - info: javascript.1 (2302) script.js.common.Rollladen.RollControl: (f) fillTimerArray[7] 0_userdata.0.Rollladen.Kueche für 08:00:22 vorgemerkt
          2023-10-19 04:44:04.292  - info: javascript.1 (2302) script.js.common.Rollladen.RollControl: (f) fillTimerArray[8] 0_userdata.0.Rollladen.Kueche für 19:50:14 vorgemerkt
          2023-10-19 04:44:04.332  - info: javascript.1 (2302) script.js.common.Rollladen.RollControl: (f) fillTimerArray[9] 0_userdata.0.Rollladen.Schlafen für 07:58:39 vorgemerkt
          2023-10-19 04:44:04.397  - info: javascript.1 (2302) script.js.common.Rollladen.RollControl: (f) fillTimerArray[10] 0_userdata.0.Rollladen.Schlafen für 19:53:39 vorgemerkt
          2023-10-19 04:44:04.398  - info: javascript.1 (2302) script.js.common.Rollladen.RollControl: (f) fillTimerArray[11] 0_userdata.0.Rollladen.Wohnen_li für 08:01:00 vorgemerkt
          2023-10-19 04:44:04.399  - info: javascript.1 (2302) script.js.common.Rollladen.RollControl: (f) fillTimerArray[12] 0_userdata.0.Rollladen.Wohnen_li für 21:05:39 vorgemerkt
          2023-10-19 04:44:04.400  - info: javascript.1 (2302) script.js.common.Rollladen.RollControl: (f) fillTimerArray[13] 0_userdata.0.Rollladen.Wohnen_re für 08:01:00 vorgemerkt
          2023-10-19 04:44:04.437  - info: javascript.1 (2302) script.js.common.Rollladen.RollControl: (f) fillTimerArray[14] 0_userdata.0.Rollladen.Wohnen_re für 19:50:20 vorgemerkt
          2023-10-19 04:44:04.438  - info: javascript.1 (2302) script.js.common.Rollladen.RollControl: (f) setTimerStates Anzahl: 15
          

          Cluni 1 Reply Last reply Reply Quote 0
          • Cluni
            Cluni @Rene55 last edited by Cluni

            @rene55 vielen Dank. Ich habe meine Idee gestern Abend mal mit dem Schließen durchgespielt - klappt mit dem "schreibe"-Block ganz gut und macht das, was ich gerne möchte. Für den Log (momentan nur zu debug-Zwecken) mache ich einfach das gleiche mit einem Datenpunkt, reagiere mit einem Trigger auf die Änderung und gebe dann den DP als Log aus:

            d622b034-2128-4ee5-a0e3-99a6f52b7896-image.png

            Die ganze Abhandlung (inklusiver der Check der Vorbedingungen wie Anwesenheit und der Einstellung, ob die Automatik ausgeschaltet ist uswusf.) läuft bei mir für alle Rollläden in einem einzigen Schedule-Trigger, der nur bei Änderung der allgemeinen Einstellungen der Rollladensteuerung und nach Abarbeitung des Schedulers für die nächste Aktion automatisch berechnet wird. Und vor der Ausführung vom steure-Block wird z.B. auch geschaut, ob dieser Rollladen nur bei Anwesenheit, nur bei Abwesenheit, in beiden Fällen oder gar nicht fahren soll.
            Der oben gezeigte Screenshot ist natürlich nur ein kleiner Ausschnitt aus dem Scheduler, der hier für die Erklärung von Bedeutung ist. 😉

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

            Support us

            ioBroker
            Community Adapters
            Donate

            843
            Online

            32.0k
            Users

            80.4k
            Topics

            1.3m
            Posts

            2
            4
            243
            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