Die Warnmeldung ist in der Regel selbst codiert und völlig korrekt.
Man kann diese Regel nicht händisch starten, weil sie auf dem Trigger changed beruht und auch von den impliziten Variablen Gebrauch macht.
Du kannst natürlich newState mit itemname.state ersetzen, das nutzt Dir aber im Zusammenhang mit previousState nichts, denn auch dies steht nur im changed-Kontext zur Verfügung, aber im Gegensatz zu newState gibt es keinen Ersatz - es sei denn, Du hast das Item persistiert, dann könntest Du Itemname.previousState verwenden. Das sähe dann so aus:
Code: Alles auswählen
rule "Sauna Temperatur 85 Grad"
when
Item Sauna_Temperatur changed
then
if(!(Sauna_Temperatur.state instanceof Number)) { // Falls aktuell kein gültiger Wert
logWarn("SaunaTemperatur", "Sensor Item liefert keinen gültigen Zahlenwert. Abbruch!") // Meldung
return; // und Abbruch
}
val newTemp = (Sauna_Temperatur.state as Number).floatValue // übernimm Wert ohne Einheit
var oldTemp = 20.1 // erzwinge eine Variable vom Typ Float
if(!(Sauna_Temperatur.previousState.state instanceof Number)) { // falls alter Wert ungültig
logInfo("SaunaTemperatur", "Vorgängerwert ungültig. Setze Wert unter Grenzwert!") // Meldung
oldTemp = 80 // und default Wert setzen
} else // falls alter Wert gültig
oldTemp = (Sauna_Temperatur.previousState.state as Number).floatValue // übernimm diesen ohne Einheit
if(oldTemp <= 85 && newTemp > 85) { // falls Temperatur gerade über 85 gestiegen
logInfo("SaunaTemperatur", "Die Sauna Temperatur ist ueber 85 Grad") // Meldung
Meldung.postUpdate("Die Sauna hat die Temperatur von 85 Grad ereicht")
}
end
Allerdings ist es eher witzlos, die Rule so zu starten, denn sie wird niemals etwas tun (es sei denn, Du startest sie in dem Moment von Hand, wo sie ohnehin durch den Trigger gestartet wurde und den Kipppunkt <=85 -> > 85 detektiert.
openHAB5.0.3 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox 9.1.2 - 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