Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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. Blockly Timeout Erläuterung

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    748

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

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

Blockly Timeout Erläuterung

Geplant Angeheftet Gesperrt Verschoben Blockly
8 Beiträge 3 Kommentatoren 375 Aufrufe 2 Beobachtet
  • Ä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 Offline
    D Offline
    dewaldo
    schrieb am zuletzt editiert von
    #1

    Hallo liebe Community,

    ich bin noch recht neu im Thema SmartHome unterwegs. Ich komme allerdings beruflich aus der IT-Richtung, das nur als Hintergrund. Trotzdem, oder gerade deshalb muss ich hier mal eine vermutlich echt Anfängerfrage stellen.

    Und zwar, wie viele Einträge hier, habe auch ich ein Licht, welches per Shelly schaltet und einen PIR, der auf Personen reagiert, wodurch das Licht einschalten soll.

    Mein Script funktioniert auch wie gewünscht, allerdings habe ich den Aufbau mit dem "Stop Timeout" und "Ausführen Timeout" aus einem anderen Forumbeispiel.

    Meine Frage ist nun: Kann mir bitte jemand verständlich erklären, wie dieser Mechanismus des Timeouts funktioniert ?
    Ich sehe das Script und denke wie folgt:

    1. Wenn sich der Eingang ändern, dann...
      ... 2. Wenn der Eingang dann "true" ist, dann...
      ...3. Schalte das Licht ein
      ....3. Stoppe Timeout
      ... 2. Wenn der Eingang aber "false" ist, dann...
      3. Starte Timeout von 5 Sekunden und schalte dann das Licht aus

    Die Zahlen 1, 2, 3 sollen die IF, ELSE - Ebenen im Script sein.
    Was ich nicht verstehe ist, wenn einmal die Bedingung erfüllt ist, dass der PIR ausschaltet und die 5 Sekunden Timeout laufen, wie kann während dieser Zeit dann ein erneutes Auslösen des PIR dazu führen, dass das Script erneut reagiert und dadurch Stop Timeout aufgerufen wird ? Verstehe diese "Abbruch"-Bedingung des Timeouts nicht bzw. wie das überhaupt funktioniert, dass beim erneuten Auslösen innerhalb der Timeout Zeit das Script überhaupt nochmal reagiert darauf ?

    Hier noch ein Screenshot:
    892bfd55-b8d5-4239-adc9-89b2cf5d5c53-image.png

    paul53P 1 Antwort Letzte Antwort
    0
    • D dewaldo

      Hallo liebe Community,

      ich bin noch recht neu im Thema SmartHome unterwegs. Ich komme allerdings beruflich aus der IT-Richtung, das nur als Hintergrund. Trotzdem, oder gerade deshalb muss ich hier mal eine vermutlich echt Anfängerfrage stellen.

      Und zwar, wie viele Einträge hier, habe auch ich ein Licht, welches per Shelly schaltet und einen PIR, der auf Personen reagiert, wodurch das Licht einschalten soll.

      Mein Script funktioniert auch wie gewünscht, allerdings habe ich den Aufbau mit dem "Stop Timeout" und "Ausführen Timeout" aus einem anderen Forumbeispiel.

      Meine Frage ist nun: Kann mir bitte jemand verständlich erklären, wie dieser Mechanismus des Timeouts funktioniert ?
      Ich sehe das Script und denke wie folgt:

      1. Wenn sich der Eingang ändern, dann...
        ... 2. Wenn der Eingang dann "true" ist, dann...
        ...3. Schalte das Licht ein
        ....3. Stoppe Timeout
        ... 2. Wenn der Eingang aber "false" ist, dann...
        3. Starte Timeout von 5 Sekunden und schalte dann das Licht aus

      Die Zahlen 1, 2, 3 sollen die IF, ELSE - Ebenen im Script sein.
      Was ich nicht verstehe ist, wenn einmal die Bedingung erfüllt ist, dass der PIR ausschaltet und die 5 Sekunden Timeout laufen, wie kann während dieser Zeit dann ein erneutes Auslösen des PIR dazu führen, dass das Script erneut reagiert und dadurch Stop Timeout aufgerufen wird ? Verstehe diese "Abbruch"-Bedingung des Timeouts nicht bzw. wie das überhaupt funktioniert, dass beim erneuten Auslösen innerhalb der Timeout Zeit das Script überhaupt nochmal reagiert darauf ?

      Hier noch ein Screenshot:
      892bfd55-b8d5-4239-adc9-89b2cf5d5c53-image.png

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

      @dewaldo sagte: wie das überhaupt funktioniert, dass beim erneuten Auslösen innerhalb der Timeout Zeit das Script überhaupt nochmal reagiert darauf ?

      Javascript arbeitet nicht zyklisch, sondern Ereignis gesteuert. Ein Ereignis ist z.B. die Wertänderung eines Datenpunktes (PIR-Trigger) oder auch der Ablauf eines Timeout.

      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

      D 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @dewaldo sagte: wie das überhaupt funktioniert, dass beim erneuten Auslösen innerhalb der Timeout Zeit das Script überhaupt nochmal reagiert darauf ?

        Javascript arbeitet nicht zyklisch, sondern Ereignis gesteuert. Ein Ereignis ist z.B. die Wertänderung eines Datenpunktes (PIR-Trigger) oder auch der Ablauf eines Timeout.

        D Offline
        D Offline
        dewaldo
        schrieb am zuletzt editiert von
        #3

        @paul53 :
        D.h. ich muss mir das so vorstellen ?

        • Bewegungsmelder löst aus -> Event, welches das erste IF triggert und welches dann abläuft
        • Bewegungsmelder schaltet ab -> Event, welches das "Else If" startet und das Timeout dort startet
        • Bewegungsmeldet löst erneut aus -> Event, welches das erste IF triggert, während das andere Else If noch abgearbeitet wird ?
          -> Und weil oben dann "Stop Timeout" steht, bricht das Event oben die Abarbeitung im unteren ab ?

        Oh ha, ich habe bislang nur Erfahrung mit zyklischen Skripten, das wird eine ganz schöne Umstellung so zu denken ...
        Aber vielen Dank für die Erläuterung, sofern ich es jetzt so richtig wiedergegeben habe ...

        Gruß, dewaldo

        paul53P 1 Antwort Letzte Antwort
        0
        • D dewaldo

          @paul53 :
          D.h. ich muss mir das so vorstellen ?

          • Bewegungsmelder löst aus -> Event, welches das erste IF triggert und welches dann abläuft
          • Bewegungsmelder schaltet ab -> Event, welches das "Else If" startet und das Timeout dort startet
          • Bewegungsmeldet löst erneut aus -> Event, welches das erste IF triggert, während das andere Else If noch abgearbeitet wird ?
            -> Und weil oben dann "Stop Timeout" steht, bricht das Event oben die Abarbeitung im unteren ab ?

          Oh ha, ich habe bislang nur Erfahrung mit zyklischen Skripten, das wird eine ganz schöne Umstellung so zu denken ...
          Aber vielen Dank für die Erläuterung, sofern ich es jetzt so richtig wiedergegeben habe ...

          Gruß, dewaldo

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

          @dewaldo sagte: Event, welches das erste IF triggert, während das andere Else If noch abgearbeitet wird ?

          Es wird nicht das else if abgearbeitet, sondern im Hintergrund läuft der Timer, der nun gestoppt wird.

          @dewaldo sagte in Blockly Timeout Erläuterung:

          das wird eine ganz schöne Umstellung so zu denken ...

          Das ging mir auch so.

          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

          D 1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @dewaldo sagte: Event, welches das erste IF triggert, während das andere Else If noch abgearbeitet wird ?

            Es wird nicht das else if abgearbeitet, sondern im Hintergrund läuft der Timer, der nun gestoppt wird.

            @dewaldo sagte in Blockly Timeout Erläuterung:

            das wird eine ganz schöne Umstellung so zu denken ...

            Das ging mir auch so.

            D Offline
            D Offline
            dewaldo
            schrieb am zuletzt editiert von
            #5

            @paul53

            Oh je... dann muss ich leider nochmal nachhaken, Entschuldigung...
            Wenn also im "Else if" nur das Timeout sozusagen angestoßen wird, dass der Timer im Hintergrund läuft, wie wird dann das Ausschalten des Lichts bewerkstelligt ?
            Merkt sich Javascript diese Bedienung, dass wenn der Timeout abgelaufen ist, dies wiederum ein Ereignis darstellt, das dann das Kommando "Licht aus" ausführt ?

            Bedeutet das weiter, dass "Timeout" quasi wie eine globale Variable zu sehen ist?
            Was heißt das für mehrere Scripts, die parallel ausgeführt werden, wo jedes für sich ebenfalls das Timeout verwendet ? Führt das dann zu Konflikten ?

            AsgothianA paul53P 2 Antworten Letzte Antwort
            0
            • D dewaldo

              @paul53

              Oh je... dann muss ich leider nochmal nachhaken, Entschuldigung...
              Wenn also im "Else if" nur das Timeout sozusagen angestoßen wird, dass der Timer im Hintergrund läuft, wie wird dann das Ausschalten des Lichts bewerkstelligt ?
              Merkt sich Javascript diese Bedienung, dass wenn der Timeout abgelaufen ist, dies wiederum ein Ereignis darstellt, das dann das Kommando "Licht aus" ausführt ?

              Bedeutet das weiter, dass "Timeout" quasi wie eine globale Variable zu sehen ist?
              Was heißt das für mehrere Scripts, die parallel ausgeführt werden, wo jedes für sich ebenfalls das Timeout verwendet ? Führt das dann zu Konflikten ?

              AsgothianA Offline
              AsgothianA Offline
              Asgothian
              Developer
              schrieb am zuletzt editiert von Asgothian
              #6

              @dewaldo

              Du darfst dir das so vorstellen:

              im System gibt es eine Lange liste von Dingen die "in der Zukunft" ausgeführt werden sollen. Mit dem Befehl "Ausführen timeout in x sekunden" fügst du dieser Liste eine neue Aufgabe hinzu (mit Aufgabe und wann es passieren soll). Als Ergebnis bekommst du eine Adresse, an der diese Aufgabe abgelegt ist. Diese Adresse speicherst du in der (in dem Skript globalen) Variable timeout.

              Auf die Art und weise kanns der "stop timeout" Befehl den Eintrag aus der globalen Liste wieder entfernen, bevor die Aktion ausgeführt wurde.

              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 dewaldo

                @paul53

                Oh je... dann muss ich leider nochmal nachhaken, Entschuldigung...
                Wenn also im "Else if" nur das Timeout sozusagen angestoßen wird, dass der Timer im Hintergrund läuft, wie wird dann das Ausschalten des Lichts bewerkstelligt ?
                Merkt sich Javascript diese Bedienung, dass wenn der Timeout abgelaufen ist, dies wiederum ein Ereignis darstellt, das dann das Kommando "Licht aus" ausführt ?

                Bedeutet das weiter, dass "Timeout" quasi wie eine globale Variable zu sehen ist?
                Was heißt das für mehrere Scripts, die parallel ausgeführt werden, wo jedes für sich ebenfalls das Timeout verwendet ? Führt das dann zu Konflikten ?

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

                @dewaldo sagte: wie wird dann das Ausschalten des Lichts bewerkstelligt ?

                An den Timer wird eine Referenz zur Callback-Funktion übergeben, die das Ausschalten ausführt: Bei Ablauf ruft der Timer die Callback-Funktion auf.

                @dewaldo sagte in Blockly Timeout Erläuterung:

                Was heißt das für mehrere Scripts, die parallel ausgeführt werden, wo jedes für sich ebenfalls das Timeout verwendet ? Führt das dann zu Konflikten ?

                Nein, es können viele Timer parallel laufen.

                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

                D 1 Antwort Letzte Antwort
                0
                • paul53P paul53

                  @dewaldo sagte: wie wird dann das Ausschalten des Lichts bewerkstelligt ?

                  An den Timer wird eine Referenz zur Callback-Funktion übergeben, die das Ausschalten ausführt: Bei Ablauf ruft der Timer die Callback-Funktion auf.

                  @dewaldo sagte in Blockly Timeout Erläuterung:

                  Was heißt das für mehrere Scripts, die parallel ausgeführt werden, wo jedes für sich ebenfalls das Timeout verwendet ? Führt das dann zu Konflikten ?

                  Nein, es können viele Timer parallel laufen.

                  D Offline
                  D Offline
                  dewaldo
                  schrieb am zuletzt editiert von
                  #8

                  @paul53 , @Asgothian

                  Vielen Dank euch beiden für die schnellen Informationen zu dem Thema.
                  Ich kann mir das ganze jetzt schon besser vorstellen.
                  Ich habe gerade 2 Einzelscripte in eines zusammenkopiert. Das andere Script wertet einen zum Licht gehörenden Wandtaster aus. Da die Scripte themenmäßig zusammengehören, habe ich sie in eins kopiert und sehe jetzt im JavaScript Code auch, wie das mit dem Timeout funktioniert. Ich sehe, dass nun 2 Variablen angelegt wurden: timeout und timeout2, sodass diese jeweils ihren eigenen Callback haben.

                  Also nochmal vielen Dank, das hat mir schonmal einen Schups in die richtige Richtung gegeben, auch wenn ich noch einen langen Weg vor mir habe, bis ich das Werkzeug beherrschen werde...

                  1 Antwort Letzte Antwort
                  0

                  Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                  Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                  Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                  Registrieren Anmelden
                  Antworten
                  • In einem neuen Thema antworten
                  Anmelden zum Antworten
                  • Älteste zuerst
                  • Neuste zuerst
                  • Meiste Stimmen


                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  553

                  Online

                  32.8k

                  Benutzer

                  82.7k

                  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