Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. clear Timeout funktioniert nicht mehr

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    clear Timeout funktioniert nicht mehr

    This topic has been deleted. Only users with topic management privileges can see it.
    • paul53
      paul53 @sub1ne last edited by paul53

      @sub1ne sagte: ich reagiere auf die Wertänderung von "deconz.0.Sensors.6.open" - einmal wenn er "true" wird, einmal, wenn er "false" wird.

      Nein, der Trigger reagiert nicht nur auf Wertänderung, sondern auch dann, wenn der Zeitstempel bei gleich bleibendem Wert aktualisiert wird.

      @sub1ne sagte in clear Timeout funktioniert nicht mehr:

      Dort gibt es weder in Zeile 1 eine Deklaration von catModeTimeout

      Das kann ich bei mir nicht nachvollziehen.

      S 1 Reply Last reply Reply Quote 0
      • S
        sub1ne @paul53 last edited by sub1ne

        @paul53 said in clear Timeout funktioniert nicht mehr:

        Das kann ich bei mir nicht nachvollziehen.

        d.h. wenn du in deinem MIT Blockly generierten Skript auf Javascript umschaltest wird in Zeile 1 ein

        var myTimeout = null; 
        

        gemacht? Das ist bei mir definitiv nicht der Fall...

        Asgothian paul53 2 Replies Last reply Reply Quote 0
        • Asgothian
          Asgothian Developer @sub1ne last edited by Asgothian

          @sub1ne die Ursache warum dein Skript nicht funktioniert hat hat @paul53 Bereits oben erwähnt:

          Ein trigger auf “ist wahr” wird jedes Mal aktiv wenn der datenpunkt mit wahr aktualisiert wird. Das kann öfter sein als man denkt.

          Was dann passiert ist einfach. Es wird ein zweiter timeout gestartet und der gleichen Variable zugeordnet. Damit kann der erste timeout nicht mehr angehalten werden.

          Ein sauberer Weg auf die Änderung falsch/wahr zu trigger ist ein trigger auf “ist größer als vorher”, (bei falsch: ist kleiner als vorher)

          Wenn du in deinem originalen Blockly die triggerbedi ging anpasst dann sollte es also auch gehen.

          Das die Variable vor dem “setTimeout” nicht deklariert wird liegt wahrscheinlich daran das die timeout Benennungen initial nicht wie “benutzerdefinierte” Variablen behandelt werden. Sie stehen ja auch nicht in der “variablen” Liste von Blockly.

          A.

          N S 2 Replies Last reply Reply Quote 0
          • paul53
            paul53 @sub1ne last edited by

            @sub1ne sagte: Blockly generierten Skript auf Javascript umschaltest wird in Zeile 1 ein

            var timeout;
            

            gemacht. Enthält undefined.

            1 Reply Last reply Reply Quote 0
            • N
              Nordischerjung @Asgothian last edited by

              @asgothian sagte in clear Timeout funktioniert nicht mehr:

              Ein trigger auf “ist wahr” wird jedes Mal aktiv wenn der datenpunkt mit wahr aktualisiert wird. Das kann öfter sein als man denkt.

              Ein sauberer Weg auf die Änderung falsch/wahr zu trigger ist ein trigger auf “ist größer als vorher”, (bei falsch: ist kleiner als vorher)

              Nur mal kurz geräubert,

              das heißt also, so

              b9d256cc-3004-4fbf-9138-3b528ffa4edc-grafik.png

              ist besser als so?

              920e9e18-9a4b-4823-b831-7363f931c328-grafik.png

              Asgothian paul53 2 Replies Last reply Reply Quote 0
              • Asgothian
                Asgothian Developer @Nordischerjung last edited by Asgothian

                @nordischerjung
                Besser und besser.

                In genau dem Beispiel ist das Ergebnis ziemlich gleich. Ich ziehe das erste vor, insbesondere wenn mich der gegenteilige Fall nicht interessiert.

                Das gilt so lange wie im falls der “wert” Baustein genutzt wird.

                A.

                1 Reply Last reply Reply Quote 1
                • paul53
                  paul53 @Nordischerjung last edited by

                  @nordischerjung sagte: ist besser als so?

                  Ich bevorzuge

                  Bild_2021-05-06_135444.png

                  N S 2 Replies Last reply Reply Quote 1
                  • N
                    Nordischerjung @paul53 last edited by

                    @paul53 Ja danke, das hatte ich mir so auch schon überlegt.

                    1 Reply Last reply Reply Quote 0
                    • S
                      sub1ne @Asgothian last edited by sub1ne

                      @asgothian

                      @asgothian said in clear Timeout funktioniert nicht mehr:

                      Ein trigger auf “ist wahr” wird jedes Mal aktiv wenn der datenpunkt mit wahr aktualisiert wird.

                      demnach ist der generierte Eventbehandler

                      on({id: 'deconz.0.Sensors.6.open', val: true}, async function (obj) {...});
                      

                      schlecht gewählt, die Javascript API gibt da laut Doku (https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#on---subscribe-on-changes-or-updates-of-some-state) bessers her, nämlich:

                      on({id: 'deconz.0.Sensors.6.open', val: true, oldVal: false}, async function (obj) {...});
                      

                      somit reagiert der Trigger nur auf Änderungen von false auf true.

                      @asgothian said in clear Timeout funktioniert nicht mehr:

                      Ein sauberer Weg auf die Änderung falsch/wahr zu trigger ist ein trigger auf “ist größer als vorher”, (bei falsch: ist kleiner als vorher)

                      ich bin seit 14 Jahren als Software-Engineer tätig...und die Verwendung von "true > false" würde ich nicht gerade als sauber bezeichnen...bei C++, C# oder Java haut dir das mal schön der Compiler um die Ohren...

                      1 Reply Last reply Reply Quote 1
                      • S
                        sub1ne @paul53 last edited by sub1ne

                        @paul53 und "... wurde geändert" triggert also nur wenn der Wert sich zu dem vorherigen Wert geändert hat? Also von true auf false und umgekehrt?

                        N paul53 2 Replies Last reply Reply Quote 0
                        • N
                          Nordischerjung @sub1ne last edited by

                          @sub1ne ne, guck mal hier hatte @paul53 geschrieben

                          Nein, der Trigger reagiert nicht nur auf Wertänderung, sondern auch dann, wenn der Zeitstempel bei gleich bleibendem Wert aktualisiert wird.
                          
                          1 Reply Last reply Reply Quote 0
                          • paul53
                            paul53 @sub1ne last edited by paul53

                            @sub1ne sagte: "... wurde geändert" triggert also nur wenn der Wert sich zu dem vorherigen Wert geändert hat? Also von true auf false und umgekehrt?

                            Ja.
                            Diese Bedingungen triggern nur bei Wertänderung:

                            • wurde geändert
                            • ist kleiner als letztes
                            • ist größer als letztes

                            Alle anderen Bedingungen können auch bei Aktualisierung des Zeitstempels ohne Wertänderung triggern.

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

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            900
                            Online

                            31.6k
                            Users

                            79.6k
                            Topics

                            1.3m
                            Posts

                            4
                            18
                            1046
                            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