Rule | Motion Sensor | Licht einschalten, aber ...
-
- Beiträge: 44
- Registriert: 8. Jan 2022 00:15
Rule | Motion Sensor | Licht einschalten, aber ...
Hallo zusammen.
Ich habe einen Motion Sensor, welcher ON/OFF schaltet.
- ON, wenn sich was bewegt.
- OFF, nach einer bestimmten Zeit.
Ich habe eine Lampe, welche eingeschaltet werden soll, wenn der Motion Sensor anschlägt (ON) und ausgeschaltet werden soll, wenn der Motion keine Bewegung mehr registriert (OFF). Das Ganze soll aber nur passieren, wenn die Lampe aus ist.
Diese Regel habe ich schon erstellt und scheint zu klappen.
Aber ... das automatische Ausschalten soll nur dann erfolgen, wenn die Lampe "vorher" auch ausgeschaltet war. Und genau dafür fehlt mir eine griffige Lösung.
Hat hier jemand eine Idee?
PS: Ich habe OpenHAB 3.2 am Start ...
Ich habe einen Motion Sensor, welcher ON/OFF schaltet.
- ON, wenn sich was bewegt.
- OFF, nach einer bestimmten Zeit.
Ich habe eine Lampe, welche eingeschaltet werden soll, wenn der Motion Sensor anschlägt (ON) und ausgeschaltet werden soll, wenn der Motion keine Bewegung mehr registriert (OFF). Das Ganze soll aber nur passieren, wenn die Lampe aus ist.
Diese Regel habe ich schon erstellt und scheint zu klappen.
Aber ... das automatische Ausschalten soll nur dann erfolgen, wenn die Lampe "vorher" auch ausgeschaltet war. Und genau dafür fehlt mir eine griffige Lösung.
Hat hier jemand eine Idee?
PS: Ich habe OpenHAB 3.2 am Start ...
Nehmen wir an, Du hast die Items Flur_Licht, Flur_Motion und Flur_Motion_Helper:
Falls Du mehrere (voneinander unabhängige) Bewegungsmelder hast, könnte man die Rule auch generalisieren, so dass sie für alle Bewegungsmelder funktioniert.
Gehe zur vollständigen AntwortCode: Alles auswählen
rule "Bewegung Flur"
when
Item Flur_Motion changed or
Item Flur_Licht changed to OFF
then
if(Flur_Motion.state == OFF) {
if(Flur_Licht.state == ON && Flur_Motion_Helper.state == ON) {
Flur_Licht.sendCommand(OFF)
Flur_Motion_Helper.postUpdate(OFF)
}
} else {
if(Flur_Licht.state == OFF ) {
Flur_Licht.sendCommand(ON)
Flur_Motion_Helper.postUpdate(ON)
}
}
if(Flur_Motion.state == OFF && Flur_Licht.state == OFF)
Flur_Motion_Helper.postUpdate(OFF)
end
OpenHAB 3.2 im Docker auf Pi4-4GB
- udo1toni
- Beiträge: 15265
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Rule | Motion Sensor | Licht einschalten, aber ...
Du musst Dir merken, ob das Licht an oder aus war.
Am einfachsten machst Du das mit einem Hilfsitem, z.B. ein Switch Item Licht_Manuell. In Deiner Auto-Rule schaust Du nach, ob dieses Item ON oder OFF ist.
Wenn Du das Licht manuell schaltest, muss eine weitere Rule dieses Item ON oder OFF schalten. Diese Variante berücksichtigt dann auch, dass vielleicht jemand das Licht manuell einschaltet, während es durch Bewegung aktiviert ist.
Alternativ kannst Du das Item auch durch Deine Auto-Rule aktivieren (dann wäre der Name aber eher Licht_Automatik). Beim Ausschalten musst Du dann halt prüfen, ob das Hilfsitem aktiv ist. Und natürlich muss dieses auch mit ausgeschaltet werden.
Das Hilfsitem legst Du einfach über den von Dir bevorzugten Weg als Switch Item an (ob nun per Text oder über die Main UI)

Wenn Du das Licht manuell schaltest, muss eine weitere Rule dieses Item ON oder OFF schalten. Diese Variante berücksichtigt dann auch, dass vielleicht jemand das Licht manuell einschaltet, während es durch Bewegung aktiviert ist.
Alternativ kannst Du das Item auch durch Deine Auto-Rule aktivieren (dann wäre der Name aber eher Licht_Automatik). Beim Ausschalten musst Du dann halt prüfen, ob das Hilfsitem aktiv ist. Und natürlich muss dieses auch mit ausgeschaltet werden.
Das Hilfsitem legst Du einfach über den von Dir bevorzugten Weg als Switch Item an (ob nun per Text oder über die Main UI)
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet
-
- Beiträge: 44
- Registriert: 8. Jan 2022 00:15
Re: Rule | Motion Sensor | Licht einschalten, aber ...
Hi Udo. Ich habe mir gestern Abend nochmal Gedanken gemacht und eine Lösung gefunden, die deiner sehr ähnlich ist... Das mit dem Hilfs-Item ist natürlich eine Krücke und ich dachte, es geht besser. Aber vermutlich ist es so sogar einfacher, weil man nicht viel rumscripten muss und alles in der Main UI machen kann.
Extra Item: Helper_Flur_Motion
Ich habe drei Regeln ...
Extra Item: Helper_Flur_Motion
Ich habe drei Regeln ...
- Motion Helper -> Schalte den Helper aus, wenn das Licht ausgeschaltet wird (item state is updated to OFF).
- Motion ON (item state changed from OFF to ON) -> Schalte das Licht und den Helper an, aber nur wenn Licht=OFF "und" Helper=OFF
- Motion OFF (item state is updated to OFF) -> Schalte das Licht aus, aber nur wenn Helper=ON
OpenHAB 3.2 im Docker auf Pi4-4GB
-
- Beiträge: 1173
- Registriert: 4. Nov 2019 22:08
Re: Rule | Motion Sensor | Licht einschalten, aber ...
liest sich für mich wie der Vorschlag von Udo und könnte wahrscheinlich sogar in 1 oder 2 Rules erfolgen 

openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3
-
- Beiträge: 44
- Registriert: 8. Jan 2022 00:15
Re: Rule | Motion Sensor | Licht einschalten, aber ...
Schrieb ich ja, dass die Idee dahinter deckungsgleich ist...

Wie würdest du das in nur 1-2 Rules verpacken?
OpenHAB 3.2 im Docker auf Pi4-4GB
- udo1toni
- Beiträge: 15265
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Rule | Motion Sensor | Licht einschalten, aber ...
Nehmen wir an, Du hast die Items Flur_Licht, Flur_Motion und Flur_Motion_Helper:
Falls Du mehrere (voneinander unabhängige) Bewegungsmelder hast, könnte man die Rule auch generalisieren, so dass sie für alle Bewegungsmelder funktioniert.
Code: Alles auswählen
rule "Bewegung Flur"
when
Item Flur_Motion changed or
Item Flur_Licht changed to OFF
then
if(Flur_Motion.state == OFF) {
if(Flur_Licht.state == ON && Flur_Motion_Helper.state == ON) {
Flur_Licht.sendCommand(OFF)
Flur_Motion_Helper.postUpdate(OFF)
}
} else {
if(Flur_Licht.state == OFF ) {
Flur_Licht.sendCommand(ON)
Flur_Motion_Helper.postUpdate(ON)
}
}
if(Flur_Motion.state == OFF && Flur_Licht.state == OFF)
Flur_Motion_Helper.postUpdate(OFF)
end
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet
-
- Beiträge: 44
- Registriert: 8. Jan 2022 00:15
Re: Rule | Motion Sensor | Licht einschalten, aber ...
Die Rule sieht ganz nice aus.. Ich werde das mal etwas auf meine Item Namen umschreiben.
Hast du noch einen Tipp wie ich das 1:1 in OH3.2 umsetzen kann? Ich würde sonst ganz normal den "then" Teil als Script in OH3.2. zur Regel packen. Den "when" Teil würde ich normal über die Main UI einstellen.
OpenHAB 3.2 im Docker auf Pi4-4GB
- udo1toni
- Beiträge: 15265
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Rule | Motion Sensor | Licht einschalten, aber ...
Die Regel sollte genauso auch über die Main UI erstellt werden können.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet
-
- Beiträge: 44
- Registriert: 8. Jan 2022 00:15
Re: Rule | Motion Sensor | Licht einschalten, aber ...
Ja. Bei WHEN muss ich die Items manuell einstellen. Bei THEN würde ich dein Script nehmen und als DSLv1 einstellen.
Da diese DSL Rules aus OH1+2 stammen, vermute ich, dass diese irgendwann eingestellt werden. Daher versuche ich neue Regeln mit ECMASript zu machen.
OpenHAB 3.2 im Docker auf Pi4-4GB
- udo1toni
- Beiträge: 15265
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Rule | Motion Sensor | Licht einschalten, aber ...
Nein, die DSL war mal abgekündigt, das ist aber nicht mehr der Fall. Es gibt momentan keinen Grund, von der DSL als Programmiersprache weg zu gehen, wenn man nicht besondere Vorlieben hat.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet