OH3: Licht automatisch auscchaltem wen 30 Minuten keine Bewegung im Raum

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
mail@jpk.ch
Beiträge: 5
Registriert: 16. Mär 2022 22:20
Answers: 0

OH3: Licht automatisch auscchaltem wen 30 Minuten keine Bewegung im Raum

Beitrag von mail@jpk.ch »

Ich bin noch neu mit OH3 und tue mich ein wenig schwer, da Javascrypt nicht gerade zu meinen Lieblingssprachen gehört ;-).

Ich habe in einem Raum

- eine Gruppe von Lichtern
- einen Hue Motion Sensor
- einen Hue Switch
- einen Dummy-Schalter "L_manual"
- einen Dummy-Schalter "L_status"

Licht ein- und ausschalten von Hand (manuell) funktioniert. Das Licht geht bei Bewegung auch an. Aber automatische Ausschalten kriege ich nicht hin.

Ich möchte, dass das Licht nach 3 Minuten löscht, wenn es durch eine Bewegung eingeschaltet wurde. Wenn das Licht mit dem Schalter betätigt wurde, möchte ich, dass es nach 30 Minuten selber ausschaltet. Darum habe ich die Dummy-Schalter eingerichtet.

Ich denke, am besten würde man das mit einer Javascrypt Rule machen. Also wenn der Dummy-Schalter "L_manual" ON ist, dann soll nach 30 Minuten ausgeschaltet werden und sonst nach 3 Minuten. Der MS liefert ja einen DateTime-Point (Letzte Aktualisierung) im Format "2022-03-16 20:47:49" und das sollte man nun mit der aktuellen Zeit vergleichen und wenn die Differenz grösser ist wie 180 Sekunden. dann soll es die Rule "Licht ausschalten" aufrufen.

Wie müsste da ein entsprechendes JavaScript aussehen?

Ganz vielen Dank für die Unterstützung.
jpk

Benutzeravatar
udo1toni
Beiträge: 15249
Registriert: 11. Apr 2018 18:05
Answers: 243
Wohnort: Darmstadt

Re: OH3: Licht automatisch auscchaltem wen 30 Minuten keine Bewegung im Raum

Beitrag von udo1toni »

Willkommen im Forum!

Du denkst zu kompliziert :)

Aber zunächst ist die Frage, liefert der Motion Sensor wiederholt ON-Updates, oder sendet er gezielt ein OFF-Update, wenn er eine gewisse Zeit keine Bewegung erkennt? Davon hängt ab, wie man am günstigsten programmiert.
Was Du aber so oder so vermeiden willst (unter allen Umständen!) ist das jonglieren mit Datums- und Zeitangaben. Ja, das geht, aber es eine verfluchte Hölle, das korrekt umzusetzen.

Hier geht es ja nur um zwei voneinander unabhängige Timer. Timer eins soll fix nach 30 Minuten ablaufen, wenn der Schalter betätigt wurde. Ich nehme an, der Schalter ist mit einem Switch Item verlinkt? Nennen wir es der Einfachheit halber HUE_Switch. Editiere dieses Item und konfiguriere in den Metadaten einen Expire Timer. Den setzt Du auf Command OFF und 30 Minuten. In der Folge wird das Item, nachdem es vom Schalter den Befehl ON empfangen hat, selbst den Befehl OFF senden, und zwar nach 30 Minuten (genauer: 30 Minuten nach dem letzten ON-Befehl). Man kann auch manuell (mit dem Schalter) ein OFF senden, dann wird das Item nach 30 Minuten nichts tun (es hat ja bereits den Zustand OFF).
Dieses Item verlinkst Du mit der Gruppe.
Beim Bewegungsmelder kommt es drauf an, wie er sich verhält. Da er aber, solange der Schalter noch auf ON steht, keine Befehle an die Lampen senden darf, musst Du die Kopplung über eine Rule erledigen.
Am einfachsten über die UI... Trigger ist das Item, welches mit dem Motion Sensor verknüpft ist. Das Item bekommt ebenfalls einen Expire Timer, der in diesem Fall auf drei Minuten konfiguriert ist. Zusätzlich trägst Du bei "but only if" noch ein, dass das Item HUE_Switch auf OFF stehen muss.
Sollte der Motion Sensor selbst auch OFF senden, wenn eine Zeit keine Bewegung erkannt wurde, muss man ein Proxy Item für den Timer verwenden und dieses über eine Rule einschalten, wenn Bewegung erkannt wurde. Sollte der Motion Sensor nur dann ein ON senden, wenn er vorher ein OFF gesendet hat, muss man das Problem anders lösen. der Drei-Minuten-Timer darf dann nur vom OFF des Bewegungsmelders gestartet werden, entsprechend wird man das Über eine Rule erledigen müssen.

Das Ganze geht auch über die DSL. Wenn Du nicht partout JavaScript verwenden willst (und ich lese aus Deinem Posting, dass Du eigentlich keinen Wert darauf legst) dann lass es bleiben. Es gibt keinen Grund für JavaScript, außer, man ist Javascript Fan.
Du kannst auch über die UI sehr bequem Blockly Rules erstellen, welche dann tatsächlich auch JavaScript als Output generieren (bzw. eine Unterart, ECMA). Aber zumindest musst Du Dich dann nicht mit der Sprache rumschlagen.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

mail@jpk.ch
Beiträge: 5
Registriert: 16. Mär 2022 22:20
Answers: 0

Re: OH3: Licht automatisch auscchaltem wen 30 Minuten keine Bewegung im Raum

Beitrag von mail@jpk.ch »

udo1toni hat geschrieben: 17. Mär 2022 00:48 Aber zunächst ist die Frage, liefert der Motion Sensor wiederholt ON-Updates, oder sendet er gezielt ein OFF-Update, wenn er eine gewisse Zeit keine Bewegung erkennt? Davon hängt ab, wie man am günstigsten programmiert.
Danke vielmals für Deine ausführliche Antwort. Und ja, der Motion Sensor von Philips Hue sendet auch wieder ein OFF, nach einigen Sekunden und erst dann wieder ein ON, wenn eine Bewegung registriert wird.

Das mit dem Timer könnte ein Ansatz sein, ich muss das mal studieren, wie das geht.
Liebe Grüsse
Jean-Pierre

Antworten