Seite 1 von 1

Keine Nachkommestelle

Verfasst: 27. Mär 2021 18:53
von thissiac
Ich weiß nicht warum es nicht mehr funktioniert (ich schwöre .. es hat), aber meine Shelly Bulb verträgt den MQTT Befehl

shellies/ShellyBulbDuo-D0C9FD/light/0/set

{ "turn":"on" "brightness":70.0 }

nicht mehr. Die Bulb geht zwar an, aber sehr dunkel. Sie mag "brightness":70.0 nicht mehr. Auch ein manueller Befehl hat nix gebracht. Nun stelle ich mit erstaunen fest, dass 70.0 nicht mehr funktioniert, wobei 70 klappt. Ok .... irgendwas ist bei irgendeinem Update anders als vorher. Also im Openhab die Nachkommastelle weg machen. Den gewünschten Helligkeitswert kann ich in der Sitemap.item bestimmen. Das zugehörige ITEM sieht so aus:

Gloab.item

Code: Alles auswählen

Number vHelligkeitLimit_KG_R4_L1        "KG Helligkeit Kellerraum 1"                <tod>
Sitemap.item

Code: Alles auswählen

Setpoint item=vHelligkeitLimit_KG_R4_L1         label="KG R4L1 [%.0f %%]"         minValue=0 maxValue=100 step=10                   //default:80
Was auch immer ich anstelle, im Item wird an jeder Zahl ein ".0" angehangen. Also 70.0, 80.0, usw..
In der Sitemap wird auch richtig 70%, 80%, usw. angezeigt. Intern hängt immer eine Null dran und wird auch so an übergeben.


Test.rule

Code: Alles auswählen

var jsonString = "{ "
jsonString = jsonString + "\"turn\":" + "\"on\""
jsonString = jsonString + " \"brightness\":" + vHelligkeitLimit_KG_R4_L1.state //"100"
jsonString = jsonString + " }"

KG_Keller_Licht_01_Set.sendCommand(jsonString)

Gesendet wird der Befehl .... siehe oben.

Warum ist das so?

Dachte mit [%.0f %%] ist geklärt, dass keine Nachkommastelle existieren darf. :?

Re: Keine Nachkommestelle

Verfasst: 27. Mär 2021 21:18
von udo1toni
Formatierungen am Label haben keine Auswirkungen auf den gespeicherten Wert. Wenn, dann musst Du den Wert selbst formatiert verwenden. es gibt hier verschiedene Möglichkeiten, z.B.

Code: Alles auswählen

var jsonString = "{ \"turn\":" + "\"on\" \"brightness\":"
jsonString = jsonString + (vHelligkeitLimit_KG_R4_L1.state as Number).intValue.toString + " }" //"100"

KG_Keller_Licht_01_Set.sendCommand(jsonString)
Wobei ich erwarten würde, dass nach dem wert für turn (also on) zunächst ein Komma steht, also so:

Code: Alles auswählen

var jsonString = "{ \"turn\":" + "\"on\", \"brightness\":"
jsonString = jsonString + (vHelligkeitLimit_KG_R4_L1.state as Number).intValue.toString + " }" //"100"

KG_Keller_Licht_01_Set.sendCommand(jsonString)
denn ohne das Komma ist das kein gültiges json.

Re: Keine Nachkommestelle

Verfasst: 27. Mär 2021 22:33
von thissiac
Wahnsinn!

Ich hab überall gesucht. Den Wert zu formatieren habe ich nicht auf dem Schirm gehabt.

Klappt auf Anhieb.

Hab noch aus 2 Zeilen 1 gemacht.

Danke für deine Unterstützung :)

Re: Keine Nachkommestelle

Verfasst: 29. Mär 2021 06:11
von udo1toni
Gerne :)