Timer mit Restlaufzeit Anzeige
Verfasst: 2. Jan 2022 10:37
Hallo Leute, für alle die es interessiert einen Timer mit Restlaufzeitanzeige zu erstellen hab ich nach langem Googlen und Probieren es endlich geschafft so einen Timer zum Laufen zu bringen. Nach meinen ersten Tests läuft alles so wie es soll. Wenn jemand Verbesserungsvorschläge hat bitte lasst es mich wissen. Nur zur Info ich kenn mich mit dem Programmieren bzw. mit den Befehlen nicht gut aus alles was ich hier mache, entsteht nur durch Rules bzw. Wissen das ich mir aus dem Internet hole und durch langes Probieren bis es funktioniert. Deshalb ist es für mich wichtig wenn ihr Verbesserungsvorschläge habt sie mir hier zu posten damit ich wieder etwas lerne. Danke im voraus
Aber jetzt zum Timer
Items
Sitemap
Rule
Das wars, ich hoffe es hilft dem einen oder anderen weiter und für Verbesserungsvorschläge schreibt mir gerne, somit lerne ich etwas und auch andere die den Post lesen.
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