Differenz von Item-Werten

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Selter
Beiträge: 59
Registriert: 9. Mär 2018 16:06

Re: Differenz von Item-Werten

Beitrag 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
openHAB 3.2 in einer Debian-VM mit openHABian unter Proxmox 6.4-13 auf Intel NUC 5i3ryh

int5749
Beiträge: 1161
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: Differenz von Item-Werten

Beitrag 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
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

Benutzeravatar
udo1toni
Beiträge: 13864
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Differenz von Item-Werten

Beitrag von udo1toni »

Jepp, das ist ein reserviertes Schlüsselwort. Passiert...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Selter
Beiträge: 59
Registriert: 9. Mär 2018 16:06

Re: Differenz von Item-Werten

Beitrag 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]"
openHAB 3.2 in einer Debian-VM mit openHABian unter Proxmox 6.4-13 auf Intel NUC 5i3ryh

Benutzeravatar
udo1toni
Beiträge: 13864
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Differenz von Item-Werten

Beitrag 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")
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Selter
Beiträge: 59
Registriert: 9. Mär 2018 16:06

Re: Differenz von Item-Werten

Beitrag 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.
openHAB 3.2 in einer Debian-VM mit openHABian unter Proxmox 6.4-13 auf Intel NUC 5i3ryh

Benutzeravatar
udo1toni
Beiträge: 13864
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Differenz von Item-Werten

Beitrag 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)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten