Skip to content
  • 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
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. clear Timeout funktioniert nicht mehr

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.2k

clear Timeout funktioniert nicht mehr

Geplant Angeheftet Gesperrt Verschoben JavaScript
18 Beiträge 4 Kommentatoren 1.5k Aufrufe 2 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.
  • S sub1ne

    @paul53 die Codestellen. auf die du dich beziehst, sind die, die ich selbst im kopierten Javascript Coding manuell eingefügt habe - und mit diesen funktioniert alles wieder wie gehabt.

    Das Javascript aus meinem zweiten Posting ist das, was aus dem Blockly generiert wird. Dort gibt es weder in Zeile 1 eine Deklaration von catModeTimeout noch den if-Block um den Timer-start. Diese habe ich eingefügt, NACHDEM es mit dem reinen Blockly-Skript nicht mehr funktioniert hat.

    Fakt ist, mit meinem manuell angepassten Javascript funktioniert es, mit dem Blocky nicht.

    @paul53 said in clear Timeout funktioniert nicht mehr:

    Außerdem sollte auf Wertänderung getriggert werden, damit mit Sicherheit nur ein Timer läuft, der gestoppt werden kann.

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

    Ich könnte jetzt beides noch in den gleichen Trigger hängen, allerdings hat es ja funktioniert.

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

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

    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

    S 1 Antwort Letzte Antwort
    0
    • paul53P 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 Offline
      S Offline
      sub1ne
      schrieb am zuletzt editiert von sub1ne
      #8

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

      AsgothianA paul53P 2 Antworten Letzte Antwort
      0
      • S 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...

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

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

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

        N S 2 Antworten Letzte Antwort
        0
        • S 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...

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

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

          var timeout;
          

          gemacht. Enthält undefined.

          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
          • AsgothianA 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 Offline
            N Offline
            Nordischerjung
            schrieb am zuletzt editiert von
            #11

            @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

            Gruß Nordischerjung

            sonnige Grüße von der Ostsee

            AsgothianA paul53P 2 Antworten Letzte Antwort
            0
            • N Nordischerjung

              @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

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

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

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

              1 Antwort Letzte Antwort
              1
              • N Nordischerjung

                @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

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

                @nordischerjung sagte: ist besser als so?

                Ich bevorzuge

                Bild_2021-05-06_135444.png

                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

                N S 2 Antworten Letzte Antwort
                1
                • paul53P paul53

                  @nordischerjung sagte: ist besser als so?

                  Ich bevorzuge

                  Bild_2021-05-06_135444.png

                  N Offline
                  N Offline
                  Nordischerjung
                  schrieb am zuletzt editiert von
                  #14

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

                  Gruß Nordischerjung

                  sonnige Grüße von der Ostsee

                  1 Antwort Letzte Antwort
                  0
                  • AsgothianA 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.

                    S Offline
                    S Offline
                    sub1ne
                    schrieb am zuletzt editiert von sub1ne
                    #15

                    @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 Antwort Letzte Antwort
                    1
                    • paul53P paul53

                      @nordischerjung sagte: ist besser als so?

                      Ich bevorzuge

                      Bild_2021-05-06_135444.png

                      S Offline
                      S Offline
                      sub1ne
                      schrieb am zuletzt editiert von sub1ne
                      #16

                      @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 paul53P 2 Antworten Letzte Antwort
                      0
                      • S 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 Offline
                        N Offline
                        Nordischerjung
                        schrieb am zuletzt editiert von
                        #17

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

                        Gruß Nordischerjung

                        sonnige Grüße von der Ostsee

                        1 Antwort Letzte Antwort
                        0
                        • S 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?

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

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

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


                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          767

                          Online

                          32.4k

                          Benutzer

                          81.4k

                          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
                          • Aktuell
                          • Tags
                          • Ungelesen 0
                          • Kategorien
                          • Unreplied
                          • Beliebt
                          • GitHub
                          • Docu
                          • Hilfe