Label in virtuellem Modul

Hallo,

ich hab ein virtuelles Modul in dem die Temperatur eines Sensors mit zwei Nachkommastellen ausgegeben werden soll.
Dazu habe ich ein Label “Temperatur” erzeugt und möchte den Value setzen.
Ich habe vieles am Möglichkeiten probiert, aber es wird immer die Float Darstellung mit 15 Nachkommastellen ausgegeben.

– ID des virtuelles Moduls
local vDeviceID = fibaro:getSelfId()

– ID des Temperatursensors
local Temp_ID = 54

– numerische Temperatur
local Temp = tonumber(fibaro:getValue(Temp_ID,‘value’))

– string Temperatur
local sTemp = tostring(fibaro:getValue(Temp_ID,‘value’))

– Verschiedene Versuche -> Ziel Darstellung mit 2 Nachkommastellen
fibaro:call(vDeviceID, “setProperty”, “ui.Label1.value”, sTemp) – Temperatur: 21.560000000001

fibaro:call(vDeviceID, “setProperty”, “ui.Label1.value”, string.sub(sTemp,1,5)) – Temperatur: 21.560000000001

fibaro:call(vDeviceID, “setProperty”, “ui.Label1.value”, string.format("%2.2f" Temp)) – Temperatur: 21.560000000001

fibaro:debug("Temperatur: " … sTemp) gibt automatisch mit 2 Nachkommastellen aus.

Hat jemand eine Idee wie das funktionieren könnte?

Gruß Olaf

ich hab eine Lösung gefunden.

Es sieht so aus dass die Funktion

fibaro:call(vDeviceID, “setProperty”, “ui.Label1.value”, sTemp)

versucht sTemp in einen numerischen Wert zu wandeln, wenn das klappt wird der lange numerische Wert dargestellt.

Ein Workarround ist einen String zu erzeugen in dem der Punkt durch ein Komma ersetzt wird.
Dann funktioniert die interne Wandlung nicht und man kann den String auf zwei Nachkommastellen kürzen.

local Temp = tonumber(fibaro:getValue(Temp_ID,‘value’))
local sTemp = string.sub(string.gsub(Temp,"%.",","),1,5)
fibaro:call(vDeviceID, “setProperty”, “ui.Label1.value”, sTemp) — Temperatur: 21,56

P.S. Wie kann man denn den Code in dieser formatierten Darstellung einbinden?