Skip to content
  • Home
  • 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

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. async-await sleep stoppen

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.0k

async-await sleep stoppen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
5 Beiträge 3 Kommentatoren 394 Aufrufe 3 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 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 :blush:

            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

            706

            Online

            32.6k

            Benutzer

            82.0k

            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