Timer mit Werten aus Item OpenHab 2.x zu 3.x

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
rexxxx
Beiträge: 24
Registriert: 12. Dez 2019 05:44
Answers: 3

Timer mit Werten aus Item OpenHab 2.x zu 3.x

Beitrag von rexxxx »

Hi, ich hab heute meinen OpenHab Server auf OpenHab 3.x hochgerüstet.
Ich habe gelesen, dass es eine Umstellung der Zeit api von Joda zu Jave gegeben hat.
Den größten Teil meiner Regeln habe ich nun schon überarbeitet und wieder aktiv geschaltet. Aber bei dieser Regel habe ich Probleme den richtigen Syntax zusammen zu bekommen.

Original Regel aus OH2

Code: Alles auswählen

//Erkennen der AlarmTypen
//Timer
rule "Timer_Timer"
when
        Item ChristophsEchoDot_NChsterTimer changed
then
       	createTimer(new DateTime(ChristophsEchoDot_NChsterTimer.state.toString)) [|
        sendCommand(T_Alarm , ON)]
end

//Alarm
rule "Alarm_Timer"
when
        Item ChristophsEchoDot_NChsterAlarm changed
then
       	createTimer(new DateTime(ChristophsEchoDot_NChsterAlarm.state.toString)) [|
        sendCommand(T_Alarm , ON)]
end

//Erinnerung
rule "Reminder_Timer"
when
        Item ChristophsEchoDot_NChsteErinnerung changed
then
       	createTimer(new DateTime(ChristophsEchoDot_NChsteErinnerung.state.toString)) [|
        sendCommand(T_Alarm , ON)]
end


//Aktion
rule "Alarm_Aktion"
when
        Item T_Alarm changed to ON
then
        sendCommand(A_Boxen , ON)
		sendCommand(A_Boxen_Kanal_AV6 , ON)
		sendCommand(T_Alarm , OFF)
end
Dabei geht es um diese Zeile (kommt 3 mal in leichter Abwandlung vor):

Code: Alles auswählen

createTimer(new DateTime(ChristophsEchoDot_NChsterTimer.state.toString)) [|
Wie bekomme ich jetzt den Zeitwert der sich in dem Item ChristophsEchoDot_NChsterTimer.state befindet in den neuen Java Timer?
Der Zeit wert liegt im String Format vor.

Als Referenz zu dem Thema habe ich diesen Artikel gefunden, mir ist aber nicht klar, wie ich das mit dem Item anwende.
https://community.openhab.org/t/datetim ... 3-x/107197

Des Weiteren scheint es in OH3 Probleme mit dem Teil .toString zugeben nachdem, was ich in anderen Foren gelesen habe.

Vielen Dank für eure Hilfe.
von rexxxx » 29. Jan 2022 17:27
Juhu, hab es endlich verstanden und konnte die fehlerhaften Zeilen korrigieren.

So muss der Timer Teil aussehen:

Code: Alles auswählen

createTimer((ChristophsEchoDot_NChsterTimer.state as DateTimeType).getZonedDateTime()) [|
        sendCommand(T_Alarm , ON)]
Die gesamte Regel sieht dann so aus:

Code: Alles auswählen

//-------------------Echo Zeitbefehle----------------------
//Wenn Echo Alarm ausgibt soll x ausgeführt werden

//Erkennen der AlarmTypen
//Timer
rule "Timer_Timer"
when
        Item ChristophsEchoDot_NChsterTimer changed
then
       	createTimer((ChristophsEchoDot_NChsterTimer.state as DateTimeType).getZonedDateTime()) [|
        sendCommand(T_Alarm , ON)]
	
end

//Alarm
rule "Alarm_Timer"
when
        Item ChristophsEchoDot_NChsterAlarm changed
then
       	createTimer((ChristophsEchoDot_NChsterAlarm.state as DateTimeType).getZonedDateTime()) [|
        sendCommand(T_Alarm , ON)]

end

//Erinnerung
rule "Reminder_Timer"
when
        Item ChristophsEchoDot_NChsteErinnerung changed
then
       	createTimer((ChristophsEchoDot_NChsteErinnerung.state as DateTimeType).getZonedDateTime()) [|
        sendCommand(T_Alarm , ON)]
end


//Aktion
rule "Alarm_Aktion"
when
        Item T_Alarm changed to ON
then
        sendCommand(A_Boxen , ON)
		sendCommand(A_Boxen_Kanal_AV6 , ON)
		sendCommand(T_Alarm , OFF)
end
//----------------------------------------------------------------------------
Hoffe das wird jemanden helfen, der das gleiche Problem hat wie ich.

Grüße
Gehe zur vollständigen Antwort

rexxxx
Beiträge: 24
Registriert: 12. Dez 2019 05:44
Answers: 3

Re: Timer mit Werten aus Item OpenHab 2.x zu 3.x

Beitrag von rexxxx »

Juhu, hab es endlich verstanden und konnte die fehlerhaften Zeilen korrigieren.

So muss der Timer Teil aussehen:

Code: Alles auswählen

createTimer((ChristophsEchoDot_NChsterTimer.state as DateTimeType).getZonedDateTime()) [|
        sendCommand(T_Alarm , ON)]
Die gesamte Regel sieht dann so aus:

Code: Alles auswählen

//-------------------Echo Zeitbefehle----------------------
//Wenn Echo Alarm ausgibt soll x ausgeführt werden

//Erkennen der AlarmTypen
//Timer
rule "Timer_Timer"
when
        Item ChristophsEchoDot_NChsterTimer changed
then
       	createTimer((ChristophsEchoDot_NChsterTimer.state as DateTimeType).getZonedDateTime()) [|
        sendCommand(T_Alarm , ON)]
	
end

//Alarm
rule "Alarm_Timer"
when
        Item ChristophsEchoDot_NChsterAlarm changed
then
       	createTimer((ChristophsEchoDot_NChsterAlarm.state as DateTimeType).getZonedDateTime()) [|
        sendCommand(T_Alarm , ON)]

end

//Erinnerung
rule "Reminder_Timer"
when
        Item ChristophsEchoDot_NChsteErinnerung changed
then
       	createTimer((ChristophsEchoDot_NChsteErinnerung.state as DateTimeType).getZonedDateTime()) [|
        sendCommand(T_Alarm , ON)]
end


//Aktion
rule "Alarm_Aktion"
when
        Item T_Alarm changed to ON
then
        sendCommand(A_Boxen , ON)
		sendCommand(A_Boxen_Kanal_AV6 , ON)
		sendCommand(T_Alarm , OFF)
end
//----------------------------------------------------------------------------
Hoffe das wird jemanden helfen, der das gleiche Problem hat wie ich.

Grüße

Antworten