Items runden...

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

Re: Items runden...

Beitrag von udo1toni »

Seltsam, dass der Formatter an dieser Stelle keine Units unterstützt, in Labels geht es ja auch (und dort wird meines Wissens der gleiche Formatter verwendet. Aber vielleicht wird die Funktion vorher überladen, wer weiß...)

Damit Du dennoch die Einheit bekommst, kannst Du natürlich die Einheit "manuell" mit in den String schreiben:

Code: Alles auswählen

val T_akt = String::format("%.1f °C",(OWMLocalWeatherAndForecastCurrentApparentTemperature.state as QuantityType<Number>).floatValue)
Es gibt natürlich immer noch ein potenzielles Problem, nämlich, wenn das Item keinen gültigen Wert enthält. Deshalb ist es anzuraten, über eine lokale Konstante zu gehen:

Code: Alles auswählen

var Number nTemp = -274
if(OWMLocalWeatherAndForecastCurrentApparentTemperature.state instanceof Number)
    nTemp = OWMLocalWeatherAndForecastCurrentApparentTemperature.state as QuantityType<Number>).floatValue
var String T_akt = ""
if(nTemp > -274)
    T_akt = String::format("%.1f °C",nTemp)
else
    T_akt = "- °C"
Beim Umweg über die Variable nTemp sollte es definitiv auch ohne QuantityType gehen (also nur mit as Number).
Der Punkt ist aber natürlich ein anderer. Liefert der Sensor (bzw. hier openWeatherMap) mal keinen Wert, so bricht die Rule nicht mit einer nullPointerException ab, sondern malt einen hübschen Strich statt des Wertes. ;)
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

harteknut
Beiträge: 235
Registriert: 3. Dez 2019 08:21
Answers: 9

Re: Items runden...

Beitrag von harteknut »

Danke, ich leg gleich los...!

Antworten