Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Nach 2h keine Bewegung im Raum schalten

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Nach 2h keine Bewegung im Raum schalten

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

      Hallo zusammen,

      Ich suche wieder ewig herum, ich frag nun einfach, vielleicht kann ja jemand schnell helfen.

      Aufgabenstellung ist, dass nach einer Zeit, ca.2h das Licht in einem Raum ausgeschaltet werden soll wenn keine Bewegung über den Bewegungsmelder festgestellt wurde. Wie mache ich das in JavaScript?

      Wie kann ich den Zeitpunkt des Schaltens bzw. der Zeitpunkt der letzten Bewegung in eine Variable schreiben?

      Gruss

      Biboxx

      1 Reply Last reply Reply Quote 0
      • Dutchman
        Dutchman Developer Most Active Administrators last edited by

        @Biboxx:

        Hallo zusammen,

        Ich suche wieder ewig herum, ich frag nun einfach, vielleicht kann ja jemand schnell helfen.

        Aufgabenstellung ist, dass nach einer Zeit, ca.2h das Licht in einem Raum ausgeschaltet werden soll wenn keine Bewegung über den Bewegungsmelder festgestellt wurde. Wie mache ich das in JavaScript?

        Wie kann ich den Zeitpunkt des Schaltens bzw. der Zeitpunkt der letzten Bewegung in eine Variable schreiben?

        Gruss

        Biboxx `

        bin gerade am uerblegen wie die beste logic dafuer waere, ist ein timer mit "reset" wen bewegung nicht sinvoller ?

        Ansonsten musst du ja alle x sec oder min die variable abfragen und vergleichen (oder mach ich jetzt wieder schwachsinn)

        So mal auf die schnelle…

        wen bewegung = reset timer und setzte variable, nach 2 stunden variable zuruck. Wen wieder bewegung muesster der timer hiermit eine reset bekommen:

        on({id: 'default', change: "ne"}, function (obj) {
          var value = obj.state.val;
          var oldValue = obj.oldState.val;
          (function () {if () {clearInterval();  = null;}})();
          Bewegung = true;
          timeout = setTimeout(function () {
            Bewegung = false;
          }, 720000);
        });
        

        Ist aus dem bauch raus geschrieben…. (ungetestet)

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

          Vorschlag (nicht getestet):

          var timer = null;
          
          on({id: 'idBewegung', val: true}, function () {
            setState(idLicht, true);
            if(timer) clearTimeout(timer);
            timer = setTimeout(function () {
              setState(idLicht, false);
            }, 7200000);
          });
          
          1 Reply Last reply Reply Quote 0
          • P
            pix last edited by

            Hallo,

            ich denke, Paul53's Lösung funktioniert. Ich nutze so etwas für die Fenster. Wenn sie geöffnet werden, bekomme ich nach X Zeit eine Meldung, wenn sie nicht vorher wieder geschlossen wurden (dann clearTimout).

            Wenn es sich um einen Homematic-Aktor handelt, kannst du aber einfach beim Setzen die Einschaltdauer mitgeben und das den Aktor machen lassen.

            var idLicht = 'hm-rpc.0.1234567:1.STATE';
            var idLichtDauer = 'hm-rpc.0.1234567:1.ON_TIME';
            on({id: 'idBewegung', val: true}, function () {
                setState(idLichtDauer, 60 * 60 * 2);
                setState(idLicht, true);
            }
            
            ````Es gilt, wie in der HM-WebUI, erst die Einschaltdauer setzen, dann einschalten. Eine Szene im Scenes-Adapter eignet sich auch sehr gut dafür. So kann man auch noch eine Rampenzeit setzen (Langsam ausdimmen zum Beispiel).
            
            Wenn es kein Homematic Aktor ist, bleibe lieber bei Pauls Variante. :P
            
            Gruß
            
            Pix
            1 Reply Last reply Reply Quote 0
            • A
              andyb last edited by

              Der Homematic Bewegungsmelder hat einen timestamp für motion.

              Kann man den nicht abfragen?

              Wäre auch im Vis schön.

              <channel name="BewegungsmelderG:1" ise_id="xxxx" visible="true" operate="true"><datapoint name="BidCos-RF.xxxx:1.BRIGHTNESS" type="BRIGHTNESS" ise_id="3796" value="65" valuetype="16" valueunit/timestamp="1487051307" operations="5"><datapoint name="BidCos-RF.xxxx:1.MOTION" type="MOTION" ise_id="3798" value="false" valuetype="2" valueunit/timestamp="1487049923" operations="5"></datapoint></datapoint></channel>

              1 Reply Last reply Reply Quote 0
              • bahnuhr
                bahnuhr Forum Testing Most Active last edited by

                @paul53:

                Vorschlag (nicht getestet):

                var timer = null;
                
                on({id: 'idBewegung', val: true}, function () {
                  setState(idLicht, true);
                  if(timer) clearTimeout(timer);
                  timer = setTimeout(function () {
                    setState(idLicht, false);
                  }, 7200000);
                });
                ```` `  
                

                Mal ne Nachfrage zu pauls53 Vorschlag.

                1. wenn on Bewegung ist true, dann

                • mache Licht an

                • wenn noch ein Timer vorhanden, dann clear und setze einen neuen Timer

                Hab ich verstanden soweit.

                Müsste/sollte man nicht zusätzlich noch.

                2. wenn on Bewegung ist false, dann

                • setze Timer clear

                Oder sagt man sich, wenn das Licht schon aus ist und der Timer kommt dann und macht das Licht nochmal aus, dann ist dies ja nicht so schlimm, man hat halt nur einen sendebefehl zu viel.

                Richtig so?

                Mit freundlichen Grüßen

                Dieter

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

                  Hallo

                  Genau für dieses Problem gibt es das "Badewannen-Prinzip"

                  http://forum.iobroker.net/viewtopic.php … 654#p45130

                  Grüße

                  1 Reply Last reply Reply Quote 0
                  • Homoran
                    Homoran Global Moderator Administrators last edited by

                    @Biboxx:

                    das Licht in einem Raum ausgeschaltet werden soll wenn keine Bewegung über den Bewegungsmelder festgestellt wurde. `

                    Aber wehe du sitzst ganz ruhig vor dem Fernseher :lol:

                    Das war dann der Punkt wo ich mir den wiffi gekauft habe. Der lauscht auch noch, ob der TV läuft.

                    Gruß

                    Rainer

                    1 Reply Last reply Reply Quote 0
                    • htrecksler
                      htrecksler Forum Testing last edited by

                      var idFensterAuf = "hm-rpc.0.NEQ11000000.1.STATE";
                      var timer    = null;
                      subscribe(idFensterAuf, function (obj) {
                         if (obj.newState.val) {
                            // Starte timer für 2 Minuten
                            if (!timer) {
                               timer = setTimeout(function () {
                                  timer = null;
                                  log("Fenster im Bad länger als 2 Minuten auf");
                               }, 120000);
                            }
                         } else {
                            // Fenster zugemacht. Falls timer läuft = stopp
                            log('Fenster im Bad geschlossen!');
                            if (timer) {
                               clearTimeout(timer);
                               timer = null;
                            }
                         }
                      
                      });
                      
                      

                      so funktioniert es bei mir mit einem Fenster. (Ist nur für einen Test auf 2 Minuten gesetzt :-))

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

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      741
                      Online

                      31.7k
                      Users

                      79.8k
                      Topics

                      1.3m
                      Posts

                      9
                      9
                      1267
                      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