var Timer FlurUnten_timer = null
rule "Flur unten Bewegung"
when
Item FlurUntenBewegungPresence changed to ON
then
FlurUnten_timer?.cancel
if (ShellyFlurUntenLichtRelayOutput.state == ON)
FlurUnten_timer = createTimer(now.plusSeconds(100), [|
ShellyFlurUntenLichtRelayOutput.sendCommand(OFF)
])
end
Der Shelly ( ShellyFlurUntenLichtRelayOutput) soll 100s nach der letzten Meldung ON des Bewegungsmelders ausgehen. Das geht auch super, jetzt habe ich aber festgestellt das es passieren kann das der Bewegungsmelders nicht auslöst. Wie bekomme ich die den Shelly nach 100s aus? Kann mir da bitte jemand helfen? Danke
var Timer tFlurUnten = null
rule "Flur unten Bewegung"
when
Item FlurUntenBewegungPresence received update ON
then
if(ShellyFlurUntenLichtRelayOutput.state != ON)
ShellyFlurUntenLichtRelayOutput.sendCommand(ON)
tFlurUnten?.cancel
tFlurUnten = createTimer(now.plusSeconds(100), [|
if(ShellyFlurUntenLichtRelayOutput.state != OFF)
ShellyFlurUntenLichtRelayOutput.sendCommand(OFF)
])
end
Jedes Mal, wenn der Bewegungsmelder ein ON sendet, wird das Licht eingeschaltet, falls es aus war. Außerdem wird ein eventuell laufender Timer gestoppt sowie ein neuer Timer angelegt, der nach Ablauf der Zeit das Licht ausschaltet. Wird zwischendurch eine weitere Bewegung erkannt, so triggert die Rule, der laufende Timer wird gelöscht und durch einen neuen ersetzt. Der Timer wird immer angelegt.
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet
Hallo Udo,
Der Shelly wird über einen Schalter eingeschaltet, die Lampe daran soll nach 100s ausgehen, außer wenn der Bewegungsmelder eine anschlägt. Der Bewegungsmelder soll den Shelly nicht anmachen, sondern nur daran hinder das der Zähler ihn ausmacht.
var Timer tFlurUnten = null
rule "Flur unten Licht Timer aus"
when
Item ShellyFlurUntenLichtRelayOutput received command ON
then
tFlurUnten?.cancel
tFlurUnten = createTimer(now.plusSeconds(100), [|
ShellyFlurUntenLichtRelayOutput.sendCommand(OFF)
])
end
rule "Flur unten Bewegung"
when
Item FlurUntenBewegungPresence received update ON
then
if(ShellyFlurUntenLichtRelayOutput.state != OFF)
tFlurUnten?.cancel
tFlurUnten = createTimer(now.plusSeconds(100), [|
if(ShellyFlurUntenLichtRelayOutput.state != OFF)
ShellyFlurUntenLichtRelayOutput.sendCommand(OFF)
])
end
Hallo Udo,
das ganze soll die Flurbeleuchtung (dieser ist ein langer Schlauch der am Ende um eine Ecke geht in der die Jacken hängen) sein, leider wird hier oft vergessen das Licht auszumachen. Darum der Timer, beim An/Ausziehen kann es schon mal etwas länger dauern (4 Kinder + 2 Erwachsene), solange Bewegung vom Bewegungsmelder registriert wird bleibt das Licht jetzt auch an und man steht nicht im dunkeln.