configuration model 'heizung.rules' has errors, therefore ignoring it: [17,9]: no viable alternative at input 'midnight'
[18,56]: no viable alternative at input 'midnight'
[18,65]: extraneous input ')' expecting 'end'
rule "Gasverbrauch heute aktualisieren"
when
Item gasZaehler changed or
Time cron "1 0 0 * * ?" // täglich um 00:00:01 Uhr
then
val midnight = LocalDateTime.of(LocalDate.now(),LocalTime.MIDNIGHT)
gasverbrauchHeute.postUpdate((gasZaehler.deltaSince(midnight))
end
openHAB 3.2 in einer Debian-VM mit openHABian unter Proxmox 6.4-13 auf Intel NUC 5i3ryh
rule "Gasverbrauch heute aktualisieren"
when
Item gasZaehler changed or
Time cron "1 0 0 * * ?" // täglich um 00:00:01 Uhr
then
val vMidnight = LocalDateTime.of(LocalDate.now(),LocalTime.MIDNIGHT)
gasverbrauchHeute.postUpdate((gasZaehler.deltaSince(vMidnight))
end
Viele Grüße
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3
rule "Gasverbrauch heute aktualisieren"
when
Item gasZaehler1 changed or
Time cron "1 0 0 * * ?" // täglich um 00:00:01 Uhr
then
val vMidnight = LocalDateTime.of(LocalDate.now(),LocalTime.MIDNIGHT)
gasverbrauchHeute.postUpdate((gasZaehler1.deltaSince(vMidnight)))
end
[ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'heizung-2' failed: An error occurred during the script execution: Could not invoke method: org.openhab.core.persistence.extensions.PersistenceExtensions.deltaSince(org.openhab.core.items.Item,java.time.ZonedDateTime) on instance: null in heizung
rule "Gasverbrauch heute aktualisieren"
when
Item gasZaehler1 changed or
Time cron "1 0 0 * * ?" // täglich um 00:00:01 Uhr
then
gasverbrauchHeute.postUpdate(gasZaehler1.deltaSince(now.with(LocalTime.MIDNIGHT)))
end
Wichtig ist natürlich, dass gasZaehler1 persistiert ist, und zwar mit der default Persistence. Falls Du eine andere als die default Persistence verwenden willst, musst Du sie explizit angeben, also z.B.
Ambiguos feature call sollte lediglich eine Warnmeldung sein. Es bedeutet, dass openHAB vor lauter Möglichkeiten nicht weiß, welche es denn nun nehmen soll. Der Einfachheit halber hänge ein .toString an: