Seite 2 von 2

Re: Items runden...

Verfasst: 27. Nov 2020 16:58
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. ;)

Re: Items runden...

Verfasst: 27. Nov 2020 18:13
von harteknut
Danke, ich leg gleich los...!