Value eines Items anpassen ohne rule

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
HappyDexter
Beiträge: 36
Registriert: 17. Sep 2020 15:03
Answers: 0

Value eines Items anpassen ohne rule

Beitrag von HappyDexter »

Hallo zusammen,
ich habe eigentlich nur eine kleine Anforderung, breche mir aber gerade einen ab und bin schon lange am suchen, finde aber nicht das passende!

Ich bekomme von meine Photvoltaikanlage den Wert der aktuellen Leistung in Watt, also sowas wie "4630" Ich habe jetzt schon zwei Items angelegt, das eine für eine ordentliche ANzeige als Number:Power und eins für weitere Berechnungen in Rules als Number

Code: Alles auswählen

Number:Power			E3DC_PVPower				"PV Leistung"	
Number				E3DC_PVLeistung			"PV Leistung"	
Jetzt hätte ich als drittes gerne noch ein Item in kw, also muss aus dem Value "4630" ein "4,63" werden. Wie kann ich sowas realisieren, ohne eine Rule alle 5 Sekunden laufen lassen zu müssen, die die PVLeistung/1000 teilt? Habe schon in den Metadaten des Items rumgespielt, aber der Pattern kann es mir zwar von der Anzeige formatieren, aber nicht umrechnen!

Habt ihr ein Tip für mich?

Schöne Grüße
Happy

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

Re: Value eines Items anpassen ohne rule

Beitrag von udo1toni »

Du brauchst nur ein einziges Item, nämlich dieses: E3DC_PVPower

Ich gehe davon aus, dass der Wert korrekt mit der Einheit W übergeben wird.
Nun hast Du direkt die Wahl, in welcher Einheit Du im Item den Wert gespeichert haben möchtest.
Aber Obacht! Die Entscheidung sollte einmalig getroffen und danach nicht mehr geändert werden.
Diese Einheit legst Du über die Metadaten des Items fest, und dort über den Parameter unit.

Setze unit z.B. auf kW, so wird der Wert in kW gespeichert. Du könntest auch W, mW, MW oder gar GW angeben :) und openHAB wird - ohne irgendwelche Verrenkungen - den Wert korrekt in MilliWatt, Watt, MegaWatt oder GigaWatt speichern.
Die unit bestimmt auch, in welcher Einheit der Wert in der Analyze Ansicht angezeigt und in der Persistence allgemein gespeichert wird.

Die Anzeige kannst Du ebenfalls mittels Metadaten steuern, und zwar über State Description -> Pattern. Dort trägst Du dann z.B. %.2f kW ein, um eine Anzeige der Form 1,23 kW für den Eingangswert 1234 W zu erhalten. Gespeichert wird der Wert dabei dennoch in der Einheit, die Du gewählt hast, ohne Verlust von Nachkommastellen.

Innerhalb von Rules möchtest Du evtl. den nackten Zahlenwert verwenden, also ohne Einheit. Dazu castest Du dann den Wert nach Number und wendest .floatValue an:

Code: Alles auswählen

(E3DC_PVPower.state as Number).floatValue
und auch hier dran denken: der Status enthält den Zahlenwert in dem Format, der über unit angegeben wurde, also bei unit dW z.B. 12340 dW für 1234 W Eingangswert. (dW = DeziWatt, eher unüblich, aber sei's drum...)

Ganz allgemein kann man sagen, dass UoM (Units of Measurement) bzw. QuantityType als Datentyp eine extrem mächtige Funktion von openHAB darstellt. Funktioniert z.B. auch, um aus d°C einfach °F oder K abzuleiten - ganz ohne Rules...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

HappyDexter
Beiträge: 36
Registriert: 17. Sep 2020 15:03
Answers: 0

Re: Value eines Items anpassen ohne rule

Beitrag von HappyDexter »

Dank Dir für die Aufklärung, wieder was gelernt. Ich habe es jetzt entsprechend eingerichtet. Mal abwarten, wenn Morgen dann Strom vom Dach kommt, wie es aussieht.

EDIT: Und es funktioniert einwandfrei. Dank Dir vielmals.

Antworten