Wie bereits im anderen Thread("Welche Werte speichern, um später schöne Plots zu haben?") vermutet habe ich Probleme mit der Rule.
1. Bekomme ich bei den meisten Berechnungen noch "null", weil vermutlich noch keine Werte für den Zeitraum vorhanden sind. Kann man da evtl. herausfinden wann der 1ste Wert eingetragen wurde und dies als start_of_day/week/month/year setzen?
2. Der jeweilige Maximumwert müsste ja immer kurz vor 24 Uhr und nur 1mal pro Zeiteinheit(z.B. für die Woche Sonntag Abend 23:59:59) gespeichert werden, wie bekomme ich das hin so das pro Tag/Woche/Monat/Jahr immer nur eine Wert gespeichert wird? Oder lassen sich Werte per rule löschen?
1. Bekomme ich bei den meisten Berechnungen noch "null", weil vermutlich noch keine Werte für den Zeitraum vorhanden sind. Kann man da evtl. herausfinden wann der 1ste Wert eingetragen wurde und dies als start_of_day/week/month/year setzen?
2. Der jeweilige Maximumwert müsste ja immer kurz vor 24 Uhr und nur 1mal pro Zeiteinheit(z.B. für die Woche Sonntag Abend 23:59:59) gespeichert werden, wie bekomme ich das hin so das pro Tag/Woche/Monat/Jahr immer nur eine Wert gespeichert wird? Oder lassen sich Werte per rule löschen?
Code:
import java.time.temporal.TemporalAdjusters // leider nicht als default dabei... rule "heatpump consumption" when Item hp_counter_kwh received update then // Zeitpunkte definieren val start_of_day = now.with(LocalTime.MIDNIGHT) // Mitternacht val start_of_week2 = start_of_day.minusDays(7) // Mitternacht vor einer Woche val start_of_week = start_of_day.with(TemporalAdjusters.previousOrSame(MONDAY)) // Mitternacht Wochenbeginn val start_of_month = start_of_day.with(TemporalAdjusters.firstDayOfMonth()) // Mitternacht Monatserster val start_of_year = start_of_day.with(TemporalAdjusters.firstDayOfYear()) // Mitternacht 1.1. // Delta auslesen val strom_Heute = hp_counter_kwh.deltaSince(start_of_day) as Number val strom_Woche = hp_counter_kwh.deltaSince(start_of_week) as Number val strom_Woche2 = hp_counter_kwh.deltaSince(start_of_week2) as Number val strom_Monat = hp_counter_kwh.deltaSince(start_of_month) as Number val strom_Jahr = hp_counter_kwh.deltaSince(start_of_year) as Number // Delta schreiben hp_c_day_kwh.postUpdate(strom_Heute) hp_c_kalenderwoche_kwh.postUpdate(strom_Woche) hp_c_week_kwh.postUpdate(strom_Woche2) hp_c_month_kwh.postUpdate(strom_Monat) hp_c_year_kwh.postUpdate(strom_Jahr) // Maximumwert nur 1 mal pro Zeiteinheit ??? hp_c_max_day_kwh.postUpdate(hp_c_day_kwh.maximumSince(now.with(LocalTime.MIDNIGHT)).state as Number) // Maximumwert nach obigem Beispiel für Woche, Monat, Jahr // hp_c_max_week_kwh // hp_c_max_month_kwh // hp_c_max_year_kwh end
Kommentar