NEWS
Nach 2h keine Bewegung im Raum schalten
-
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
-
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)
-
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); });
-
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
-
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>
-
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
-
-
Hallo
Genau für dieses Problem gibt es das "Badewannen-Prinzip"
http://forum.iobroker.net/viewtopic.php … 654#p45130
Grüße
-
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
-
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 :-))