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. [gelöst] Verzögert ausschalten "Timeout" dauert zu lange

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    324

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.5k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.5k

[gelöst] Verzögert ausschalten "Timeout" dauert zu lange

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
20 Beiträge 5 Kommentatoren 2.9k Aufrufe
  • Ä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.
  • paul53P Offline
    paul53P Offline
    paul53
    schrieb am zuletzt editiert von
    #11

    @Mr. Burns:

    Der Bewegungsmelder soll das Licht einschalten. Wenn das Licht aber schon über den Taster eingeschaltet wurde, `
    Nach dieser Aussage erwarte ich einen Bewegungsmelder (zum Testen die Taste einer FB) und einen Taster zu Schalten des Lichts.

    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

    1 Antwort Letzte Antwort
    0
    • Mr. BurnsM Offline
      Mr. BurnsM Offline
      Mr. Burns
      schrieb am zuletzt editiert von
      #12

      sollte der Lichtschalter (bzw. die Lichtschalter) in das Script?

      Hab das Licht zum testen über die CCU direkt geschaltet (bzw. über die app).

      1 Antwort Letzte Antwort
      0
      • paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von
        #13

        @Mr. Burns:

        Hab das Licht zum testen über die CCU direkt geschaltet (bzw. über die app). `
        Dann muss man den Aktor auswerten.
        @Mr. Burns:

        sollte der Lichtschalter (bzw. die Lichtschalter) in das Script? `
        Nicht unbedingt. Handelt es sich um eine (mehrere) Direktverknüpfung(en) ?

        Vielleicht geht es so:

        var idSensor = "hm-rpc.0.FEQ00XXXXX.1.PRESS_SHORT";
        var idAktor = "hm-rpc.1.JEQ04XXXXX.16.STATE"/*Licht Deckenbeleuchtung Wohnzimmer.STATE*/;
        
        var stateSensor = false;
        var stateAktor = getState(idAktor).val;
        var timer = null;
        
        // Aufruf der Funktion bei Bewegung
        on({id: idSensor, val: true, ack: true}, function() {
            if (!stateAktor || stateSensor) {   // Licht ist aus oder wurde durch BWM eingeschaltet
                stateSensor = true;
                if(!stateAktor) setState(idAktor, true); // Schalte Licht sofort ein, wenn getriggert wurde
                if(timer) clearTimeout(timer);
                timer = setTimeout(function() {
                    timer = null;
                    setState(idAktor, false); // Schalte Licht verzögert aus
                }, 1 * 15 * 1000); // nach 5 * 60s * 1000ms, also 5 Minuten
            }
        });
        
        on({id: idAktor, ack: true}, function(dp) {
            stateAktor = dp.state.val;
            if(!stateAktor) {  // Licht aus
                stateSensor = false;
                if(timer) clearTimeout(timer);
                timer = null;
            }        
        });
        

        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

        1 Antwort Letzte Antwort
        0
        • Mr. BurnsM Offline
          Mr. BurnsM Offline
          Mr. Burns
          schrieb am zuletzt editiert von
          #14

          Es funktioniert genauso wie es mir vorgestellt habe!

          Super! Vielen Dank.

          Ich bin noch dabei die Logik zu verstehen…:-D

          Gruß

          1 Antwort Letzte Antwort
          0
          • paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von
            #15

            @Mr. Burns:

            Es funktioniert genauso wie es mir vorgestellt habe! `
            Das freut mich. Dann markiere bitte noch das Thema als gelöst (im ersten Beitrag).

            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

            1 Antwort Letzte Antwort
            0
            • Mr. BurnsM Offline
              Mr. BurnsM Offline
              Mr. Burns
              schrieb am zuletzt editiert von
              #16

              Klar. Für alle die sowas oder so ähnlich nachbauen:

              Das Licht (in der Küche) soll Abend (wenn es dämmert) einschalten wenn jemand den Raum betritt. Wurde das Licht bereits manuell eingeschaltet, soll es nicht über die Zeitverzögerung wieder ausgeschaltet werden:

              // Datenpunkt-ID
              var idSensor = "hm-rpc.0.FEQ00XXXXX.1.PRESS_SHORT";
              var idAktor = "hm-rpc.1.JEQ04XXXXX.16.STATE"/*Licht Deckenbeleuchtung Wohnzimmer.STATE*/;
              var idLux = "hm-rega.0.8681"/*homeduino_a_lux*/;
              
              var stateSensor = false;
              var stateAktor = getState(idAktor).val;
              var stateLux = getState(idLux).val;
              var timer = null;
              
              // Aufruf der Funktion bei Bewegung
              on({id: idSensor, val: true, ack: true}, function() {                    // Trigger 
                  if ((stateLux <= 500) && (!stateAktor || stateSensor)) {       // Licht aus oder Merker BWM
                      stateSensor = true;                                                        // Merker BWM
                      if(!stateAktor) setState(idAktor, true);                             // Schalte Licht sofort ein, wenn getriggert wurde
                      if(timer) clearTimeout(timer);
                      timer = setTimeout(function() {
                          timer = null;
                          setState(idAktor, false);                                                // Schalte Licht verzögert aus
                      }, 1 * 15 * 1000);                                                             // nach 5 * 60s * 1000ms, also 5 Minuten
                  }
              });
              
              on({id: idAktor, ack: true}, function(dp) {                                   // Trigger
                  stateAktor = dp.state.val;                                                    // Merker Aktor
                  if(!stateAktor) {                                                                    // Wenn Merker Aktor aus
                      stateSensor = false;                                                        // Setze Merker BWM aus
                      if(timer) clearTimeout(timer);                                          // ???
                      timer = null;                                                                   // ???
                  }        
              });
              
              1 Antwort Letzte Antwort
              0
              • paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von
                #17
                        if(timer) clearTimeout(timer);        // Abbruch Timeout (Licht war per BWM ein und ist manuell aus)
                        timer = null;                         // für if(timer)
                
                

                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

                1 Antwort Letzte Antwort
                0
                • paul53P Offline
                  paul53P Offline
                  paul53
                  schrieb am zuletzt editiert von
                  #18

                  @Mr. Burns:

                  Das Licht (in der Küche) soll Abend (wenn es dämmert) einschalten `
                  Es fehlt noch die Aktualisierung der Skriptvariable stateLux (wird jetzt nur bei Skriptstart gesetzt).

                  on(idLux, function(dp) {
                      stateLux = dp.state.val;
                  });
                  

                  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

                  1 Antwort Letzte Antwort
                  0
                  • Mr. BurnsM Offline
                    Mr. BurnsM Offline
                    Mr. Burns
                    schrieb am zuletzt editiert von
                    #19

                    Du hast natürlich vollkommen recht. Zu meiner Verteidigung: Ich kann in Wirklichkeit gar nicht scripten…ich mach mehr in FUP Programmierung (S7/TIA)...Ich versteh auch nicht wie sich da "Normalos" zurecht finden. Den unteren Teil deines Scripts hab ich noch nicht richtig verstanden. Du setzt den Merker zurück wenn das Licht ausgeht
                    ` > if(!stateAktor) { // Wenn Merker Aktor aus

                    stateSensor = false; // Setze Merker BWM aus , aber eigentlich geht er ja nur in das Script bei einer positiven Flanke > on({id: idAktor, ack: true}, function(dp) { // Trigger `

                    Ich will nur Prüfen ob es schon Dunkel genug ist wenn der Bewegungsmelder ausgelöst wird…

                    Könnte doch so funktionieren:

                    // Datenpunkt-ID
                    var idSensor = "hm-rpc.0.FEQ00XXXXX.1.PRESS_SHORT";
                    var idAktor = "hm-rpc.1.JEQ04XXXXX.16.STATE"/*Licht Deckenbeleuchtung Wohnzimmer.STATE*/;
                    var idLux = "hm-rega.0.8681"/*homeduino_a_lux*/;
                    
                    var stateSensor = false;
                    var stateAktor = getState(idAktor).val;
                    var stateLux = getState(idLux).val;
                    var timer = null;
                    
                    // Aufruf der Funktion bei Bewegung
                    on({id: idSensor, val: true, ack: true}, function() {       // Trigger 
                    stateLux = getState(idLux).val;
                        if ((stateLux <= 500) && (!stateAktor || stateSensor)) { // Licht aus oder Merker BWM
                       // log (stateLux);
                            stateSensor = true;                                 // Merker BWM
                            if(!stateAktor) setState(idAktor, true);            // Schalte Licht sofort ein, wenn getriggert wurde
                            if(timer) clearTimeout(timer);
                            timer = setTimeout(function() {
                                timer = null;
                                setState(idAktor, false);                       // Schalte Licht verzögert aus
                            }, 1 * 15 * 1000);                                  // nach 5 * 60s * 1000ms, also 5 Minuten
                        }
                    });
                    
                    on({id: idAktor, ack: true}, function(dp) {                 // Trigger
                        stateAktor = dp.state.val;                              // Merker Aktor
                        if(!stateAktor) {                                       // Wenn Merker Aktor aus
                            stateSensor = false;                                // Setze Merker BWM aus
                            if(timer) clearTimeout(timer);                      // ???
                            timer = null;                                       // ???
                        }        
                    });
                    

                    Edit:

                    Hab gerade noch was rumprobiert. Bedeutet dies
                    > ack: true
                    gar nicht bei Aktualisierung Wert "True" also Positive Flanke? Er triggert die Funktion bei jedem Flankenwechsel. :o

                    1 Antwort Letzte Antwort
                    0
                    • paul53P Offline
                      paul53P Offline
                      paul53
                      schrieb am zuletzt editiert von
                      #20

                      @Mr. Burns:

                      Bedeutet dies

                      ack: true

                      gar nicht bei Aktualisierung Wert "True" also Positive Flanke? Er triggert die Funktion bei jedem Flankenwechsel. `
                      Er triggert sogar bei jeder Änderung des Zeitstempels, unter der Bedingung, dass eine Bestätigung (Rückmeldung des Aktors über die Ausführung) erfolgt ist. Sollte nur bei Wert "true" getriggert werden, muss man schreiben val: true. Will man ganz sicher gehen, dass nur bei einer postiven Flanke getriggert wird, dann val: true, oldVal: false oder val: true, change: 'ne'.

                      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

                      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.5k

                      Benutzer

                      81.7k

                      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