Ich würde gerne in einer If-Abfrage einer rule zwei Temperaturwerte vergleichen um den Boost-Mode zu starten, aber irgendwie bekomme ich immer folgende Fehlermeldung bei "HM_KZ1_SetTemp.state" in VSC "Type mismatch: cannot convert from State to Number(org.eclipse.xtext.xbase.validation.IssueCodes.incompatible_types)" .
Beide Items sind vom Typ NUMBER.
rule "PräsenzBoost"
when
Item grpFB_Praesenz changed
then
if ((HM_KZ1_Fenster.state == "CLOSED") && (HM_KZ1_ActTemp.state > HM_KZ1_SetTemp.state)) {
HM_KZ1_BoostMode.sendCommand(ON)
}
end
wenn ich es über den Weg einer Variablen löse, funktioniert es.
var Number vSetTemp_KZ1
rule "PräsenzBoost"
when
Item grpFB_Praesenz changed
then
vSetTemp_KZ1 = (HM_KZ1_SetTemp.state as DecimalType)
if ((HM_KZ1_Fenster.state == "CLOSED") && (HM_KZ1_ActTemp.state > vSetTemp_KZ1)) {
HM_KZ1_BoostMode.sendCommand(ON)
}
end
Kann mir einer Erklären warum es nicht direkt mit den zwei Item.states funktioniert?
Grundsätzlich ist ein Status ein Status. Wenn Du einen Status, der numerisch interpretierbar ist, mit einem numerischen Wert vergleichst, kann es sein, dass openHAB gnädig den Status als Zahl interpretiert. Gewöhnlich muss man aber den Typ explizit angeben. Dein Vergleich muss also so aussehen:
if (HM_KZ1_Fenster.state == CLOSED && (HM_KZ1_ActTemp.state as Number) > (HM_KZ1_SetTemp.state as Number)) {
Wenn HM_KZ1 als Contact Item definiert ist, ist der Status ein OpenClosedType, also keine Anführungszeichen. Da hier nur eine einfache Bool'sche Verknüpfung stattfindet, sind auch diese Klammern unnötig. Dafür braucht es aber die um das Typecasting nach Number.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
Guten morgen,
- der Temperaturvergleich (Item.state as Number) hat funktioniert !!!
- der Fensterstatus wird bei HomeMatic wird als String definiert! ohne die Anführungszeichen funktioniert es nicht.
Die Frage ist aber nicht, wie es in Homematic definiert ist sondern, was Du für ein Item verwendest. Falls ein Contact Item nicht funktioniert, passt es natürlich nur mit dem String.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet