Die Frage ist, wie das Item definiert ist. Ich vermute jetzt einfach mal frech, dass mqtt_topic_Joshua_joshua1 vom Typ Number ist. Eine einfache Einschränkung wäre dann z.B.:
Code: Alles auswählen
rule "schalt1"
when
Item mqtt_topic_Joshua_joshua1 changed
then
if(Math::abs((mqtt_topic_Joshua_joshua1.state as Number).floatValue -(previousState as Number).floatValue) > 1)
sendTelegram("bot1","Josh: " + mqtt_topic_Joshua_joshua1.state.toString)
end
Nur, wenn der aktuelle Wert vom vorherigen Wert um mehr als 1 abweicht, wird das Telegramm gesendet.
Diese Rule wird zunächst fast sicher eine Exception auslösen, da previousState bei der ersten Änderung null enthält (sollte man abfangen...)
Falls Du eine Nachricht bekommen willst, wenn der Wert
vom letzten Telegramm um mehr als 1 abweicht, musst Du den versendeten Wert speichern, um ihn verleichen zu können:
Code: Alles auswählen
//globale Variablen zu Beginn der Datei definieren!
var Number nJoshua1Sent = -99999
rule "schalt1"
when
Item mqtt_topic_Joshua_joshua1 changed
then
if(Math::abs((mqtt_topic_Joshua_joshua1.state as Number).floatValue - nJoshua1Sent) > 1) {
sendTelegram("bot1","Josh: " + mqtt_topic_Joshua_joshua1.state.toString)
nJoshua1Sent = (mqtt_topic_Joshua_joshua1.state as Number).floatValue
}
end
Die Variable wird mit einem Wert initialisiert, der sicher um mehr als 1 vom gemessenen Wert abweicht. Somit wird auf jeden Fall ein initiales Telegramm gesendet. Wenn der Wert per Telegram verschickt wird, wird auch die Variable mit dem neuen Wert gefüllt.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet