Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Timeout in Schleife wieder schließen

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Timeout in Schleife wieder schließen

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

      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!

      paul53 Asgothian rtwl 3 Replies Last reply Reply Quote 0
      • paul53
        paul53 @manuelg last edited by paul53

        @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.

        1 Reply Last reply Reply Quote 0
        • Asgothian
          Asgothian Developer @manuelg last edited by

          @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.

          1 Reply Last reply Reply Quote 0
          • M
            manuelg last edited by

            @asgothian @paul53

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

            1 Reply Last reply Reply Quote 0
            • rtwl
              rtwl @manuelg last edited by

              @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.

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

              Support us

              ioBroker
              Community Adapters
              Donate

              878
              Online

              31.9k
              Users

              80.1k
              Topics

              1.3m
              Posts

              5
              5
              315
              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