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. async-await sleep stoppen

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    386

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    10
    1
    340

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

async-await sleep stoppen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
5 Beiträge 3 Kommentatoren 447 Aufrufe 3 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.
  • S Offline
    S Offline
    Smartin
    schrieb am zuletzt editiert von
    #1

    Moin,
    habe schon gesucht hier aber irgendwie nix gefunden.
    Ich verwende im Script mit einem Bewegungsmelder einen async-await sleep Timer.
    Das Licht soll sich einschalten beim betreten des Raums und nach 10 Minuten wieder ausgehen.

    Beispiel:

    on({id: RFCode, val: "123456"},  async function() {
        setState(Light, true);
         await Sleep(600000);
        setState(Light, false);
    });
    

    Wenn ich aber schon vorher den Bewegungsmelder durch das rausgehen wieder auslöse, soll das Licht natürlich dann schon nach zB. einer Wartezeit von 30 Sekunden wieder ausgehen.
    Und der 10Minuten Timer soll gelöscht werden.

    Falls ich dann innerhalb der Wartezeit von 30 Sekunden den Raum wieder betrete, soll der Wartezeit-Timer wieder gelöscht werden, sodass das Licht gar nicht erst ausgeht.
    Und der 10 Minuten-Timer soll erneut wieder starten.

    Hat jemand so etwas eventuell mal umgesetzt und kann mir zeigen, wie man das machen würde?
    Ganz generell bin ich in Javascript nur rudimentär fit und würde mir das ein- und ausschalten sicher irgendwie umständlich hinprokeln. Aber wie ich die await sleep-Timer stoppe weiß ich bis heute nicht.
    Wäre klasse, wenn mir jemand auf die Sprünge helfen kann.

    Grüße aus Hamburg

    AsgothianA 1 Antwort Letzte Antwort
    0
    • S Smartin

      Moin,
      habe schon gesucht hier aber irgendwie nix gefunden.
      Ich verwende im Script mit einem Bewegungsmelder einen async-await sleep Timer.
      Das Licht soll sich einschalten beim betreten des Raums und nach 10 Minuten wieder ausgehen.

      Beispiel:

      on({id: RFCode, val: "123456"},  async function() {
          setState(Light, true);
           await Sleep(600000);
          setState(Light, false);
      });
      

      Wenn ich aber schon vorher den Bewegungsmelder durch das rausgehen wieder auslöse, soll das Licht natürlich dann schon nach zB. einer Wartezeit von 30 Sekunden wieder ausgehen.
      Und der 10Minuten Timer soll gelöscht werden.

      Falls ich dann innerhalb der Wartezeit von 30 Sekunden den Raum wieder betrete, soll der Wartezeit-Timer wieder gelöscht werden, sodass das Licht gar nicht erst ausgeht.
      Und der 10 Minuten-Timer soll erneut wieder starten.

      Hat jemand so etwas eventuell mal umgesetzt und kann mir zeigen, wie man das machen würde?
      Ganz generell bin ich in Javascript nur rudimentär fit und würde mir das ein- und ausschalten sicher irgendwie umständlich hinprokeln. Aber wie ich die await sleep-Timer stoppe weiß ich bis heute nicht.
      Wäre klasse, wenn mir jemand auf die Sprünge helfen kann.

      Grüße aus Hamburg

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

      @smartin sagte in async-await sleep stoppen:

      Moin,
      habe schon gesucht hier aber irgendwie nix gefunden.
      Ich verwende im Script mit einem Bewegungsmelder einen async-await sleep Timer.
      Das Licht soll sich einschalten beim betreten des Raums und nach 10 Minuten wieder ausgehen.

      Beispiel:

      on({id: RFCode, val: "123456"},  async function() {
          setState(Light, true);
           await Sleep(600000);
          setState(Light, false);
      });
      

      Wenn ich aber schon vorher den Bewegungsmelder durch das rausgehen wieder auslöse, soll das Licht natürlich dann schon nach zB. einer Wartezeit von 30 Sekunden wieder ausgehen.
      Und der 10Minuten Timer soll gelöscht werden.

      Falls ich dann innerhalb der Wartezeit von 30 Sekunden den Raum wieder betrete, soll der Wartezeit-Timer wieder gelöscht werden, sodass das Licht gar nicht erst ausgeht.
      Und der 10 Minuten-Timer soll erneut wieder starten.

      Hat jemand so etwas eventuell mal umgesetzt und kann mir zeigen, wie man das machen würde?
      Ganz generell bin ich in Javascript nur rudimentär fit und würde mir das ein- und ausschalten sicher irgendwie umständlich hinprokeln. Aber wie ich die await sleep-Timer stoppe weiß ich bis heute nicht.
      Wäre klasse, wenn mir jemand auf die Sprünge helfen kann.

      Grüße aus Hamburg

      solange du via

          setState(Light, true);
           await Sleep(600000);
          setState(Light, false);
      

      arbeitest wird es nicht gehen. Was du nutzen musst ist:

          setState(Light, true);
          lightTimeout= setTimeout(function() {  setState(Light, false); }, 60000)
      

      nutzen. Dann kannst du durch

      clearTimeout(lightTimeout)
      

      den Timeout zum ausschalten löschen.

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

      S 1 Antwort Letzte Antwort
      1
      • AsgothianA Asgothian

        @smartin sagte in async-await sleep stoppen:

        Moin,
        habe schon gesucht hier aber irgendwie nix gefunden.
        Ich verwende im Script mit einem Bewegungsmelder einen async-await sleep Timer.
        Das Licht soll sich einschalten beim betreten des Raums und nach 10 Minuten wieder ausgehen.

        Beispiel:

        on({id: RFCode, val: "123456"},  async function() {
            setState(Light, true);
             await Sleep(600000);
            setState(Light, false);
        });
        

        Wenn ich aber schon vorher den Bewegungsmelder durch das rausgehen wieder auslöse, soll das Licht natürlich dann schon nach zB. einer Wartezeit von 30 Sekunden wieder ausgehen.
        Und der 10Minuten Timer soll gelöscht werden.

        Falls ich dann innerhalb der Wartezeit von 30 Sekunden den Raum wieder betrete, soll der Wartezeit-Timer wieder gelöscht werden, sodass das Licht gar nicht erst ausgeht.
        Und der 10 Minuten-Timer soll erneut wieder starten.

        Hat jemand so etwas eventuell mal umgesetzt und kann mir zeigen, wie man das machen würde?
        Ganz generell bin ich in Javascript nur rudimentär fit und würde mir das ein- und ausschalten sicher irgendwie umständlich hinprokeln. Aber wie ich die await sleep-Timer stoppe weiß ich bis heute nicht.
        Wäre klasse, wenn mir jemand auf die Sprünge helfen kann.

        Grüße aus Hamburg

        solange du via

            setState(Light, true);
             await Sleep(600000);
            setState(Light, false);
        

        arbeitest wird es nicht gehen. Was du nutzen musst ist:

            setState(Light, true);
            lightTimeout= setTimeout(function() {  setState(Light, false); }, 60000)
        

        nutzen. Dann kannst du durch

        clearTimeout(lightTimeout)
        

        den Timeout zum ausschalten löschen.

        S Offline
        S Offline
        Smartin
        schrieb am zuletzt editiert von
        #3

        @asgothian
        Das hilft mir auf jeden Fall schon mal weiter, danke!
        Kann ich mit einer if Abfrage oder so irgendwie herausfinden, ob ein Timeout gerade aktiv ist?
        Ich weiß sonst nicht, wie ich herausfinde, ob die Wartezeit von 30 Sekunden gerade läuft.

        paul53P 1 Antwort Letzte Antwort
        0
        • S Smartin

          @asgothian
          Das hilft mir auf jeden Fall schon mal weiter, danke!
          Kann ich mit einer if Abfrage oder so irgendwie herausfinden, ob ein Timeout gerade aktiv ist?
          Ich weiß sonst nicht, wie ich herausfinde, ob die Wartezeit von 30 Sekunden gerade läuft.

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

          @smartin sagte: Kann ich mit einer if Abfrage oder so irgendwie herausfinden, ob ein Timeout gerade aktiv ist?

          Ja, wenn die Timer-Variable zum Ablauf der Zeit und beim Stoppen auf null gesetzt wird.

          if(lightTimeout) {
              clearTimeout(lightTimeout);
              lightTimeout = null;
          }
          
              setState(Light, true);
              lightTimeout = setTimeout(function() {  
                  setState(Light, false);
                  lightTimeout = null;
              }, 60000)
          

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

            @smartin sagte: Kann ich mit einer if Abfrage oder so irgendwie herausfinden, ob ein Timeout gerade aktiv ist?

            Ja, wenn die Timer-Variable zum Ablauf der Zeit und beim Stoppen auf null gesetzt wird.

            if(lightTimeout) {
                clearTimeout(lightTimeout);
                lightTimeout = null;
            }
            
                setState(Light, true);
                lightTimeout = setTimeout(function() {  
                    setState(Light, false);
                    lightTimeout = null;
                }, 60000)
            
            S Offline
            S Offline
            Smartin
            schrieb am zuletzt editiert von
            #5

            Super, vielen Dank für Eure Tipps, !
            Habe es jetzt so umgesetzt

            var Timeout1 = null;
            var Timeout2 = null;
            
            on({id: RFCode, val: "12345"}, function() {
            if (getState(Light).val === false) {
            	setState(Light, true);
            	TimerLang();
            	      
            } else if(Timeout1) {
                clearTimeout(Timeout1);
                Timeout1 = null;
            	TimerKurz();
            
            } else if(Timeout2) {
                clearTimeout(Timeout2);
                Timeout2 = null;
            	TimerLang();
            }});
            
            function TimerLang() {
            	Timeout1= setTimeout(function() {
            		setState(Light, false);
            		Timeout1 = null;
            	 }, 600000)};
            	 
            function TimerKurz() {
            	Timeout2= setTimeout(function() {
            		setState(Light, false);
            		Timeout2 = null;
            		}, 30000)};
            

            Falls man das noch eleganter machen kann, immer her mit den Tipps.
            Ich bin wie gesagt nicht so der JS Held, aber zumindest funktioniert es 😊

            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

            542

            Online

            32.8k

            Benutzer

            82.8k

            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