Es braucht dazu nicht unbedingt eine extra Variable
Code: Alles auswählen
rule "Position PKW geändert"
when
Item BMW_220d_Entfernung_von_Zuhause changed // Position geändert
then
var String strMessage = "" // Variable definieren
if(newState < 1|km && previousState >= 1|km) { // neuer Wert unter 1 km, alter Wert über 1 km
strMessage = "BMW kommt an"
}
if(newState > 1|km && previousState <= 1|km) { // neuer Wert über 1 km, alter Wert unter 1 km
strMessage = "BMW fährt weg"
}
if(strMessage == "") { // keine Meldung vorhanden
logDebug("distance","KEINE Meldung (Änderung von {} zu {})",previousState,newState)
return;
}
logDebug("distance","Meldung: {} (Änderung von {} zu {})",strMessage,previousState,newState)
val telegramAction = getActions("telegram","telegram:telegramBot:<uid>")
telegramAction.sendTelegram(strMessage)
}
end
Im großen und Ganzen macht der Code das gleiche

wie gesagt ohne extra Variable. In Rules, die mit changed getriggert wurden, gibt es zwei implizite Variablen, previousState und newState, die, wie der Name schon nahelegt, den alten sowie den neuen Status enthalten.
Wenn das Item BMW_220d_Entfernung_von_Zuhause vom Typ Number:Length ist, so kann man bequem mit QuantityType arbeiten, also statt 1000|m auch 1|km schreiben.
Die Logzeile wird nur ausgegeben, wenn der Logger
org.openhab.core.model.script.distance auf DEBUG gesetzt wird.
Die Logzeilen sind bei der Fehlersuche hilfreich, man kann sie natürlich auch weg lassen
Die Rule setzt stillschweigend voraus, dass sowohl der alte als auch der neue Status ein gültiger QuantityType Wert ist.
Bei der ersten Änderung nach einem Neustart kann es deshalb eine Fehlermeldung geben, weil eben einer der beiden Werte ungültig ist, genauso kann der Sensor (also der mit dem Item verknüpfte Channel, der die Entfernung vom Standort liefert) das Item auf einen ungültigen Wert setzen.
Beide Situationen kann man abfangen, z.B. so:
Code: Alles auswählen
if(!(newState instanceof QuantityType<Length>)) {// Fehlermeldung}
Die Frage ist allerdings, was dann passieren soll

openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet