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. Verzögerung abbrechen

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.3k

Verzögerung abbrechen

Geplant Angeheftet Gesperrt Verschoben Blockly
9 Beiträge 3 Kommentatoren 122 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.
  • D Online
    D Online
    Doppellhelix
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    ich habe mir ein Script gebastelt, was mein Aussenlicht steuert.
    Mitlerweile ist es ganz schön gewachsen :-), aber das "Problem" ist relativ weit oben.

    Was will ich im Grunde erreichen?

    Vor meiner Haustür habe ich zwei Lampen. Eine Deckenlampe und eine Wandlampe.
    Diese kann ich mit einen Serienschalter schalten.

    Wenn mind. ein Schalter an ist, soll ein weiteres Aussenlicht "um die Hausecke" mit angeschaltet werden.
    Wenn beide Schalter aus sind, soll das "Eckenlicht" erst mit einer Verzögerung von 3 Minuten ausgehen.

    So weit so gut, es funktioniert alles.

    Jetzt ist nur ein Fall eingetreten, den ich auch noch "abfangen" möchte.

    Aussenlicht Decke war an.
    Ich wollte aber das Wandlicht einschalten.
    Leider habe ich zuerst das Deckenlicht ausgeschaltet und dann direkt das Wandlicht eingeschaltet.
    Für mich war alles in Ordnung.
    Allerdings ist meine Schaltung weiter gelaufen und hat, als kurz beide Lichter aus waren (der Zustand hat keine 2 Sekunden gedauert), nach 3 Minuten das Eckenlicht auch ausgeschaltet.
    Was ja auch zunächst richtig ist. Beide Aussenlampen aus -> Eckenlicht auch aus mit 3min Verzögerung.

    Eigentlich müsste das Eckenlicht ja wieder angehen, weil der entgültige Zustand ja so ist, dass wenn mind. ein Aussenlicht an ist auch das Eckenlicht angeht.
    Ich kann mir es mir nur so erklären, dass das Programm noch am laufen war (3 Minuten) und daher nicht auf eine neuen Trigger reagiert hat.

    Wie seht ihr das und wie löse ich es elegant, damit solche Schalter "Verdrücker" keine Auswirkung haben.

    Screenshot 2026-02-05 080015.png

    paul53P 1 Antwort Letzte Antwort
    0
    • D Doppellhelix

      Hallo zusammen,

      ich habe mir ein Script gebastelt, was mein Aussenlicht steuert.
      Mitlerweile ist es ganz schön gewachsen :-), aber das "Problem" ist relativ weit oben.

      Was will ich im Grunde erreichen?

      Vor meiner Haustür habe ich zwei Lampen. Eine Deckenlampe und eine Wandlampe.
      Diese kann ich mit einen Serienschalter schalten.

      Wenn mind. ein Schalter an ist, soll ein weiteres Aussenlicht "um die Hausecke" mit angeschaltet werden.
      Wenn beide Schalter aus sind, soll das "Eckenlicht" erst mit einer Verzögerung von 3 Minuten ausgehen.

      So weit so gut, es funktioniert alles.

      Jetzt ist nur ein Fall eingetreten, den ich auch noch "abfangen" möchte.

      Aussenlicht Decke war an.
      Ich wollte aber das Wandlicht einschalten.
      Leider habe ich zuerst das Deckenlicht ausgeschaltet und dann direkt das Wandlicht eingeschaltet.
      Für mich war alles in Ordnung.
      Allerdings ist meine Schaltung weiter gelaufen und hat, als kurz beide Lichter aus waren (der Zustand hat keine 2 Sekunden gedauert), nach 3 Minuten das Eckenlicht auch ausgeschaltet.
      Was ja auch zunächst richtig ist. Beide Aussenlampen aus -> Eckenlicht auch aus mit 3min Verzögerung.

      Eigentlich müsste das Eckenlicht ja wieder angehen, weil der entgültige Zustand ja so ist, dass wenn mind. ein Aussenlicht an ist auch das Eckenlicht angeht.
      Ich kann mir es mir nur so erklären, dass das Programm noch am laufen war (3 Minuten) und daher nicht auf eine neuen Trigger reagiert hat.

      Wie seht ihr das und wie löse ich es elegant, damit solche Schalter "Verdrücker" keine Auswirkung haben.

      Screenshot 2026-02-05 080015.png

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

      @Doppellhelix sagte: Programm noch am laufen war (3 Minuten)

      Setze mal den Haken bei "löschen falls läuft".

      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
      • D Online
        D Online
        Doppellhelix
        schrieb am zuletzt editiert von
        #3

        Oha. Das war einfach.

        Danke sehr :-)

        1 Antwort Letzte Antwort
        0
        • D Online
          D Online
          Doppellhelix
          schrieb zuletzt editiert von
          #4

          Das hat leider nichts gebracht. Oder habe ich "löschen falls läuft" an der falschen sTelle angehakt?

          Bildschirmfoto vom 2026-02-08 20-24-28.png

          1 Antwort Letzte Antwort
          0
          • AsgothianA Offline
            AsgothianA Offline
            Asgothian
            Developer
            schrieb zuletzt editiert von Asgothian
            #5

            Ich denke in deinem Fall greift diese Lösung nicht.

            Die Lösung ist den Baustein

            Screenshot 2026-02-08 at 23.31.01.png

            durch das folgende Konstrukt zu ersetzen:
            Screenshot 2026-02-08 at 23.35.29.png

            Zusätzlich muss vor jeder anderen Ansteuerung der Aussenlampe Ecke ein
            Screenshot 2026-02-08 at 23.35.55.png gesetzt werden.

            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
            • D Online
              D Online
              Doppellhelix
              schrieb zuletzt editiert von
              #6

              Guten Morgen,

              der erste Test sieht ganz gut aus.

              Ich habe aber jetzt doch ein paar Fragen, damit ich das verstehe.

              Die Funktion "Aussenlicht_steuern" läuft so ab:
              Falls die drei Bedingunen eintreten, passiert erstmal nichts weiter, wegen dem Stop mit Namen "Timeout"
              Nach zwei Sekunden wird dann der Stop mit Namen "Timeout" aufgehoben, bzw fortgeführt.

              Was ich aber noch nicht verstehe ist diese "Stop Timeout" auch an den anderen Stellen in diesem Programm.
              Warum muss an diesen Stellen auch ein Stop "Timeout"? Die haben doch mit dem Programmablauf in der Funktion "Aussenlicht_steuern" erstmal nichts zu tun.
              Und warum muss ich an den beiden anderen Stellen nicht eine Fortführung einfügen?
              Z.b. links in dem Trigger "Aussenlicht bei Sonnenaufgang"
              Der Sonnenaufgang kommt. Es kommt zu einem Stop und mehr passiert doch dann nicht, oder?

              Und wofür ist dann die Funktion "löschen falls läuft", die Paul53 mir zuerst vorgeschlagen hat.

              Danke für die Hilfe und die Erklärung.

              Gruß Helix

              Screenshot 2026-02-09 102452.png

              paul53P AsgothianA 2 Antworten Letzte Antwort
              0
              • D Doppellhelix

                Guten Morgen,

                der erste Test sieht ganz gut aus.

                Ich habe aber jetzt doch ein paar Fragen, damit ich das verstehe.

                Die Funktion "Aussenlicht_steuern" läuft so ab:
                Falls die drei Bedingunen eintreten, passiert erstmal nichts weiter, wegen dem Stop mit Namen "Timeout"
                Nach zwei Sekunden wird dann der Stop mit Namen "Timeout" aufgehoben, bzw fortgeführt.

                Was ich aber noch nicht verstehe ist diese "Stop Timeout" auch an den anderen Stellen in diesem Programm.
                Warum muss an diesen Stellen auch ein Stop "Timeout"? Die haben doch mit dem Programmablauf in der Funktion "Aussenlicht_steuern" erstmal nichts zu tun.
                Und warum muss ich an den beiden anderen Stellen nicht eine Fortführung einfügen?
                Z.b. links in dem Trigger "Aussenlicht bei Sonnenaufgang"
                Der Sonnenaufgang kommt. Es kommt zu einem Stop und mehr passiert doch dann nicht, oder?

                Und wofür ist dann die Funktion "löschen falls läuft", die Paul53 mir zuerst vorgeschlagen hat.

                Danke für die Hilfe und die Erklärung.

                Gruß Helix

                Screenshot 2026-02-09 102452.png

                paul53P Offline
                paul53P Offline
                paul53
                schrieb zuletzt editiert von
                #7

                @Doppellhelix sagte: wofür ist dann die Funktion "löschen falls läuft"

                Sie sollte das gleiche machen wie die 3 "stop timeout" im Vorschlag von @asgothian: Bei jedem "steuere" auf den DP "Schalter Aussenlampe Ecke" wird ein laufender Timer gestoppt.

                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
                • D Doppellhelix

                  Guten Morgen,

                  der erste Test sieht ganz gut aus.

                  Ich habe aber jetzt doch ein paar Fragen, damit ich das verstehe.

                  Die Funktion "Aussenlicht_steuern" läuft so ab:
                  Falls die drei Bedingunen eintreten, passiert erstmal nichts weiter, wegen dem Stop mit Namen "Timeout"
                  Nach zwei Sekunden wird dann der Stop mit Namen "Timeout" aufgehoben, bzw fortgeführt.

                  Was ich aber noch nicht verstehe ist diese "Stop Timeout" auch an den anderen Stellen in diesem Programm.
                  Warum muss an diesen Stellen auch ein Stop "Timeout"? Die haben doch mit dem Programmablauf in der Funktion "Aussenlicht_steuern" erstmal nichts zu tun.
                  Und warum muss ich an den beiden anderen Stellen nicht eine Fortführung einfügen?
                  Z.b. links in dem Trigger "Aussenlicht bei Sonnenaufgang"
                  Der Sonnenaufgang kommt. Es kommt zu einem Stop und mehr passiert doch dann nicht, oder?

                  Und wofür ist dann die Funktion "löschen falls läuft", die Paul53 mir zuerst vorgeschlagen hat.

                  Danke für die Hilfe und die Erklärung.

                  Gruß Helix

                  Screenshot 2026-02-09 102452.png

                  AsgothianA Offline
                  AsgothianA Offline
                  Asgothian
                  Developer
                  schrieb zuletzt editiert von Asgothian
                  #8

                  @Doppellhelix sagte in Verzögerung abbrechen:

                  Und wofür ist dann die Funktion "löschen falls läuft", die Paul53 mir zuerst vorgeschlagen hat.

                  Ich beantworte die 2. Frage zuerst.

                  Der Haken bei löschen falls läuft ist dafür da, das der Baustein nicht mehrere Schaltaktionen ausführt. Er sorgt also dafür das ein erneutes aktivieren des gleichen verzögerten Schaltbefehls dazu führt das immer nur die letzte Verzögerung wirkt.

                  Nehmen wir als Beispiel diesen Code Schnipsel:
                  Screenshot 2026-02-09 at 11.24.59.png

                  • wenn der obere Trigger ausgelöst wird wird ein DP nach 5 Minuten mit falsch angesteuert.

                  • löst der gleiche Trigger nochmal aus bevor die 5 Minuten um sind, dann wird der DP erst 5 Minuten nach dem 2. Auslösen mit falsch angesteuert.

                  • wenn der untere Trigger ausgelöst wird wird ein DP nach 5 Minuten mit falsch angesteuert.

                  • löst der gleiche Trigger nochmal aus bevor die 5 Minuten um sind, dann wird der DP einmal 5 minuten nach dem ersten auslösen und 5 Minuten nach dem 2. Auslösen mit falsch angesteuert.

                  • angenommen die control blöcke gehen auf den gleichen Datenpunkt, dann gilt:
                    -- löst der erste Trigger aus wird der DP nach 5 Minuten mit falsch angesteuert.
                    -- löst dann der 2. Trigger aus (bevor die 5 min. um sind), dann wird der DP zusätzlich 5 Minuten nach diesem Auslösen mit falsch angesteuert.

                  - Das gleiche passiert wenn die Trigger in umgekehrter Reihenfolge innerhalb der 5 Minuten auslösen - das löschen falls läuft weiss nichts von der Verzögerung die aus dem 2. 'control' Block kommt.

                  Edit: Das stimmt nicht. Solange setStateDelayed benutzt wird weiss das System von der Verzögerung.

                  @Doppellhelix sagte in Verzögerung abbrechen:

                  Was ich aber noch nicht verstehe ist diese "Stop Timeout" auch an den anderen Stellen in diesem Programm.

                  Das ist erst einmal eine Absicherung. Immer wenn du den DP Aussenlampe Ecke ansteuerst ist davon auszugehen das die Automatik die diese nach 3 Minuten ausschaltet nicht mehr relevant ist. Deswegen wird der Timeout (sofern er denn läuft) gelöscht.

                  Letztendlich macht es also das was der Haken bei löschen falls läuft auch macht, allerdings mit der Möglichkeit das auch dann zu machen wenn du den verzögerten Schaltbefehl nicht widerholst.

                  Ich hoffe das reicht als Erklärung.

                  @paul53 sagte in Verzögerung abbrechen:

                  @Doppellhelix sagte: wofür ist dann die Funktion "löschen falls läuft"

                  Sie sollte das gleiche machen wie die 3 "stop timeout" im Vorschlag von @asgothian: Bei jedem "steuere" auf den DP "Schalter Aussenlampe Ecke" wird ein laufender Timer gestoppt.

                  Sorry wenn ich da widerspreche - meine Erfahrung zeigt das genau das nicht der Fall ist. Ansonsten sollten meine Anpassungen an dem Skript nicht wirken.

                  edit: Hier ist das Testskript mit dem ich das verifiziert habe. Kannst du selber auch testen:

                  Screenshot 2026-02-09 at 11.43.34.png
                  Nach 5+ Sekunden steht im Test-Dtate ein 'with delay' drin.
                  /edit

                  Ein setState() bricht ein setStateDelayed() auf den gleichen DP nicht ab. Um das zu machen könnte man an jeder relevanten Stelle setStateDelayed() mit delay 0 und löschen falls läuft nutzen - das ist aber etwas undurchsichtig.

                  A.

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

                  paul53P 1 Antwort Letzte Antwort
                  0
                  • AsgothianA Asgothian

                    @Doppellhelix sagte in Verzögerung abbrechen:

                    Und wofür ist dann die Funktion "löschen falls läuft", die Paul53 mir zuerst vorgeschlagen hat.

                    Ich beantworte die 2. Frage zuerst.

                    Der Haken bei löschen falls läuft ist dafür da, das der Baustein nicht mehrere Schaltaktionen ausführt. Er sorgt also dafür das ein erneutes aktivieren des gleichen verzögerten Schaltbefehls dazu führt das immer nur die letzte Verzögerung wirkt.

                    Nehmen wir als Beispiel diesen Code Schnipsel:
                    Screenshot 2026-02-09 at 11.24.59.png

                    • wenn der obere Trigger ausgelöst wird wird ein DP nach 5 Minuten mit falsch angesteuert.

                    • löst der gleiche Trigger nochmal aus bevor die 5 Minuten um sind, dann wird der DP erst 5 Minuten nach dem 2. Auslösen mit falsch angesteuert.

                    • wenn der untere Trigger ausgelöst wird wird ein DP nach 5 Minuten mit falsch angesteuert.

                    • löst der gleiche Trigger nochmal aus bevor die 5 Minuten um sind, dann wird der DP einmal 5 minuten nach dem ersten auslösen und 5 Minuten nach dem 2. Auslösen mit falsch angesteuert.

                    • angenommen die control blöcke gehen auf den gleichen Datenpunkt, dann gilt:
                      -- löst der erste Trigger aus wird der DP nach 5 Minuten mit falsch angesteuert.
                      -- löst dann der 2. Trigger aus (bevor die 5 min. um sind), dann wird der DP zusätzlich 5 Minuten nach diesem Auslösen mit falsch angesteuert.

                    - Das gleiche passiert wenn die Trigger in umgekehrter Reihenfolge innerhalb der 5 Minuten auslösen - das löschen falls läuft weiss nichts von der Verzögerung die aus dem 2. 'control' Block kommt.

                    Edit: Das stimmt nicht. Solange setStateDelayed benutzt wird weiss das System von der Verzögerung.

                    @Doppellhelix sagte in Verzögerung abbrechen:

                    Was ich aber noch nicht verstehe ist diese "Stop Timeout" auch an den anderen Stellen in diesem Programm.

                    Das ist erst einmal eine Absicherung. Immer wenn du den DP Aussenlampe Ecke ansteuerst ist davon auszugehen das die Automatik die diese nach 3 Minuten ausschaltet nicht mehr relevant ist. Deswegen wird der Timeout (sofern er denn läuft) gelöscht.

                    Letztendlich macht es also das was der Haken bei löschen falls läuft auch macht, allerdings mit der Möglichkeit das auch dann zu machen wenn du den verzögerten Schaltbefehl nicht widerholst.

                    Ich hoffe das reicht als Erklärung.

                    @paul53 sagte in Verzögerung abbrechen:

                    @Doppellhelix sagte: wofür ist dann die Funktion "löschen falls läuft"

                    Sie sollte das gleiche machen wie die 3 "stop timeout" im Vorschlag von @asgothian: Bei jedem "steuere" auf den DP "Schalter Aussenlampe Ecke" wird ein laufender Timer gestoppt.

                    Sorry wenn ich da widerspreche - meine Erfahrung zeigt das genau das nicht der Fall ist. Ansonsten sollten meine Anpassungen an dem Skript nicht wirken.

                    edit: Hier ist das Testskript mit dem ich das verifiziert habe. Kannst du selber auch testen:

                    Screenshot 2026-02-09 at 11.43.34.png
                    Nach 5+ Sekunden steht im Test-Dtate ein 'with delay' drin.
                    /edit

                    Ein setState() bricht ein setStateDelayed() auf den gleichen DP nicht ab. Um das zu machen könnte man an jeder relevanten Stelle setStateDelayed() mit delay 0 und löschen falls läuft nutzen - das ist aber etwas undurchsichtig.

                    A.

                    paul53P Offline
                    paul53P Offline
                    paul53
                    schrieb zuletzt editiert von
                    #9

                    @Asgothian sagte: Hier ist das Testskript mit dem ich das verifiziert habe.

                    Danke, etwas dazu gelernt. Es ist mir bisher nicht aufgefallen, da ich selbst setStateDelayed() nicht verwende.

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


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    678

                    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