Konvertierungsfehler Float Dezimaltyp

Moderator: seppy

Antworten
kaloschke
Beiträge: 193
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: 193
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: 15623
Registriert: 11. Apr 2018 18:05
Answers: 253
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.
openHAB5.1.2 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox VE 9.1.5 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte

Antworten