Aber jetzt zum Timer
Items
Code: Alles auswählen
Switch Switch1 "Schalter der den Timer aktiviert"
Switch Switch2 "Schlater der vom Timer geschalten wird"
Number TimerLaufzeit "Eingestellte Timerlaufzeit"
Number Laufzeit "Timerlaufzeit"
Number VerbleibendeZeit "Verbleibende Timerlaufzeit [%d min]"
Code: Alles auswählen
Switch item=Switch1 label="Schalter der den Timer aktiviert und das Gerät oder Item einschaltet" icon=switch
Switch item=Switch2 label="Schalter der den Timer deaktiviert und das Gerät oder Item ausschaltet" icon=switch
Selection item=TimerLaufzeit label="Timer Laufzeit" icon=time mappings=[2="2 min", 10="10 min", 15="15 min", 30="30 min"]
Text item=VerbleibendeZeit label="Verbleibende Zeit" icon=time
Code: Alles auswählen
var Timer timer1 = null
var Timer timer2 = null
rule "Timer starten"
when
Item Switch1 changed to ON //das Item das den Timer aktivern soll angeben
then
val timerlaufzeit = TimerLaufzeit.state as Number
Laufzeit.postUpdate(timerlaufzeit)
timer1 = createTimer(now.plusMinutes(timerlaufzeit.intValue), [|
//Switch2.sendCommand(OFF) //das vom Timer zu schaltende Gerät angeben(aktiveren wenn eine WIFI Steckdose / Schalter oder Sontiges geschalten werden muss)
//Switch2.postUpdate(OFF) //das vom Timer zu schaltende Item angeben (aktiveren wenn ein Item nur innerhalb von openHAB geschalten werden muss)
])
end
rule "Timer abbrechen"
when
Item Switch1 changed to OFF
then
// Den Timer abbrechen, falls vorhanden, das ? bewirkt, dass die Zeile übersprungen wird, wenn der Timer null ist
timer1?.cancel
timer1 = null
VerbleibendeZeit.postUpdate(0)
timer2?.cancel
timer2 = null
Laufzeit.postUpdate(0)
end
rule "Verbleibende Zeit"
when
Item Switch1 changed to ON
then
VerbleibendeZeit.postUpdate(TimerLaufzeit.state)
timer2 = createTimer(now.plusMinutes(1), [ |
var int remain = (VerbleibendeZeit.state as DecimalType - 1 ).intValue
if( remain < 0 )
remain = 0
VerbleibendeZeit.postUpdate(remain)
if( remain > 0)
timer2.reschedule(now.plusMinutes(1))
])
end