Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [gelöst] Schalten verzögert und mit bestimmter Dauer

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

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

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      stimezo Forum Testing last edited by 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 1 Reply Last reply Reply Quote 0
      • A
        Ahnungsbefreit @stimezo last edited by

        @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 1 Reply Last reply Reply Quote 0
        • S
          stimezo Forum Testing @Ahnungsbefreit last edited by

          @ahnungsbefreit

          Danke, hast Du eine Alternative?

          A 1 Reply Last reply Reply Quote 0
          • A
            Ahnungsbefreit @stimezo last edited by

            @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 2 Replies Last reply Reply Quote 0
            • S
              stimezo Forum Testing @Ahnungsbefreit last edited by

              @ahnungsbefreit
              Danke, das Probiere ich.

              1 Reply Last reply Reply Quote 0
              • S
                stimezo Forum Testing @Ahnungsbefreit last edited by

                @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 Reply Quote 0
                • A
                  Ahnungsbefreit @stimezo last edited by

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

                  S 1 Reply Last reply Reply Quote 0
                  • S
                    stimezo Forum Testing @Ahnungsbefreit last edited by

                    @ahnungsbefreit

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

                    S 1 Reply Last reply Reply Quote 0
                    • S
                      stimezo Forum Testing @stimezo last edited by

                      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 Reply Quote 0
                      • First post
                        Last post

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      403
                      Online

                      31.9k
                      Users

                      80.2k
                      Topics

                      1.3m
                      Posts

                      security
                      2
                      9
                      291
                      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