NEWS
RF Lichtschalter per Bewegungsmelder und Broadlink schalten
-
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
-
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
-
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?
-
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
-
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 } });
-
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
-
probiers erstmal aus, bin nur Laie
-
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); } });
-
if(!obj){
–>
if(!obj.state.val){
und Groß-/Kleinschreibung beachten !
obj.State.val –> __obj.state.va__l oder obj.newState.val
-
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
-
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.