Herzlich willkommen im Forum!
Wenn Du Dir diese einfache Rule anschaust, fällt etwas sofort auf: Der Itemname ist extrem unglücklich.
Items sind komplett losgelöst von Hardware. Entsprechend sollte ein Itemname auch nicht auf eine bestimmte Hardware verweisen (shellyem3). KumulierterGesamtverbrauch ist in meinen Augen ein weißer Schimmel

Der Gesamtverbrauch ist per Definition immer kumuliert.
Stromzaehler ist auch unnötig lang. Und hast Du wirklich Zwanzig Millionen Zähler in Betrieb? Eigentlich wäre StromGesamtverbrauch doch vollkommen ausreichend, oder?
Und schon wäre der Rule Code wesentlich besser lesbar.
Der eigentliche Fehler (der sollte sich eigentlich ausschließlich auf das Logging auswirken...) liegt darin, dass Du .historicState() asngibst, es muss aber .historicState().state heißen. .historicState() liefert nämlich als Ergebnis ein historicItem, nicht den Status. Man kann auch auf andere Aspekte des Items zugreifen als lediglich auf den Status (gewöhnlich wären das .state und .getTimestamp).
Mein Vorschlag (zumindest zum Debuggen):
Code: Alles auswählen
rule "Stromzaehler Verbrauch Tag"
when
Item StromGesamtverbrauch changed or
Time cron "0 0 0 * * ?"
then
val dMidnight = ZonedDateTime.now().with(LocalTime.MIDNIGHT)
val Number nTotal = StromGesamtverbrauch.historicState(dMidnight).state as Number
val Number nDelta = StromGesamtverbrauch.deltaSince(dMidnight) as Number
logInfo("verbrauch","Zählerstand um Mitternacht: {}",nTotal)
logInfo("verbrauch","Zählerstand aktuell : {}",StromGsamtverbrauch.state)
logInfo("verbrauch","Persistence Delta : {}",nDelta)
logInfo("verbrauch","errechnetes Delta : {}",(StromGsamtverbrauch.state as number) - nTotal)
TagesverbrauchGesamt.postUpdate(nDelta)
end
Der Trigger auf changed ist vollkommen ausreichend, Du musst nicht wieder und wieder zum gleichen Ergebnis kommen. Der Time cron Trigger ist nur dann relevant, wenn sich der Verbrauch extrem selten ändert (gewöhnlich würde ich bei Strommessungen eher hoch volatile Werte erwarten, die im Zweifel mehrfach pro Minute Änderung erfahren, dann wird man auch ein paar Sekunden "falsche" Tagessummenanzeige verkraften können...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet