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. JavaScript
  5. [gelöst] Schalten verzögert und mit bestimmter Dauer

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

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

Geplant Angeheftet Gesperrt Verschoben JavaScript
security
9 Beiträge 2 Kommentatoren 456 Aufrufe 2 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
    stimezo
    Forum Testing
    schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
    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
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      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
        schrieb am zuletzt editiert von
        #3

        @ahnungsbefreit

        Danke, hast Du eine Alternative?

        A 1 Antwort Letzte Antwort
        0
        • S stimezo

          @ahnungsbefreit

          Danke, hast Du eine Alternative?

          A Offline
          A Offline
          Ahnungsbefreit
          schrieb am zuletzt editiert von
          #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 Antworten Letzte Antwort
          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
            schrieb am zuletzt editiert von
            #5

            @ahnungsbefreit
            Danke, das Probiere ich.

            1 Antwort Letzte Antwort
            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
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              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
                schrieb am zuletzt editiert von
                #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 Antwort Letzte Antwort
                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
                  schrieb am zuletzt editiert von
                  #8

                  @ahnungsbefreit

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

                  S 1 Antwort Letzte Antwort
                  0
                  • S stimezo

                    @ahnungsbefreit

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

                    S Offline
                    S Offline
                    stimezo
                    Forum Testing
                    schrieb am zuletzt editiert von
                    #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 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

                    410

                    Online

                    32.6k

                    Benutzer

                    82.2k

                    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