NEWS
Probleme mit Skript Licht an nach Erkennung Bewegung
-
Ich habe ein Skript welches bei Erkennung von Bewegungen hier das Licht für 600 Sekunden einschaltet.
Funktionier soweit ganz gut. Doch wenn ich länger im Raum bin uns der Bewegungsmelder erkennt mich immer wider und Motion ist immer true, wird das Lich aber nicht erneut eingeschaltet.
Was ist da falsch in Skript dass dies nur beim Schalten von false auf true reagiert.
Sollte auch reagierten wenn True erneut bestätigt wird und dann Licht erneut mit 600 Sekunden angeht
on('hm-rpc.0.KEQ0236715.1.MOTION', function (obj) { // Bewegung überwachen log("---> Licht - Gallerie - ausgelöst durch Bewegungsmelder............","info") var bewegung = getState('hm-rpc.0.KEQ0236715.1.MOTION'); var helligkeit = getState('hm-rpc.0.KEQ0236715.1.BRIGHTNESS'); if (obj.newState.val === true) { // Bewegung true setState("hm-rpc.0.KEQ0801517.1.ON_TIME"/*LED Galerie ein - aus.ON_TIME*/, 600); // 600s Einschaltdauer setState("hm-rpc.0.KEQ0801517.1.STATE"/*LED Galerie ein - aus.STATE*/, true); // schalte Lampe an log("---> Licht - Gallerie an für 600 Sekunden............" ,"info"); } else { log("---> Licht - Licht zu hell um anzuschalten da Helligkeit: " + helligkeit + " %" ,"info"); } });
-
Hallo Freddy,
dein Subscribe ist die Kurzschreibweise. Lang geschrieben ist das das gleiche:
on({id: 'hm-rpc.0.KEQ0236715.1.MOTION', change: 'ne' }, function (obj) {
Das bedeutet erstmal, dass das Skript nur gestartet wird, wenn der Wert sich ändert. Weiter unten fragst du dann ab, ob der neue Wert true ist (also nach einer Änderung, d.h. er muss vorher false sein). Bei den Variablen helligkeit und bewegung fehlt noch das .val.
Probier mal so:
on({id: 'hm-rpc.0.KEQ0236715.1.MOTION', change: 'any' }, function (obj) { // Bewegung überwachen var bewegung = getState('hm-rpc.0.KEQ0236715.1.MOTION').val; // hier aber auch obj.newState.val var helligkeit = getState('hm-rpc.0.KEQ0236715.1.BRIGHTNESS').val; if (obj.newState.val === true) { // Bewegung true log("---> Licht - Gallerie - ausgelöst durch Bewegungsmelder............","info") if (helligkeit < 50) { // Helligkeitsgrenzwert bei Bedarf ändern setState("hm-rpc.0.KEQ0801517.1.ON_TIME"/*LED Galerie ein - aus.ON_TIME*/, 600); // 600s Einschaltdauer setState("hm-rpc.0.KEQ0801517.1.STATE"/*LED Galerie ein - aus.STATE*/, true); // schalte Lampe an log("---> Licht - Gallerie an für 600 Sekunden............" ,"info"); } else { log("---> Licht - Licht zu hell um anzuschalten da Helligkeit: " + helligkeit + " %" ,"info"); // Helligkeitswert vom Melder sind keine Prozent } } });
Gruß
Pix