Hallo Daniel,
Klar kann ich dir helfen die Rule an sich hast du richtig. Du kannst auch statt
Time cron " 0/5 * * ? * * * " zb.
Item Wasserzahler_ZahlerstandWasser received update benutzen.
Code: Alles auswählen
rule "Wasserverbrauch Tag"
when
Time cron " 0/5 * * ? * * * " //alle 5 sec. //entweder du benutzt das Time cron
Item Wasserzahler_ZahlerstandWasser received update //oder das Item received update
then
val ZonedDateTime zdt = ZonedDateTime.now()
var ZonedDateTime start_of_day = zdt.toLocalDate().atStartOfDay(zdt.getZone())
var wasser_Tag = Wasserzahler_ZahlerstandWasser.deltaSince(start_of_day) as Number
TagesverbrauchWasser.postUpdate(wasser_Tag)
end
Hast du das Item
Wasserzahler_ZahlerstandWasser auch in deiner Persistence? Wenn die Rule läuft musst du auf jedenfall bis Mitternacht (00:00) warten dann sollte die Rule anfangen zu zählen, so wars bei mir zumindest immer.
Wenn du das Item Wasserzahler_ZahlerstandWasser persistierst was zwingend erforderlich ist kannst du in dieser Zeile nach deltaSince(start_of_day,"
jdbc") angeben wo er die Daten vom Wasserzahler_ZahlerstandWasser herbekommt entweder (rrd4j, jdbc oder mysql) jenachdem was du für eine Persistence benutzt
Code: Alles auswählen
var wasser_Tag = Wasserzahler_ZahlerstandWasser.deltaSince(start_of_day,"jdbc") as Number
Wichtig ist nur das du das Item Persistierst
Code: Alles auswählen
// persistence strategies have a name and a definition and are referred to in the "Items" section
Strategies {
// if no strategy is specified for an item entry below, the default list will be used
everyMinute : "0 * * * * ?"
every5Minutes : "0 */5 * * * ?"
everyHour : "0 0 * * * ?"
everyDay : "0 0 0 * * ?"
default = everyChange
}
/*
* Each line in this section defines for which item(s) which strategy(ies) should be applied.
* You can list single items, use "*" for all items or "groupitem*" for all members of a group
* item (excl. the group item itself).
*/
Items {
Wasserzahler_ZahlerstandWasser : strategy = everyChange, everyMinute
}
Es gibt da noch eine andere Rule die ich in OpenHAB 2 immer benutzt habe und die ich mittlerweile für openHAB3 migriert habe, das wäre diese hier auch nicht vergessen die persistence angegen:
Code: Alles auswählen
val String time = now.with(LocalTime.of(0,0,0,0)).toString()
rule "Wasserverbrauch Tag"
when
Item Wasserzahler_ZahlerstandWasser received update
then
Wasserzahler_TagesverbrauchWasser.postUpdate(Wasserzahler_ZahlerstandWasser.deltaSince(now.with(LocalTime.of(0,0,0,0)), "jdbc" ) as Number)
end
Von der Funktion her ist das genau die selbe funktioniert bei mir auch.
So sollte so funktionieren und sollte ich irgend etwas falsch erklärt haben bitte korigiere mich gerne. Ich probiere auch immer nur mit Learning by Doing
Hoffe es funktioniert viel Erfolg.