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