Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Timeout / Cleartimeout

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Timeout / Cleartimeout

    This topic has been deleted. Only users with topic management privileges can see it.
    • P
      Pat last edited by

      Hallo ihr

      Ich versuche mich gerade einwenig mit Javascript 😄

      Ich habe noch ein verständnis Problem gerade mit cleartimeout.

              if (getState(online_1).val || getState(online_2).val) {
                  setState(jalosie_s_s7, true);
              } else {
                  setState(jalosie_s_s7, false);
                  var timeout = setTimeout(function() {
                      sendTo("pushover.0", "send", {
                      message: 'Shelly 2.5 im Büro ist Offline',
                      sound: "siren"
                      });
                  }, 20000); //240000
              }
              if (getState(jalosie_s_s7).val) {
                  (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})();
              }
      

      Der Sciptblock funktioniert das ist es jetzt nicht aber kann man den cleartimeout kürzer machen ??
      Habe ihn jetzt 1 zu 1 aus Blockly kopiert.

      1 Reply Last reply Reply Quote 0
      • P
        Pat last edited by

        warum geht nicht nur

        clearTimeout(timeout)
        

        ??

        oder reicht

        clearTimeout(timeout); 
        timeout = null;
        
        paul53 1 Reply Last reply Reply Quote 0
        • paul53
          paul53 @Pat last edited by

          @Pat sagte:

          warum geht nicht nur

          Das genügt zum Stoppen des Timers.

          @Pat sagte in Timeout / Cleartimeout:

          oder reicht

          Die Version braucht man, wenn an anderer Stelle ein laufender Timer abgefragt werden soll.

          1 Reply Last reply Reply Quote 0
          • P
            Pat last edited by Pat

            erstmal vielen dank für deine antwort !!

            Ich habe nochmal ein wenig gespiellt und ich bekomme die funktion nicht abgebrochen. Er schreibt immer nach 3sek in die console Hallo.

            createState('Test.Button1', { type: 'boolean', def: false});
            var taster1 = 'javascript.0.Test.Button1';
            
            on({id: taster1, change: "any"}, function (obj) {
            
                if (getState(taster1).val) {
                    var timeout = setTimeout(function() {
                            console.log('Hallo');    
                    }, 3000);  
                } else {
                    clearTimeout(timeout); 
                    timeout = null;      
                }
            });    
            
            1 Reply Last reply Reply Quote 0
            • P
              Pat last edited by

              ok fehler gefunden.

              Ich habe den "var timeout" im if gesetzt. Als ich ihn im header gesetzt habe ging es.

              createState('Test.Button1', { type: 'boolean', def: false});
              
              var taster1 = 'javascript.0.Test.Button1';
              var timeout
              
              on({id: taster1, change: "any"}, function (obj) {
              
                  if (getState(taster1).val) {
              
                      timeout = setTimeout(function() {
                              console.log('Hallo');    
                      }, 3000);  
                  } else {
                      clearTimeout(timeout); 
                      timeout = null;      
                  }
              });    
              
              P 1 Reply Last reply Reply Quote 0
              • P
                Pat @Pat last edited by Pat

                Ok nochmal eine ergänzung. Wenn der Eingang pulsiert innerhalb der eingestelltenzeit wird der Code trotzdem ausgeführt.

                mit einer nicht timeout abfrage im if hat dies verhindert.

                createState('Test.Button1', { type: 'boolean', def: false});
                
                var taster1 = 'javascript.0.Test.Button1';
                var timeout
                
                on({id: taster1, change: "ne"}, function (obj) {
                    if (getState(taster1).val && !timeout) {
                        timeout = setTimeout(function() {
                                console.log('Hallo');    
                        }, 3000);  
                    } else {
                        clearTimeout(timeout); 
                        timeout = null;      
                    }
                });    
                

                Falls ich ein fehler gemacht habe (z.B formatierung) bitte schreiben da ich noch Java / Javascript neuling bin.

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

                Support us

                ioBroker
                Community Adapters
                Donate

                925
                Online

                31.6k
                Users

                79.5k
                Topics

                1.3m
                Posts

                javascript
                2
                6
                1146
                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