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. Timeout in Schleife wieder schließen

NEWS

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

  • 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

Geplant Angeheftet Gesperrt Verschoben Blockly
5 Beiträge 5 Kommentatoren 429 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.
  • M Offline
    M Offline
    manuelg
    schrieb am zuletzt editiert von
    #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 Antworten Letzte Antwort
    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
      schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
      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
        schrieb am zuletzt editiert von
        #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 Antwort Letzte Antwort
        0
        • M Offline
          M Offline
          manuelg
          schrieb am zuletzt editiert von
          #4

          @asgothian @paul53

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

          1 Antwort Letzte Antwort
          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 Online
            rtwlR Online
            rtwl
            schrieb am zuletzt editiert von
            #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 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

            707

            Online

            32.6k

            Benutzer

            82.3k

            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