Du definierst vier Variablen global.
Bei der ersten Variable wäre es vermutlich geschickter, Boolean statt boolean zu nehmen (sollte auch funktionieren, erbt dann aber auch die zugehörigen Methoden)
Bei der zweiten Variablen musst Du zwingend den Typ mit angeben, nämlich Timer. Hier ist wichtig, die groß geschriebene Variante zu nehmen.
Bei der dritten und vierten Variablen böte es sich an, ebenfalls den Typ (Number) mit anzugeben. Allerdings musst Du dann bei der Zuweisung prüfen, ob der Typ auch tatsächlich vom Typ Number ist.
Innerhalb der Rule definierst Du die Variablen nochmals (Schlüsselwort var), das dürfte allein schon für eine Fehlermeldung sorgen (vielleicht ignoriert openHAB das gnädigerweise).
Wenn Du die Variablen sauber definierst, dürfte openHAB auch keine Probleme mehr haben, zu erraten, welchen Typ Du nun verwendest.
Dein boolean brauchst Du übrigens nicht, da Du ohnehin einen Timer verwendest:
Code: Alles auswählen
var Timer tSauna = null
rule "Sauna Temp erreicht"
when
Item Sauna_Temp changed
then
var Number StateTemp = -300
var Number StateSoll = -300
if(Sauna_Temp.state instanceof Number)
StateTemp = Sauna_Temp.state as Number
else
logWarn("sauna","Temperaturfühler liefert keinen Wert!")
if(Sauna_Soll_Setpoint.state instanceof Number)
StateSoll = Sauna_Soll_Setpoint.state as Number
else
logWarn("sauna","Kein Sollwert gesetzt!")
if(tSauna === null && StateTemp >0 && StateSoll > 0 && StateTemp >= StateSoll) {
logInfo("sauna", "Sauna: Soll Temperatur erreicht. ")
sendTelegram("bot1", "Sauna: Soll Temperatur erreicht. Sauna Temp: %s °C", StateTemp)
sendNotification("xxxx@xxxx.de", "Sauna: Soll Temperatur erreicht.")
sendNotification("xxx@xxx.net", "Sauna: Soll Temperatur erreicht.")
tSauna = createTimer(now.plusMinutes(5)) [|
tSauna = null
]
}
end
Die beiden Variablen werden vermutlich nur innerhalb der Rule benötigt, es reicht also, sie innerhalb der Rule zu definieren.
tSauna ist als Name für den Timer besser als timer

zu groß ist die Gefahr, diesen Namen an anderer Stelle einzubauen.
Falls eines der beiden Items keine gültige Zahl enthält, wird nun eine Warnung ausgegeben, anstatt eines Errors.
Wenn beide Items Zahlen enthalten, werden sie in die Variablen übernommen. Die letzte if-Anweisung kann einfach alle Vergleiche ausführen, da beide Variablen sicher eine Zahl enthalten und tSauna nur auf null geprüft wird (die drei = sind in diesem Fall korrekt!)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet