Moins!
Nachdem ich schon mit @horschte drüber geschrieben habe, hier noch mal als eigener Thread.
Das Problem:
Durch die Xiaomi Temperatursensoren werden Werte wie 23.333333 an OH2 übergeben. Will ich diese Werte per Alexa ansagen lassen liest mir die gute alle Nachkommastellen vor. Anfangs lustig, dann nur noch nervig.
Daher eine Regel zusammengebastelt um den Wert auf 2 Stellen zu runden, Resultat wie folgt:
rule "Temp Wohnzimmer runden"
when
Item Xiaomi_1_Temperature changed
then
val dummy = (Xiaomi_1_Temperature.state as DecimalType).floatValue() *100
dummy = Math::round(dummy)
dummy = dummy / 100
postUpdate(Xiaomi_1_Temp_Dummy, dummy)
logInfo("TempConvert.rules", "Sensor1: " + Xiaomi_1_Temperature.state + " >>> " + Xiaomi_1_Temp_Dummy.state)
end
Jetzt noch ein Item anlegen womit Alexa was anfangen kann:
Number Xiaomi_1_Temp_Dummy "Temperatur Wohnzimmer [%.1f °C]" temperature> [ "CurrentTemperature" ]
Das ganze funktioniert zwar, ist aber code-technisch nicht schön. Ich hab versucht das in eine Zeile zu packen aber trotz Verwendung unzähliger Klammern kam immer nur der ganzzahlige Wert raus. Keine Ahnung warum.
Daher halt jeder Schritt einzeln. Vielleicht kann das jemand der mit JS fit genug ist noch optimieren. Ansonsten kann das so genutzt werden.
Wenn man, wie ich, mehrere Sensoren verwendet bietet sich eigentlich an daraus eine Funktion zu machen und dann pro Sensor nur ein Mal den Wert zum Umrechnen wegzuschicken. Leider hab ich da nicht genug Ahnung von JS.