Datenbank und openhab unterschiedliche Zeitzonen!

Für welche Projekte verwendet Ihr OpenHAB? Was habt Ihr automatisiert? Stellt eure Projekte hier vor.

Moderatoren: Cyrelian, seppy

Antworten
oh73
Beiträge: 286
Registriert: 7. Mär 2021 14:49
Answers: 1

Datenbank und openhab unterschiedliche Zeitzonen!

Beitrag von oh73 »

Hallo,
habe mich diese Woche mal an Datenbank Abfragen versucht.

erst mal mit Tagesverbrauch, Monatsverbrauch,
dann Verbrauch zwischen 2 Zeiten
und zum Schluss Verbrauch von einem bestimmten Datum.

im Prinzip funktioniert das soweit schon,
nur die Daten stimmen nicht so richtig!

beim letzten Versuch hab ich dann gemerkt das das Ergebnis immer um 1 Stunde verschoben ist!

beim googln bin ich auch auf diesen Beitrag gestoßen,
viewtopic.php?t=3750

nur wie passe ich die Zeitzonen an?

ich habe jetzt in meiner Rule z.B. die Werte von LocalTime.MIDNIGHT mit
now.withHour(1).withMinute(0).withSecond(0) ersetzt.

und bei Zeitabfragen die Zeitzone + 1 Stunde angegeben.

da müsste es aber eine bessere Lösung geben?

meine Rule mit meinen Versuchen,

Code: Alles auswählen

rule "Stromverbrauch  Datenbank abfragen" 

when
	Item Total_Verbrauch received update or
	Item Verbrauch changed
then
	val dtMidnight = ZonedDateTime.now().with(LocalTime.MIDNIGHT)
	var Number Verbrauch_tag 		= Total_Verbrauch.deltaSince(now.withHour(1).withMinute(0).withSecond(0), "jdbc") as Number 
	var Number Verbrauch_ab_gestern = Total_Verbrauch.deltaSince(dtMidnight.minusDays(1), "jdbc") as Number
	var Number Verbrauch_Monat 	 	= Total_Verbrauch.deltaSince(dtMidnight.withDayOfMonth(1), "jdbc")  as Number
	var Number Verbrauch_gestern 	= Verbrauch_ab_gestern - Verbrauch_tag
	
	logInfo("DB_abfragen_Test = ",""+Verbrauch_tag+" : "+Verbrauch_ab_gestern+" : "+Verbrauch_gestern )
	logInfo("DB_abfragen_Monat = ",""+Verbrauch_Monat)
	
// #############  von bis abfragen ################ geht ! 

	var von = "2023-04-14T00:00:00.000Z"
	var bis = "2023-04-15T00:00:00.000Z"
	var Bereich = Total_Verbrauch.deltaBetween(ZonedDateTime.parse(von), ZonedDateTime.parse(bis))
	logInfo("DB_abfragen_Bereich = ",""+Bereich )
	
// ############ ein Wert von einem bestimmten Zeitpunkt abrufen ! #######

	val datum1 = "2023-04-12T00:00:00.000+01:00[Europe/Berlin]"
	var Wert = Total_Verbrauch.historicState(ZonedDateTime.parse(datum1)).state
	logInfo("DB_abfragen_Wert = ",""+Wert )

end
OH 4.0.3 auf HP 26o G1 Dm Mini Pc mit MX_Linux

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

Re: Datenbank und openhab unterschiedliche Zeitzonen!

Beitrag von udo1toni »

Da momentan Sommerzeit ist, müsste die Zeitverschiebung allerdings +2 Stunden betragen.

Die Frage ist auch, für welche Zeiträume Du die Daten betrachtest. Durch die sch..ß Sommerzeit hast Du immer einen Schluckauf in den Daten, wenn Du Zeiträume betrachtest, die entweder den letzten Sonntag im März oder den letzten Sonntag im Oktober beinhalten (jeweils natürlich nur, wenn der Beginn vor der Umstellung und das Ende nach der Umstellung liegt)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

oh73
Beiträge: 286
Registriert: 7. Mär 2021 14:49
Answers: 1

Re: Datenbank und openhab unterschiedliche Zeitzonen!

Beitrag von oh73 »

also muss ich mit meinem Behelf weiter leben,
und bei Sommer-, Winterzeit meine Rule immer anpassen?

was wichtiges ist das erst mal sowieso nicht, war nur mal ein Versuch!

hab jetzt erst mal meine Datenbank gelöscht und meine jdbc.persist neu geordnet.

muss jetzt erst mal warten bis sich die Datenbank wieder füllt.

solange mach ich mir meinem alten System weiter,
openhab schickt die Daten um Mitternacht an ein PHP-Script, das speichert die Daten in meine eigene Datenbank, das funktioniert so schon seit letztem Jahr.
ebenso hole ich mir bei Bedarf die Daten auch wieder mit einem PHP-Script und aktualisiere über die Rest-Api meine Items.

wäre natürlich einfacher wenn das alles mal über openhab und jdbc Datenbank geht.

was passiert wenn ich die jdbc Datenbank von Hand mit meinen Daten fülle, verändere?
da spielt openhab nicht mit?
ich dachte daran für jedes Item einmal von openhab einen Eintrag erstellen lassen und diese Tabelle dann von Hand weiter zu füllen.
OH 4.0.3 auf HP 26o G1 Dm Mini Pc mit MX_Linux

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

Re: Datenbank und openhab unterschiedliche Zeitzonen!

Beitrag von udo1toni »

Nein, eigentlich sollte das Problem gar keines sein, solange nicht der Umschaltzeitpunkt im Zeitfenster enthalten ist.

Ich sehe jedenfalls bei mir keine Auffälligkeiten.

Wichtig ist natürlich, dass alle beteiligten Systeme korrekt automatisch zwischen den Zeiten umschalten und sich auch streng nach der Lokalen Zeit richten.
Alternativ könnte man auch versuchen, alles dauerhaft auf UTC laufen zu lassen (wäre vermutlich eh das beste, intern ausschließlich UTC zu verwenden und jegliche Zeitangaben nur für die Anzeige auf Lokale Zeit umzurechnen - dann gäbe es das Problem überhaupt nicht.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

oh73
Beiträge: 286
Registriert: 7. Mär 2021 14:49
Answers: 1

Re: Datenbank und openhab unterschiedliche Zeitzonen!

Beitrag von oh73 »

was passiert wenn ich die jdbc Datenbank von Hand mit meinen Daten fülle, verändere?
da spielt openhab nicht mit?
es geht, ist aber sehr aufwendig!

in der Tabelle neue Zeilen erstellen.

hab jetzt nicht versucht neue Zeilen mit älteren Datum an zu hängen, weiß nicht ob das auch geht?

deshalb hab ich abgezählt wie viele Zellen ich ein fügen will,

die älteren Datensätze an das Ende kopiert und dann davor die neuen Datensätze mit sortiertem Datum eingefügt.

das hat so funktioniert, und openhab beschwert sich auch nicht!
OH 4.0.3 auf HP 26o G1 Dm Mini Pc mit MX_Linux

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

Re: Datenbank und openhab unterschiedliche Zeitzonen!

Beitrag von udo1toni »

Ja, händisch macht es keinen Spaß, Daten einzufügen.

Die Frage ist ja, wo die Daten herkommen. Eine andere Tabelle? -> Anfügeabfrage direkt in der Datenbank anlegen, anstupsen und zuschauen, wie innerhalb von Sekunden tausende Datensätze ergänzt werden.
Die Abfrage kann dabei auch "falsche" Zeitangaben umrechnen, alles nur eine Frage der Programmierung.

Für eine Hand voll Datensätze lohnt der Aufwand aber nicht :)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten