Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. Timeout in Schleife wieder schließen

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

Timeout in Schleife wieder schließen

Scheduled Pinned Locked Moved Blockly
5 Posts 5 Posters 428 Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    manuelg
    wrote on last edited by
    #1

    Hallo zusammen,
    ich habe mir eine Bewässerungssteuerung zusammengestellt, die in mehreren Intervallen (t_intervall) das gleiche Ventil anstellen soll (über den Smartgarden Adapter). Nun könnte ich das natürlich über den Intervallblock lösen, allerdings hat das den Nachteil, dass erst nach dem eingestellten Zeitintervall (t_0+1*t_intervall) das Ventil eingeschaltet wird und man über einen zusätzlichen Counter die Anzahl der Schaltungen mitverfolgen muss (irgendwann soll es ja auch wieder aufhören). Die Lösung für den späten Start ist, dass man vor dem Intervallblock, die Blocke, die zum Zeitpunkt t_0 ausgeführt werden sollen, redundant ausführt:
    f60011d7-921e-4ee8-a1b2-4b114188641d-image.png
    Für mich auch keine schöne Lösung.

    Meine Idee war daher, dass ich über eine for-Schleife timeouts zu verschiedenen Zeitpunkten starte, die ich ja im Vorfeld kenne. Ein Minimalbeispiel sieht wie folgt aus:
    971bcf88-9359-4b2b-b25a-7026e4d95dbd-image.png
    Allerdings tue ich mich momentan schwer damit, diese wieder zu stoppen, wenn ich z.B. die Bewässerung einmal unterbrechen möchte (daher der stop-timeout am Ende, um das einmal zu testen). Vielleicht hat von euch ja jemand eine gute Idee oder einen besseren Ansatz?

    Schon einmal herzlichen Dank!

    paul53P AsgothianA rtwlR 3 Replies Last reply
    0
    • M manuelg

      Hallo zusammen,
      ich habe mir eine Bewässerungssteuerung zusammengestellt, die in mehreren Intervallen (t_intervall) das gleiche Ventil anstellen soll (über den Smartgarden Adapter). Nun könnte ich das natürlich über den Intervallblock lösen, allerdings hat das den Nachteil, dass erst nach dem eingestellten Zeitintervall (t_0+1*t_intervall) das Ventil eingeschaltet wird und man über einen zusätzlichen Counter die Anzahl der Schaltungen mitverfolgen muss (irgendwann soll es ja auch wieder aufhören). Die Lösung für den späten Start ist, dass man vor dem Intervallblock, die Blocke, die zum Zeitpunkt t_0 ausgeführt werden sollen, redundant ausführt:
      f60011d7-921e-4ee8-a1b2-4b114188641d-image.png
      Für mich auch keine schöne Lösung.

      Meine Idee war daher, dass ich über eine for-Schleife timeouts zu verschiedenen Zeitpunkten starte, die ich ja im Vorfeld kenne. Ein Minimalbeispiel sieht wie folgt aus:
      971bcf88-9359-4b2b-b25a-7026e4d95dbd-image.png
      Allerdings tue ich mich momentan schwer damit, diese wieder zu stoppen, wenn ich z.B. die Bewässerung einmal unterbrechen möchte (daher der stop-timeout am Ende, um das einmal zu testen). Vielleicht hat von euch ja jemand eine gute Idee oder einen besseren Ansatz?

      Schon einmal herzlichen Dank!

      paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by paul53
      #2

      @manuelg sagte: einen besseren Ansatz?

      Rekursive Funktion mit Timeout

      @manuelg sagte in Timeout in Schleife wieder schließen:

      über eine for-Schleife timeouts zu verschiedenen Zeitpunkten starte

      Alle 4 Timer werden quasi gleichzeitig gestartet und lassen sich nicht mehr stoppen.

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      1 Reply Last reply
      0
      • M manuelg

        Hallo zusammen,
        ich habe mir eine Bewässerungssteuerung zusammengestellt, die in mehreren Intervallen (t_intervall) das gleiche Ventil anstellen soll (über den Smartgarden Adapter). Nun könnte ich das natürlich über den Intervallblock lösen, allerdings hat das den Nachteil, dass erst nach dem eingestellten Zeitintervall (t_0+1*t_intervall) das Ventil eingeschaltet wird und man über einen zusätzlichen Counter die Anzahl der Schaltungen mitverfolgen muss (irgendwann soll es ja auch wieder aufhören). Die Lösung für den späten Start ist, dass man vor dem Intervallblock, die Blocke, die zum Zeitpunkt t_0 ausgeführt werden sollen, redundant ausführt:
        f60011d7-921e-4ee8-a1b2-4b114188641d-image.png
        Für mich auch keine schöne Lösung.

        Meine Idee war daher, dass ich über eine for-Schleife timeouts zu verschiedenen Zeitpunkten starte, die ich ja im Vorfeld kenne. Ein Minimalbeispiel sieht wie folgt aus:
        971bcf88-9359-4b2b-b25a-7026e4d95dbd-image.png
        Allerdings tue ich mich momentan schwer damit, diese wieder zu stoppen, wenn ich z.B. die Bewässerung einmal unterbrechen möchte (daher der stop-timeout am Ende, um das einmal zu testen). Vielleicht hat von euch ja jemand eine gute Idee oder einen besseren Ansatz?

        Schon einmal herzlichen Dank!

        AsgothianA Offline
        AsgothianA Offline
        Asgothian
        Developer
        wrote on last edited by
        #3

        @manuelg Das was du willst ist mit reinem Blockly nicht sauber umsetzbar, da du die Timeouts nicht zu 100% wie Variablen behandeln kannst. Du wirst daher nicht umhin kommen an Stelle der Schleife 4 einzelne "ausführen Timeout" Blöcke zu benutzen. Als alternative kannst du versuchen das ganze in JS zusammenzubauen und dann in Blockly als "JS Funktion" einzuhängen.

        A.

        ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
        "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

        1 Reply Last reply
        0
        • M Offline
          M Offline
          manuelg
          wrote on last edited by
          #4

          @asgothian @paul53

          Vielen Dank euch beiden! Ich schaue dann einmal, ob ich das über JS schreibe oder die Rekursion nutze.

          1 Reply Last reply
          0
          • M manuelg

            Hallo zusammen,
            ich habe mir eine Bewässerungssteuerung zusammengestellt, die in mehreren Intervallen (t_intervall) das gleiche Ventil anstellen soll (über den Smartgarden Adapter). Nun könnte ich das natürlich über den Intervallblock lösen, allerdings hat das den Nachteil, dass erst nach dem eingestellten Zeitintervall (t_0+1*t_intervall) das Ventil eingeschaltet wird und man über einen zusätzlichen Counter die Anzahl der Schaltungen mitverfolgen muss (irgendwann soll es ja auch wieder aufhören). Die Lösung für den späten Start ist, dass man vor dem Intervallblock, die Blocke, die zum Zeitpunkt t_0 ausgeführt werden sollen, redundant ausführt:
            f60011d7-921e-4ee8-a1b2-4b114188641d-image.png
            Für mich auch keine schöne Lösung.

            Meine Idee war daher, dass ich über eine for-Schleife timeouts zu verschiedenen Zeitpunkten starte, die ich ja im Vorfeld kenne. Ein Minimalbeispiel sieht wie folgt aus:
            971bcf88-9359-4b2b-b25a-7026e4d95dbd-image.png
            Allerdings tue ich mich momentan schwer damit, diese wieder zu stoppen, wenn ich z.B. die Bewässerung einmal unterbrechen möchte (daher der stop-timeout am Ende, um das einmal zu testen). Vielleicht hat von euch ja jemand eine gute Idee oder einen besseren Ansatz?

            Schon einmal herzlichen Dank!

            rtwlR Offline
            rtwlR Offline
            rtwl
            wrote on last edited by
            #5

            @manuelg sagte in Timeout in Schleife wieder schließen:

            oder einen besseren Ansatz?

            bin jetzt kein Experte, aber ich hab so eine ähnliche Geschichte, nutze aber statt dem Timeout einen "Warte" Block.
            damit werden dann nicht alle 4 gleichzeitig gestartet, sondern eben gewartet bis die Zeit um ist bevor die nächste Schleife los geht.

            -Peter

            1 Reply Last reply
            0
            Reply
            • Reply as topic
            Log in to reply
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes


            Support us

            ioBroker
            Community Adapters
            Donate

            681

            Online

            32.6k

            Users

            82.3k

            Topics

            1.3m

            Posts
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
            ioBroker Community 2014-2025
            logo
            • Login

            • Don't have an account? Register

            • Login or register to search.
            • First post
              Last post
            0
            • Home
            • Recent
            • Tags
            • Unread 0
            • Categories
            • Unreplied
            • Popular
            • GitHub
            • Docu
            • Hilfe