Regel Zeitschalt Uhr funktioniert seit Update auf OH3 nicht mehr

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

Regel Zeitschalt Uhr funktioniert seit Update auf OH3 nicht mehr

Beitrag von rexxxx »

Hallo, ich habe nun das Update auf Openhab 3 gemacht und so wie es immer ist funktionieren einige Dinge nicht mehr richtig...

Punkt 1:
Ich habe eine Zeitschalt Uhr im OH 2.5 gebaut gehabt, welche auch immer gut funktionierte.
Das hier ist der Code:
---------------------------------------------------------------
rule "Zeit_Rolladen_Runter"
when
Time cron "0 * * * * ?" //Jede Minute bei Sekunde 0
then
if (T_Rolladen.state == ON) {
var sollMinute = (T_Rolladen_EIN_M.state as DecimalType).intValue
var sollStunde = (T_Rolladen_EIN_H.state as DecimalType).intValue

if (sollMinute == now.getMinuteOfHour && sollStunde == now.getHourOfDay) {
sendCommand(A_Rollladen_k , 75)
sendCommand(A_Rollladen_g , 100)
}
}
end
---------------------------------------------------------------

Ich habe beim rumprobieren heraus gefunden, dass die erste If abfrage sauber abgearbeitet wird und auch die Aktion.
Das Problem liegt entweder im beschreiben der Soll Variablen oder bei der Bedingung der zweiten If abfrage.
Hat jemand eine Idee? Solche Art Zeitschaltuhren habe ich mehrfach im Einsatz und es hatte immer super geklappt und ich konnte sie über das Basic UI einstellen.


Punkt 2:
Die Sitemap, wurde nicht mehr erkannt. Hat sich da was geändert?
Habe mir jetzt erstmal die Sitemap komplett im Page Editor neu aufgebaut, es währe aber interessant zuwiesen, warum die Sitemap Files nicht mehr erkannt werden.


Danke
Und Schöne Grüße
von rexxxx » 2. Mai 2021 08:53
So, bin gestern endlich dazugekommen die Überarbeiteten Regeln zu testen.

Für alle die auch in dieses Problem gelaufen sind:
die Regel wird verwendet um eine Zeitschaltur in Openhab zu realisieren.

OpenHab 2.5 Code

Code: Alles auswählen

rule "Zeit_Rolladen_Runter"
    when
        Time cron "0 * * * * ?"	//Jede Minute bei Sekunde 0
    then
	if (T_Rollladen_Praxis_Wiesbaden.state == ON) {
		var sollMinute = (T_Rollladen_Praxis_Wiesbaden_EIN_M.state as DecimalType).intValue
		var sollStunde = (T_Rollladen_Praxis_Wiesbaden_EIN_H.state as DecimalType).intValue

		if (sollMinute == now.getMinuteOfHour && sollStunde ==now.getHourOfDay) {
			sendCommand(A_Rollladen_Praxis_Wiesbaden , 90)		
		}
	}
end
Openhab 3.0 Code

Code: Alles auswählen

rule "Zeit_Rolladen_Runter"
    when
        Time cron "0 * * * * ?"	//Jede Minute bei Sekunde 0
    then
	if (T_Rollladen_Praxis_Wiesbaden.state == ON) {
		var sollMinute = (T_Rollladen_Praxis_Wiesbaden_EIN_M.state as DecimalType).intValue
		var sollStunde = (T_Rollladen_Praxis_Wiesbaden_EIN_H.state as DecimalType).intValue

		if (sollMinute == now.getMinute() && sollStunde == now.getHour()) {
			sendCommand(A_Rollladen_Praxis_Wiesbaden , 90)		
		}
	}
end
Leider kann ich im Code keine Formatierung anbringen um die Unterschiede zu verdeutlichen.
Unter 2.5 wird die Zeit als now.getMinuteOfHour erzeugt.
Under 3.0 wird die Zeit als now.getMinute() erzeugt.
Gehe zur vollständigen Antwort

Benutzeravatar
udo1toni
Beiträge: 13948
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Regel Zeitschalt Uhr funktioniert seit Update auf OH3 nicht mehr

Beitrag von udo1toni »

Zu Punkt 1: openHAB3 verwendet kein joda Time mehr, stattdessen findet JavaTime Verwendung. Unter JavaTime heißen die benötigten Funktionen now.getHour und now.getMinute.

Zu Punkt 2: Nein, bei den Sitemaps hat sich nichts geändert. Dateien, die unter OH2 funktioniert haben, sollten - identische Items mal vorausgesetzt - weiterhin funktionieren.

Punkt 3: ( ;) ) Bitte nutze einfach Code-Tags, um Code zu markieren. Das erhöht die Lesbarkeit und bringt noch andere Vorzüge mit sich. Code-Tags kannst Du von Hand einfügen (als BBCode), oder indem Du in den vollständigen Editor umschaltest und dort den Knopf mit dem </> drückst.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

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

Re: Regel Zeitschalt Uhr funktioniert seit Update auf OH3 nicht mehr

Beitrag von rexxxx »

Danke für den Super Hinweis.
Werde es bei Gelegenheit mal versuchen, aber eine kleine Googlesuche hat mir schon gezeigt, das dieses Problem massig besprochen wurde, man muss halt nur wissen wonach man suchen muss :))

Danke dafür.
Ich werde nach Umsetzung hier den code von 2.5 und von 3 Posten, damit nachfolgende 1 zu 1 Beispiele haben.

Was Punkt 2 angeht, hatte sich weder in den Items noch in der sitemap was geändert, sollte also eigentlich klappen. Werde da noch mal etwas experimentieren, aber schon mal gut zu wissen, das der Ordner noch gescannt wird.

Zu Punkt 3
Neumodicher Kram ;) Ich gelobe Besserung

Grüße aus und in den ewigen Lockdown

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

Re: Regel Zeitschalt Uhr funktioniert seit Update auf OH3 nicht mehr

Beitrag von rexxxx »

So, bin gestern endlich dazugekommen die Überarbeiteten Regeln zu testen.

Für alle die auch in dieses Problem gelaufen sind:
die Regel wird verwendet um eine Zeitschaltur in Openhab zu realisieren.

OpenHab 2.5 Code

Code: Alles auswählen

rule "Zeit_Rolladen_Runter"
    when
        Time cron "0 * * * * ?"	//Jede Minute bei Sekunde 0
    then
	if (T_Rollladen_Praxis_Wiesbaden.state == ON) {
		var sollMinute = (T_Rollladen_Praxis_Wiesbaden_EIN_M.state as DecimalType).intValue
		var sollStunde = (T_Rollladen_Praxis_Wiesbaden_EIN_H.state as DecimalType).intValue

		if (sollMinute == now.getMinuteOfHour && sollStunde ==now.getHourOfDay) {
			sendCommand(A_Rollladen_Praxis_Wiesbaden , 90)		
		}
	}
end
Openhab 3.0 Code

Code: Alles auswählen

rule "Zeit_Rolladen_Runter"
    when
        Time cron "0 * * * * ?"	//Jede Minute bei Sekunde 0
    then
	if (T_Rollladen_Praxis_Wiesbaden.state == ON) {
		var sollMinute = (T_Rollladen_Praxis_Wiesbaden_EIN_M.state as DecimalType).intValue
		var sollStunde = (T_Rollladen_Praxis_Wiesbaden_EIN_H.state as DecimalType).intValue

		if (sollMinute == now.getMinute() && sollStunde == now.getHour()) {
			sendCommand(A_Rollladen_Praxis_Wiesbaden , 90)		
		}
	}
end
Leider kann ich im Code keine Formatierung anbringen um die Unterschiede zu verdeutlichen.
Unter 2.5 wird die Zeit als now.getMinuteOfHour erzeugt.
Under 3.0 wird die Zeit als now.getMinute() erzeugt.

Antworten