Seite 2 von 2
Re: Differenz von Item-Werten
Verfasst: 8. Jan 2023 18:11
von Selter
Hallo Udo,
danke für den Hinweis
Ich bekomme diesen Fehler:
Code: Alles auswählen
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'
Code: Alles auswählen
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
Re: Differenz von Item-Werten
Verfasst: 8. Jan 2023 23:27
von int5749
Selter hat geschrieben: ↑8. Jan 2023 18:11
Ich bekomme diesen Fehler:
midnight ist als Name für eine Variable unglücklich gewählt? Dies ist ja auch ein interner Operator.
Versuch mal
Code: Alles auswählen
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
Re: Differenz von Item-Werten
Verfasst: 9. Jan 2023 03:03
von udo1toni
Jepp, das ist ein reserviertes Schlüsselwort. Passiert...
Re: Differenz von Item-Werten
Verfasst: 9. Jan 2023 09:37
von Selter
Da ist immer noch der Wurm drin
Code: Alles auswählen
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
Im Log:
Code: Alles auswählen
[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
In vsCode:
Code: Alles auswählen
Ambiguous feature call.
The extension methods
postUpdate(Item, Number) in BusEvent and
postUpdate(Item, State) in BusEvent
both match.
und
Code: Alles auswählen
Type mismatch: cannot convert from LocalDateTime to ZonedDateTime
Liegt es vielleicht an den Items?
Code: Alles auswählen
Number gasZaehler1 "Gaszähler (m³) seit 8.1.23 [%s]"
Number gasverbrauchHeute "Gasverbrauch (m³) heute [%s]"
Re: Differenz von Item-Werten
Verfasst: 9. Jan 2023 12:58
von udo1toni
Gut, dann einfacher...
Code: Alles auswählen
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.
Code: Alles auswählen
gasZaehler1.deltaSince(now.with(LocalTime.MIDNIGHT),"rrd4j")
Re: Differenz von Item-Werten
Verfasst: 26. Jan 2023 09:01
von Selter
Vielen Dank nochmal - das funktioniert.
vsCode gibt aber trotzdem eine Fehlermeldung:
Code: Alles auswählen
Ambiguous feature call.
The extension methods
postUpdate(Item, Number) in BusEvent and
postUpdate(Item, State) in BusEvent
both match.
Re: Differenz von Item-Werten
Verfasst: 26. Jan 2023 18:20
von udo1toni
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:
Code: Alles auswählen
gasverbrauchHeute.postUpdate(gasZaehler1.deltaSince(now.with(LocalTime.MIDNIGHT)).toString)