Es wäre interessant, ein paar Werte zu loggen:
Code: Alles auswählen
rule "36 BKW"
when
Item ShellyEM_bkw_kwh changed
then
val Daybeginn = ZonedDateTime.now().with(LocalTime.MIDNIGHT)
var nTagErtrag = ShellyEM_bkw_kwh.deltaSince(Daybeginn, "influxdb") as Number
val nKwhNew = ShellyEM_bkw_kwh.state
val nKwhOld = ShellyEM_bkw_kwh.historicState(Daybeginn, "influxdb").state
val dtOld = ShellyEM_bkw_kwh.historicState(Daybeginn, "influxdb").timestamp
logInfo("bkw","neu: {} alt: {} von: {} delta: {}",nKwhNew,nKwhOld,dtOld,nTagErtrag)
ShellyEM_bkw_max_day_kwh.postUpdate(nTagErtrag)
end
Die Ausgabe kann man dann in openhab.log nachlesen (falls es sich um eine openHABian Installation handelt, bequem über frontail)
Der Zeitstempel des Datensatzes wird in der Datenbank selbst erzeugt (bei jdbc ist das konfigurierbar). Wenn es also zu Inkonsistenzen kommt, so liegt das fast sicher daran, dass die Zeit in der Datenbank falsch ist.
An dieser Stelle nur als unpassende Randbemerkung: die alljährliche Zeitumstellung ist eine Pest!
Jegliche Zeitbezüge (was Abfrage und Speichern betrifft) sollten ausschließlich mit UTC ausgeführt werden.
Nur die Anzeige der Daten müsste auf die lokale Zeit umgerechnet werden.
Die Datenbank müsste intern ebenfalls fest mit UTC arbeiten.
So kann es auch nicht zu Doppelungen der Datenbankeinträge kommen (letzter Sonntag im Oktober, 2a - 3b Uhr)
Ich bin mir aber nicht sicher, ob das so in openHAB möglich ist - zumindest gibt es dafür meines Wissens keinen Parameter.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.2.2, LXC), mit openHABian eingerichtet