Website-Icon Dein Smart Home Blog

Kleine LUA Scripte Teil 5: Bewegung im Raum erkennen

Pünktlich zum Sonntag gibt es ein neues Skript unserer kleinen LUA-Skript Serie. Diesmal haben wir ein kleines Skript programmiert, welches mit einem oder mehreren MotionSensoren die Bewegung im Raum erkennt.
Mit diesem Skript könnt Ihr bei Erkennung von Bewegung unterschiedliche Aktionen durchführen. So ist es zum Beispiel möglich, eine Anwesenheitsvariable für jeden Raum zu setzen oder das Skript als vereinfachte Lichtsteuerung (an/aus; eine umfangreiche Lichtsteuerung haben wir euch bereits in einem anderen Artikel vorgestellt) zu nutzen. An dem Skript müsst Ihr noch zwei, drei Änderungen vornehmen, so dass das Skript auch bei euch läuft.

Vorzunehmende Änderungen im Skript

In den ersten Zeilen müssen eure triggernden MotionSensoren, also die Geräte, welche die Szene starten sollen, eingetragen werden. In meinem Fall wären dies die IDs 43 und 76. Diese müssen dann auch parallel in das Array "sensors" mit eingetragen werden. Weitere IDs können einfach, mit einem Komma getrennt, hinten dran gehängt werden.

Das Skript richtet sich grundsätzlich nach dem Parameter 6 der MotionSensoren. Dort kann die Zeit eingestellt werden, nach welcher der MotionSensor dem HomeCenter den Status "Keine Bewegung mehr erkannt" zurück meldet. Sollte in der Zwischenzeit wieder Bewegung erkannt werden, dann wird die Zeit wieder zurückgesetzt. In meiner Küche habe ich zwei MotionSensoren mit je 120 Sekunden Verzögerung im Einsatz und hab damit gute Erfahrungen gemacht.

Parameter 6 beim Fibaro MotionSensor

Es gibt in dem Skript auch die Möglichkeit die Zeit des Parameters 6 zu verlängern. Dazu könnt Ihr euch mit der Variablen "delay" eine zusätzliche Zeit setzen, nach der das Skript die Aktionen ausführen soll. Hier könnt Ihr einfach zum Beispiel 180 Sekunden eintragen, wenn nach der Meldung von "Keine Bewegung mehr erkannt" noch drei Minuten gewartet werden soll.

Eure Aktionen, die ausgeführt werden sollen

Kommen wir zu den Aktionen, welche Ihr ausführen könnt, wenn der MotionSensor einen bestimmten Status meldet. Hier könnt Ihr in der Funktion actionsMotion() die Aktionen eintragen, welche bei euch ausgeführt werden sollen, wenn eine Bewegung erkannt wird. Als Beispiel könntet Ihr hier Licht einschalten, Radio anschalten oder einfach eine globale Variable auf "true" setzen. So könntet Ihr erkennen, in welchen Räumen grad Bewegung ist.

Die Funktion actionsNoMotion() führt Befehle aus, wenn eure MotionSensoren den Status "sicher" an das Fibaro HomeCenter 2 zurückmelden. Hier könnte man dann das Licht wieder ausschalten und so weiter.

Und hier das ganze Skript:

Die Anzahl der Instanzen solltet Ihr bei der Szene auf 2 oder 3 erhöhen, sofern Ihr mehrere Motions nutzen möchtet. Dies hängt mit der Anzahl der triggernden Geräten zusammen. Es könnte ja sein, dass ein MotionSensor ausgelöst und bereits die Szene gestartet hat, während ein Anderer noch nicht ausgelöst wurde. Sollte dieser irgendwann auch ausgelöst werden, dann würde die Szene ein zweites Mal gestartet werden. In dem Skript wird zwar mit dem Code

ein mehrfaches Ausführen der Szene verhindert, aber Ihr würdet "Too many instances"-Meldungen im Fibaro HomeCenter angezeigt bekommen.

Einstellen der Instanzen

Und zum Ende gibt es wieder ein Icon für die Szene. Ihr könnt ja mal einen Kommentar hinterlassen, was Ihr für Aktionen mit der Szene schaltet :) Viel Spass beim Umsetzen.

Icon für die Szene

Die mobile Version verlassen