Konvertierungsfehler Float Dezimaltyp

Moderator: seppy

Antworten
kaloschke
Beiträge: 177
Registriert: 29. Jan 2019 07:20
Answers: 0

Konvertierungsfehler Float Dezimaltyp

Beitrag von kaloschke »

Hallo,

ich möchte meine EVO-Thermostaten in einer Rule steuern, erhalte dabei aber folgende Warnung:

Code: Alles auswählen

HomematicThingHandler] - Can't convert type DecimalType with value '21.0' to FLOAT value with QuantityTypeConverter for '002A9D89AF9ACC:1#SET_POINT_TEMPERATURE', please check the item type and the commands in your scripts
Ich habe eine Item

Code: Alles auswählen

Number TempTarget     {channel="homematic:HmIP-eTRV-E:27debe8d89:002A9D89AF9ACC:1#SET_POINT_TEMPERATURE", unit="°C"}
und in meiner Rule steht

Code: Alles auswählen

rule "Heizung Update"
    when 
        Item TempTarget changed
    then
        val tempVal = (TempTarget.state as Number)
        if (tempVal < 20) { ...  }
end
Dezimaltyp, Float, Number, ... Da gibt's so viel :cry:

Viele Grüße

kaloschke
Beiträge: 177
Registriert: 29. Jan 2019 07:20
Answers: 0

Re: Konvertierungsfehler Float Dezimaltyp

Beitrag von kaloschke »

Oh. Sehe gerade, dass es schon hier behandelt wurde.

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

Re: Konvertierungsfehler Float Dezimaltyp

Beitrag von udo1toni »

Number Items haben keine Unit :)

Du musst das Item stattdessen als Number:Temperature definieren:

Code: Alles auswählen

Number:Temperature TempTarget     {channel="homematic:HmIP-eTRV-E:27debe8d89:002A9D89AF9ACC:1#SET_POINT_TEMPERATURE", unit="°C", stateDecription=""[pattern="%.1f °C"]}
Das Pattern wird für die Anzeige in Main UI und Basic UI genutzt.

Die Rule muss nun leider auch die Unit berücksichtigen, z.B. indem die Unit gestrippt wird:

Code: Alles auswählen

rule "Heizung Update"
    when 
        Item TempTarget changed
    then
        val tempVal = (TempTarget.state as Number).floatValue
        if (tempVal < 20) { ...  }
end
.floatValue entfernt alles, was keine Zahl ist aus dem Status, bevor es den Status in der Variablen abspeichert.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten