Seite 1 von 1

[gelöst] Bezug auf persistierte Daten - Differenz zwische Wert Mitternacht und jetzt

Verfasst: 8. Jul 2022 00:55
von Florian.Reinartz
Moin Zusammen,

ich lasse einige Daten persistieren und möchte bei einigen die Differenz zwischen dem Wert um 0:00 Uhr und dem aktuellen Wert berechnen bzw. anzeigen.
Z.B. um aussagen zu können wieviel Wasser oder Strom ich am heutigen Tag everbraucht habe. Peristiert wird dann der Zählerstand (Gesamt).
In OH2 ging es immer so:

Code: Alles auswählen

Verbrauch_Strom_Tag.sendCommand((Zaehlerstand_Strom_1_0_1_8_0.deltaSince(now.withTimeAtStartOfDay)) / 1000.0)
Aber diese Methode scheint in OH3 nicht mehr anwendbar zu sein...
In den Foren kann ich nichts explizites finden...

Das Problem tritt bei mir in über 20 Rules auf...
Ich würde mich über eine Hilfestellung echt freuen.


Einen ähnliche Fall hatte ich schon mal:
OH2:

Code: Alles auswählen

var dtStart  = new DateTime((Tasmota033_Trockner_Messbeginn.state as DateTimeType).zonedDateTime.toInstant.toEpochMilli)
val Diff     = now.millis - dtStart.millis
val iDays    = (Diff / 1000 / 60 / 60 / 24).intValue                             // volle Tage
Tasmota033_Trockner_Messdauer.postUpdate(iDays)
Anpassung an OH3:

Code: Alles auswählen

val vDiffNext_Tasmota033 = LocalDate.now.getDayOfYear() - (Tasmota033_Trockner_Messbeginn.state as DateTimeType).getZonedDateTime.getDayOfYear()
Tasmota033_Trockner_Messdauer.postUpdate(vDiffNext_Tasmota033)
hilft mir hier aber - glaube ich - nicht weiter...

Danke und Gruß in die Nacht
Florian

Re: Bezug auf persistierte Daten - Differenz zwische Wert Mitternacht und jetzt

Verfasst: 8. Jul 2022 08:25
von udo1toni
Genau. openHAB3 verwendet JavaTime, welches kein now.timeAtStartOfDay kennt, dafür aber z.B. now.with(LocalTime.MIDNIGHT)

Re: Bezug auf persistierte Daten - Differenz zwische Wert Mitternacht und jetzt

Verfasst: 10. Jul 2022 20:40
von Florian.Reinartz
Moin Zusammen,
um die Sache hier zu Ende zu bringen...

OH2:

Code: Alles auswählen

Verbrauch_Strom_Tag.postUpdate((Zaehlerstand_Strom_1_0_1_8_0.deltaSince(now.withTimeAtStartOfDay)) / 1000.0)
OH3:

Code: Alles auswählen

val dMidnight = ZonedDateTime.now().with(LocalTime.MIDNIGHT)
val Number nDelta = Zaehlerstand_Strom_1_0_1_8_0.deltaSince(dMidnight) as Number
Verbrauch_Strom_Tag.postUpdate(nDelta / 1000.0)
So ist es gut nachzuvollziehen allerding glaube ich, dass man es in OH3 auch zusemmanfassen könnte.
OH3:

Code: Alles auswählen

Verbrauch_Strom_Tag.postUpdate((Zaehlerstand_Strom_1_0_1_8_0.deltaSince(ZonedDateTime.now().with(LocalTime.MIDNIGHT)) as Number) / 1000.0)
Danke und Gruß
Florian

Re: [gelöst] Bezug auf persistierte Daten - Differenz zwische Wert Mitternacht und jetzt

Verfasst: 11. Jul 2022 01:28
von udo1toni
Ja, das Zusammenfassen geht genauso. Aber Obacht, Du hast im Beispiel ein / gelöscht (/ 1000)

Re: [gelöst] Bezug auf persistierte Daten - Differenz zwische Wert Mitternacht und jetzt

Verfasst: 19. Jul 2022 22:19
von Florian.Reinartz
Danke für den Hinweis.
Habe ich korrigiert.