Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. [GELÖST] Timer in Schleife mit Listenelementen

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    3.7k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.2k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

[GELÖST] Timer in Schleife mit Listenelementen

Geplant Angeheftet Gesperrt Verschoben Blockly
4 Beiträge 2 Kommentatoren 347 Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • CluniC Offline
    CluniC Offline
    Cluni
    schrieb am zuletzt editiert von Cluni
    #1

    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

    CluniC 1 Antwort Letzte Antwort
    0
    • CluniC 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

      CluniC Offline
      CluniC Offline
      Cluni
      schrieb am zuletzt editiert von Cluni
      #2

      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. :grinning:

      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.

      Rene55R 1 Antwort Letzte Antwort
      0
      • CluniC 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. :grinning:

        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.

        Rene55R Offline
        Rene55R Offline
        Rene55
        schrieb am zuletzt editiert von
        #3

        @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
        

        Host: Fujitsu Intel(R) Pentium(R) CPU G4560T, 32 GB RAM, Proxmox 8.x + lxc Ubuntu 22.04
        ioBroker (8 GB RAM) Node.js: 20.19.1, NPM: 10.8.2, js-Controller: 7.0.6, Admin: 7.6.3
        Wetterstation: Froggit WH3000SE V1.6.6

        CluniC 1 Antwort Letzte Antwort
        0
        • Rene55R Rene55

          @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
          

          CluniC Offline
          CluniC Offline
          Cluni
          schrieb am zuletzt editiert von Cluni
          #4

          @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 Antwort Letzte Antwort
          0
          Antworten
          • In einem neuen Thema antworten
          Anmelden zum Antworten
          • Älteste zuerst
          • Neuste zuerst
          • Meiste Stimmen


          Support us

          ioBroker
          Community Adapters
          Donate

          652

          Online

          32.7k

          Benutzer

          82.4k

          Themen

          1.3m

          Beiträge
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
          ioBroker Community 2014-2025
          logo
          • Anmelden

          • Du hast noch kein Konto? Registrieren

          • Anmelden oder registrieren, um zu suchen
          • Erster Beitrag
            Letzter Beitrag
          0
          • Home
          • Aktuell
          • Tags
          • Ungelesen 0
          • Kategorien
          • Unreplied
          • Beliebt
          • GitHub
          • Docu
          • Hilfe