Ist kein Problem, Du musst ja nur abhängig von der Schaltstellung unterschiedlich agieren:
Code: Alles auswählen
var Timer Stiegenhaus_Timer = null
rule "Bewegungsmelder Stiegenhaus"
when
Item BWM_Stiegenhaus received update ON
then
if(Stiegenhaus.state != ON) {
Stiegenhaus_AutoOFF.sendCommand(ON)
Stiegenhaus_Timer?.cancel
Stiegenhaus_Timer = createTimer(now.plusMinutes(2), [|
Stiegenhaus_AutoOFF.sendCommand(OFF)
])
}
end
Allerdings wäre meine Empfehlung, nur ein Item für den Taster, ein Item für den Bewegungsmelder und ein Item für das Licht zu nutzen.
Code: Alles auswählen
var Timer tStiegenhaus = null
rule "Bewegungsmelder Stiegenhaus"
when
Item BWM_Stiegenhaus received update ON or
Item Taster_Stiegenhaus received command
then
var Soll = ON
tStiegenhaus?.cancel
switch(receivedCommand) {
case OFF:
Soll = OFF
case null:
tStiegenhaus = createTimer(now.plusMinutes(2), [|
if(Licht_Stiegenhaus.state != OFF) Licht_Stiegenhaus.sendCommand(OFF)
])
}
if(Licht_Stiegenhaus.state != Soll) Licht_Stiegenhaus.sendCommand(Soll)
end
Der (vom Licht unabhängige Taster) schaltet das Licht dauerhaft ein, oder (falls das Licht gerade an ist) ganz normal aus. falls das Licht aus ist, wird bei Bewegung das Licht für zwei Minuten eingeschaltet. Bei jeder neu erkannten Bewegung wird der Timer neu gestartet, falls man bei eingeschaltetem Licht auf die Idee kommt, auf Dauer-Ein zu gehen, wird der Timer abgebrochen. Die Rule hat zwei unterschiedliche Trigger, aber es gibt nur drei Möglichkeiten, entweder der Switch hat geschaltet, dann gibt es exakt zwei Optionen (receivedCommand is ON oder OFF), oder der BWM hat Bewegung erkannt, dann ist receivedCommand === null.
Default Verhalten ist, das Licht einzuschalten (zwei von drei Fälle). In jedem der drei Fälle soll ein laufender Timer abgebrochen werden, das kann also gleich zu Beginn erledigt werden.
Im Fall OFF wird der Sollzustand auf OFF geändert, im Fall null wird der Abschalttimer angelegt.
Zum Schluss wird das Licht auf den Sollwert gebracht (ON oder OFF)
Vielleicht gibt es auch noch eine effizientere Methode, abeer so erscheint es mir schon durchaus optimiert.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet