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