Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [gelöst] Schalten verzögert und mit bestimmter Dauer

NEWS

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

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    8
    1
    217

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

[gelöst] Schalten verzögert und mit bestimmter Dauer

Scheduled Pinned Locked Moved JavaScript
security
9 Posts 2 Posters 487 Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Offline
    S Offline
    stimezo
    Forum Testing
    wrote on last edited by stimezo
    #1

    Hallo Gemeinde,
    ich stehe gerade etwas auf dem Schlauch.

    Ich möchte ein Sirene mit einer definierten Verzögerung einschalten,
    sie soll dann für x Sekunden laufen und wieder abschalten.
    Beide Werte kommen aus Datenpunkten.

    Ich mache folgendes:

    // Sirene innen auslösen --------------------------------------------------------------------------------------------------
    on({id: "javascript.0.alarmgeber.innensirene", change: "ne"}, function (obj) {
        if (obj.state.val === true) {
               setStateDelayed("sonoff.0.alarmswitch.POWER1",  true, getState("javascript.0.alarmgeber.alarmInnerSirenDelay").val*1000);   
               timeoutis = setTimeout(function () {
               setState("sonoff.0.alarmswitch.POWER1", false);
               setState("javascript.0.alarmgeber.innensirene", false);          
            }, getState("javascript.0.alarmgeber.alarmInnerSirenDuration").val*1000);
    
        }  
    });   
    

    Das führt dazu, das die Sirene mit Verzögerung einschaltet, aber nicht mehr ausschaltet.
    Kann mir da einer einen kleinen Schubs geben.

    Vielen Dank
    Christian

    A 1 Reply Last reply
    0
    • S stimezo

      Hallo Gemeinde,
      ich stehe gerade etwas auf dem Schlauch.

      Ich möchte ein Sirene mit einer definierten Verzögerung einschalten,
      sie soll dann für x Sekunden laufen und wieder abschalten.
      Beide Werte kommen aus Datenpunkten.

      Ich mache folgendes:

      // Sirene innen auslösen --------------------------------------------------------------------------------------------------
      on({id: "javascript.0.alarmgeber.innensirene", change: "ne"}, function (obj) {
          if (obj.state.val === true) {
                 setStateDelayed("sonoff.0.alarmswitch.POWER1",  true, getState("javascript.0.alarmgeber.alarmInnerSirenDelay").val*1000);   
                 timeoutis = setTimeout(function () {
                 setState("sonoff.0.alarmswitch.POWER1", false);
                 setState("javascript.0.alarmgeber.innensirene", false);          
              }, getState("javascript.0.alarmgeber.alarmInnerSirenDuration").val*1000);
      
          }  
      });   
      

      Das führt dazu, das die Sirene mit Verzögerung einschaltet, aber nicht mehr ausschaltet.
      Kann mir da einer einen kleinen Schubs geben.

      Vielen Dank
      Christian

      A Offline
      A Offline
      Ahnungsbefreit
      wrote on last edited by
      #2

      @stimezo der Denkfehler ist die Annahme, dass die Zeilen des Scripts der Reihe nach abgearbeitet würden und die Zeilen ab 5 auf das Ende von setStateDelayed warten würden

      Wenn meine Antwort hilfreich war, dürft Ihr das gerne durch einen "Upvote" (der kleine "^" unten rechts) zum Ausdruck bringen.

      S 1 Reply Last reply
      0
      • A Ahnungsbefreit

        @stimezo der Denkfehler ist die Annahme, dass die Zeilen des Scripts der Reihe nach abgearbeitet würden und die Zeilen ab 5 auf das Ende von setStateDelayed warten würden

        S Offline
        S Offline
        stimezo
        Forum Testing
        wrote on last edited by
        #3

        @ahnungsbefreit

        Danke, hast Du eine Alternative?

        A 1 Reply Last reply
        0
        • S stimezo

          @ahnungsbefreit

          Danke, hast Du eine Alternative?

          A Offline
          A Offline
          Ahnungsbefreit
          wrote on last edited by
          #4

          @stimezo Du kannst direkt beide setStateDelayed für "true" und "false" absetzen und berechnest die Dauer bis zum Ausschalten einfach durch Addition der beiden Intervalle

          Wenn meine Antwort hilfreich war, dürft Ihr das gerne durch einen "Upvote" (der kleine "^" unten rechts) zum Ausdruck bringen.

          S 2 Replies Last reply
          0
          • A Ahnungsbefreit

            @stimezo Du kannst direkt beide setStateDelayed für "true" und "false" absetzen und berechnest die Dauer bis zum Ausschalten einfach durch Addition der beiden Intervalle

            S Offline
            S Offline
            stimezo
            Forum Testing
            wrote on last edited by
            #5

            @ahnungsbefreit
            Danke, das Probiere ich.

            1 Reply Last reply
            0
            • A Ahnungsbefreit

              @stimezo Du kannst direkt beide setStateDelayed für "true" und "false" absetzen und berechnest die Dauer bis zum Ausschalten einfach durch Addition der beiden Intervalle

              S Offline
              S Offline
              stimezo
              Forum Testing
              wrote on last edited by
              #6

              @ahnungsbefreit

              Das Funktioniert leider nicht:

              // Sirene innen auslösen --------------------------------------------------------------------------------------------------
              on({id: "javascript.0.alarmgeber.innensirene", change: "ne"}, function (obj) {
              
                  if (obj.state.val === true) {
              
                      var schaltsumme = getState("javascript.0.alarmgeber.alarmInnerSirenDelay").val + getState("javascript.0.alarmgeber.alarmInnerSirenDuration").val;
                      log (schaltsumme)
              
                         setStateDelayed("zwave.0.NODE12.SWITCH_BINARY.Instance_2:_Switch_2",  true, getState("javascript.0.alarmgeber.alarmInnerSirenDelay").val*1000); 
                         setStateDelayed("zwave.0.NODE12.SWITCH_BINARY.Instance_2:_Switch_2",  false, schaltsumme * 1000);  
              
                  }  
              }); 
              

              Da schaltet er nicht ein.
              Wenn ich die Verzögerung auf 0 setze schaltet er.

              A 1 Reply Last reply
              0
              • S stimezo

                @ahnungsbefreit

                Das Funktioniert leider nicht:

                // Sirene innen auslösen --------------------------------------------------------------------------------------------------
                on({id: "javascript.0.alarmgeber.innensirene", change: "ne"}, function (obj) {
                
                    if (obj.state.val === true) {
                
                        var schaltsumme = getState("javascript.0.alarmgeber.alarmInnerSirenDelay").val + getState("javascript.0.alarmgeber.alarmInnerSirenDuration").val;
                        log (schaltsumme)
                
                           setStateDelayed("zwave.0.NODE12.SWITCH_BINARY.Instance_2:_Switch_2",  true, getState("javascript.0.alarmgeber.alarmInnerSirenDelay").val*1000); 
                           setStateDelayed("zwave.0.NODE12.SWITCH_BINARY.Instance_2:_Switch_2",  false, schaltsumme * 1000);  
                
                    }  
                }); 
                

                Da schaltet er nicht ein.
                Wenn ich die Verzögerung auf 0 setze schaltet er.

                A Offline
                A Offline
                Ahnungsbefreit
                wrote on last edited by
                #7

                @stimezo SirenDuration und SirenDelay haben den richtigen Typ und kein "max" gesetzt? Debug doch mal die Werte * 1000!

                Wenn meine Antwort hilfreich war, dürft Ihr das gerne durch einen "Upvote" (der kleine "^" unten rechts) zum Ausdruck bringen.

                S 1 Reply Last reply
                0
                • A Ahnungsbefreit

                  @stimezo SirenDuration und SirenDelay haben den richtigen Typ und kein "max" gesetzt? Debug doch mal die Werte * 1000!

                  S Offline
                  S Offline
                  stimezo
                  Forum Testing
                  wrote on last edited by
                  #8

                  @ahnungsbefreit

                  beide sind Zahl ohne max.
                  Die Werte *1000 sind korrekt.

                  S 1 Reply Last reply
                  0
                  • S stimezo

                    @ahnungsbefreit

                    beide sind Zahl ohne max.
                    Die Werte *1000 sind korrekt.

                    S Offline
                    S Offline
                    stimezo
                    Forum Testing
                    wrote on last edited by
                    #9

                    tärrää So gehts, wenn ich zwei Timeouts verschachtel, läuft es wie geschmiert.

                    var timeoutisv
                    var timeoutisd
                    on({id: "javascript.0.alarmgeber.innensirene", change: "ne"}, function (obj) {
                        if (obj.state.val === true) {
                    
                            timeoutisv = setTimeout(function () {
                    	        setState("zwave.0.NODE12.SWITCH_BINARY.Instance_2:_Switch_2",  true);
                                
                                    timeoutisd = setTimeout(function () {
                    		            setState("zwave.0.NODE12.SWITCH_BINARY.Instance_2:_Switch_2", false);
                              		    setState("javascript.0.alarmgeber.innensirene", false);  
                                          
                               }, getState("javascript.0.alarmgeber.alarmInnerSirenDuration").val*1000);
                               }, getState("javascript.0.alarmgeber.alarmInnerSirenDelay").val*1000);
                        }  
                    }); 
                    

                    @ahnungsbefreit Danke für deine Unterstützung

                    1 Reply Last reply
                    0

                    Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                    Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                    With your input, this post could be even better 💗

                    Register Login
                    Reply
                    • Reply as topic
                    Log in to reply
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    285

                    Online

                    32.8k

                    Users

                    82.8k

                    Topics

                    1.3m

                    Posts
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                    ioBroker Community 2014-2025
                    logo
                    • Login

                    • Don't have an account? Register

                    • Login or register to search.
                    • First post
                      Last post
                    0
                    • Home
                    • Recent
                    • Tags
                    • Unread 0
                    • Categories
                    • Unreplied
                    • Popular
                    • GitHub
                    • Docu
                    • Hilfe