Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. RF Lichtschalter per Bewegungsmelder und Broadlink schalten

    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

    RF Lichtschalter per Bewegungsmelder und Broadlink schalten

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      michihorn last edited by

      Hallo ich versuche einen RF-Lichtschalter mittels Homematic Bewegungsmeldung und Broadlink einzuschalten, dass klappt auch, dann soll nach 10 Minuten der Schalter wieder ausgeschaltet werden, der Schalter wird auch wieder ausgeschaltet, aber früher als 10 Minuten. Anbei mein Code,

      createState('Buero', {name: 'Buero'}); 
      createState('Buero_Status', false, {name: 'Buero_Status'}); 
      
      var idBewegung = "hm-rpc.0.KEQ0972283.1.MOTION";
       idStatusBuero = "javascript.0.Buero";
      
      // Bewegungssensor abfragen und Statusvariable verzögert zurücksetzen
      on( {
          id: idBewegung,
          val: true               // Bewegung festgestellt
      }, function (obj) {
         setState(idStatusBuero, true); // Statusvariable auf true
         setState("broadlink.0.learnedSignals.CODE_b26424001106050b060506050c0b06050b0b0b0b07050b0b06050b060606060b070506060605060600000000"/*Buero*/, true); 
         // Verzögerung 10 Minuten - dann wieder auf false
          log('Bewegungsmelder_Büro - 10 Min Timer läuft','info');
      
          setTimeout(function () {
               setState(idStatusBuero, false);
              //setState("broadlink.0.learnedSignals.CODE_b26424001106050b060506050c0b06050b0b0b0b07050b0b06050b060606060b070506060605060600000000"/*Buero*/, false); 
              setStateDelayed("broadlink.0.learnedSignals.CODE_b26424001106050b060506050c0b06050b0b0b0b07050b0b06050b060606060b070506060605060600000000"/*Büro*/,  600000, true);
              log('Bewegungsmelder_Büro <false> - Timer abgelaufen', 'info');
          }, 600000);
      });</false>
      

      Gruß Michael

      1 Reply Last reply Reply Quote 0
      • M
        michihorn last edited by

        Ich habe nun mal den Bewegungsmelder in der CCU auf "Wahl des Sendeabstandes" auf klassisch eingestellt.

        Das klappt nun.

        Ein Frage hätte ich noch, wie kann ich es per Script anstellen das: Falls der Bewegungsmelder keine Änderung für 10 Minuten erfasst, soll eine Variable auf True gesetzt werden

        Gruß

        Michael

        1 Reply Last reply Reply Quote 0
        • T
          tempestas last edited by

          So? weiß nicht, ob das so geht mit dem setTimeout direkt

          
          on({id: idBewegung, change: 'any'}, setTimeout(function (obj) {
          
          	if(obj.oldState.val === obj.State.val) setState(idVariable, true) else setState(idVariable, false)  ; 
          	}, 600000);
          });
          
          

          Idee: wenn der BWM eine Ändeurng meldet, testest du 10 Minuten später, ob der Wert immer noch auf dem gleichen Wert steht allerdings bin ich mir nicht sicher, ob das mit "true" funktioniert. Die BWM schalten ja meist "motion detected" nach einiger Zeit weider auf false, und falls sich dann jemand bewegt gleich wieder auf true, oder?

          1 Reply Last reply Reply Quote 0
          • M
            michihorn last edited by

            Guten Tag

            der BWM geht nach der Bewegungserfassung wieder auf false.

            In dem Moment soll ein Timer starten, sollte der BWM wieder Bewegung feststellen soll der Timer gestoppt werden. Erst wenn der Timer 10 Minuten ohne Unterbrechung läuft soll eine Variable auf True gesetzt werden.

            Leider sind meine Script Fähigkeiten sehr begrenzt, daher benötige ich Unterstützung

            Gruß

            Michael

            1 Reply Last reply Reply Quote 0
            • T
              tempestas last edited by

              so?

              var timer = null;
              
              on({id: idBewegung, change: 'ne'}, function (obj) {
                  if(!obj){
                            timer = setTimeout(function() {                         
                                 if(obj.oldState.val === obj.State.val) {setState(idVariable, true); }
                                      else {setState(idVariable, false); }  
                                 timer = null;
                     }, 600000);
              } else if(timer) {
                      cleartimeout(timer);
                      timer = null
              }
              });
              
              1 Reply Last reply Reply Quote 0
              • M
                michihorn last edited by

                @tempestas:

                so?

                var timer = null;
                
                on({id: idBewegung, change: 'ne'}, function (obj) {
                    if(!obj){
                              timer = setTimeout(function() {                         
                                   if(obj.oldState.val === obj.State.val) {setState(idVariable, true); }
                                        else {setState(idVariable, false); }  
                                   timer = null;
                       }, 600000);
                } else if(timer) {
                        cleartimeout(timer);
                        timer = null
                }
                });
                ```` `  Dankeschön
                

                Gesendet von meinem RNE-L21 mit Tapatalk

                1 Reply Last reply Reply Quote 0
                • T
                  tempestas last edited by

                  probiers erstmal aus, bin nur Laie 🙂

                  1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 last edited by

                    @michihorn:

                    der BWM geht nach der Bewegungserfassung wieder auf false.

                    In dem Moment soll ein Timer starten, sollte der BWM wieder Bewegung feststellen soll der Timer gestoppt werden. Erst wenn der Timer 10 Minuten ohne Unterbrechung läuft soll eine Variable auf True gesetzt werden. `

                    var timer = null;
                    
                    on(idBewegung, function (obj) {
                       if(obj.state.val) {
                          clearTimeout(timer);
                          setState(idVariable, false);
                       } else {
                          timer = setTimeout(function() {                         
                             setState(idVariable, true);
                          }, 600000);
                       } 
                    });
                    
                    1 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 last edited by

                      @tempestas

                          if(!obj){
                      

                      –>

                          if(!obj.state.val){
                      

                      und Groß-/Kleinschreibung beachten !

                      obj.State.val –> __obj.state.va__l oder obj.newState.val

                      1 Reply Last reply Reply Quote 0
                      • M
                        michihorn last edited by

                        @paul53:

                        @michihorn:

                        der BWM geht nach der Bewegungserfassung wieder auf false.

                        In dem Moment soll ein Timer starten, sollte der BWM wieder Bewegung feststellen soll der Timer gestoppt werden. Erst wenn der Timer 10 Minuten ohne Unterbrechung läuft soll eine Variable auf True gesetzt werden. `

                        var timer = null;
                        
                        on(idBewegung, function (obj) {
                           if(obj.state.val) {
                              clearTimeout(timer);
                              setState(idVariable, false);
                           } else {
                              timer = setTimeout(function() {                         
                                 setState(idVariable, true);
                              }, 600000);
                           } 
                        });
                        ```` `  
                        

                        Hallo

                        Ich möchte gerne den Status vom "timer" in den Objekten sehen können.

                        Gruß Michael

                        1 Reply Last reply Reply Quote 0
                        • paul53
                          paul53 last edited by

                          @michihorn:

                          Ich möchte gerne den Status vom "timer" in den Objekten sehen können. `
                          Was erwartest Du da ?

                          Timer-Objekte lassen sich nicht als normale Objekte darstellen.

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          872
                          Online

                          31.9k
                          Users

                          80.3k
                          Topics

                          1.3m
                          Posts

                          3
                          11
                          660
                          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