Strom Wert Berechnen Openhab rule

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
cwieser111
Beiträge: 9
Registriert: 30. Apr 2021 06:33
Answers: 0

Strom Wert Berechnen Openhab rule

Beitrag von cwieser111 »

GUten Morgen

Ich habe schon sehr viel probiert, ich komme nicht dahinter was falsch ist.
Lese ber JSON einen Werte aus, der auch funktioniert und angezeigt wird im Habpanel
Wert ist eine ganze Zahl
140840
diese möchte ich auf eine Komme Stelle formatieren 14084,0 (weis nicht wie ich das machen sollte)

//Wert auslesen 140840 //
Number VoltoPlus_Bezug "Bezug [%.1f KWh]" {http="<[voltoPlus:10000:JSONPATH(.[?(@.id==\"fwdEn\")].value)]"}
Number Wert

Möchte dann in den item Number "Wert" eine Berechnung machen wobei der Wert 14083.8 ein fixer wert ist von wo ausgegangen wird.
Das rule funktioniert nicht

rule "calculate Wert"
when
Time cron "0 0/1 * * * ?" // every minute
then
Wert1.postUpdate(((VoltoPlus_Bezug.state as Number)*(0.1)).intValue)
Wert.postUpdate(((14083.6)-(Wert1.state as Number)).intValue)

end

Bei Wert1 wird die Zahl auf 14084 geändert aber nicht so wie ich möchte 14084.0

ich finde nicht heraus was das falsch ist, über eure geschätzte Info wäre ich dankbar.

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

Re: Strom Wert Berechnen Openhab rule

Beitrag von udo1toni »

Du bist noch mit OH2 unterwegs? Dann solltest Du das (leicht abweichend) ungefähr so machen. Ich gehe davon aus, dass Wert1 ebenfalls ein Number Item ist. Dann sollte das funktionieren:

Code: Alles auswählen

rule "calculate Wert"
when
    //Time cron "0 0/1 * * * ?" // every minute
    VoltoPlus_Bezug changed // solange es nicht um exakte Zeitfenster geht, ist es besser, auf changed zu triggern
then
    val Number nVal = if(VoltoPlus_Bezug.state instanceof Number)(VoltoPlus_Bezug.state as Number) else 0
    Wert1.postUpdate(nVal / 10)
    Wert.postUpdate(14083.6 - nVal)
end
.intValue rechnet den Wert in Integer um. Wenn Du einen Wert in ein Item speicherst und unmittelbar darauf den Wert dieses Items verwendest, hast Du eine gute Chance, den alten Wert zu bekommen, denn postUpdate wird asynchron ausgeführt (wie sendCommand auch)
Wenn der Wert ohne Nachkommastellen angezeigt wird, kann es sein, dass Du die Formatierung anpassen musst, so: "[%.1f]" für eine Nachkommastelle.
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

cwieser111
Beiträge: 9
Registriert: 30. Apr 2021 06:33
Answers: 0

Re: Strom Wert Berechnen Openhab rule

Beitrag von cwieser111 »

Danke Udo1toni
Es hat funktioniert!!
Auf sie ist Verlass, danke für ihre Mühe und Zeit, auf diese Schreibweise wäre ich nicht gekommen.
Das heist wenn ich mal auf Openhab 3 umsteige funktionieren die rules nicht mehr. / Keine gute Nachricht

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

Re: Strom Wert Berechnen Openhab rule

Beitrag von udo1toni »

cwieser111 hat geschrieben: 2. Mai 2021 15:38 Das heist wenn ich mal auf Openhab 3 umsteige funktionieren die rules nicht mehr. / Keine gute Nachricht
Nein, das kann man so nicht sagen. Es gibt halt Unterschiede zwischen OH2 und OH3, hauptsächlich kann man das an Time-Ausdrücken festmachen. openHAB2 verwendet joda Time, während openHAB3 JavaTime verwendet. Zur Erklärung: joda Time ist eine Bibliothek, die komfortbels Arbeiten mit Zeit und Datum ermöglicht. Sie wurde geschrieben, weil Java dafür keine Funktionen bereit hielt (bis einschließlich Java7, wenn ich es richtig im Kopf habe). Jetzt sind aber ähnliche Funktionen in Java mit dabei, so dass allgemein empfohlen wird, joda nicht mehr zu verwenden, sondern die native Lösung zu bevorzugen. openHAB3 setzt auf Java11 auf, entsprechend wurde joda Time durch JavaTime ersetzt.

Ansonsten sollten Rules weitgehend genauso funktionieren, und auch bei Time-Ausdrücken müssen lediglich Anpassungen vorgenommen werden.

Es gibt einen großen Unterschied im Verhalten, openHAB vor openHAB3 nutzt 5 + 2 Threads für die Rules, wobei eine Rule einen Thread in dem Moment belegt, wo sie getriggert wird. Dieselbe Rule kann beliebig oft (auch zeitgleich!) getriggert werden und wird dann auch parallel ausgeführt. In openHAB3 bekommt jede Rule exakt einen eigenen Thread, damit ist sichergestellt, dass jede Rule zum Zug kommt, wenn sie triggert. Dafür wird die Rule aber auch niemals parallel ausgeführt (was bei vielen Anwendern ohnehin nur für Verwirrung sorgt).
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Antworten