Du hast das als Script angelegt?
Sie "saubere" Variante sieht so aus: (als DSL Rule in einer .rules Datei im Verzeichnis /$OPENHAB_CONF/rules/ gespeichert, z.B. meine.rules):
Code: Alles auswählen
// globale Variablen vor der ersten Rule definieren!
var Timer tPhoneAmelie = null
rule "Online Status Amelies iPhone"
when
Item iPhoneAmelieOnline changed // Status geändert
then
tPhoneAmelie?.cancel // Timer abbrechen
if(newState == ON) { // falls neuer Status ON
if(Amelies_iPhone_ATHomeFritz.state != ON) // Falls nicht ON
Amelies_iPhone_ATHomeFritz.postUpdate(ON) // setze ON
} else { // falls neuer Status nicht ON
tPhoneAmelie = createTimer(now.plusMinutes(3), [| // starte Timer (in drei Minuten)
Amelies_iPhone_ATHomeFritz.postUpdate(OFF) // setze OFF
])
}
end
Die Rule triggert jedes Mal, wenn sich der Status von iPhoneAmelieOnline
ändert.
Die Rule bricht zunächst einen eventuell laufenden Timer ab.
Wenn der neue Status ON ist, prüft die Rule, ob der Status des Proxy Items Amelies_iPhone_ATHomeFritz ebenfalls ON ist. Ist das nicht der Fall, setzt es den Status auf ON. (Die zusätzliche Abfrage verhindert, dass ständig unnötige Updates auf das Item erfolgen)
Ist der neue Status nicht ON, so wird ein Timer gestartet, der nach drei Minuten abläuft.
Nach Ablauf der Zeit wird das Proxy Item auf OFF gesetzt.
Sollte sich innerhalb der drei Minuten der Status ändern, so wird die Rule getriggert und bricht den laufenden Timer ab.

Das heißt, das Item muss drei Minuten lang
ununterbrochen auf dem Status OFF sein, erst dann wird die Meldung OFF weitergeleitet.
Statt also darauf zu hoffen, dass der Status zufällig nicht zweimal innerhalb der Minute wechselt (weshalb dann bei der Prüfung OFF erkannt würde), wird zuverlässig jede Änderung erkannt, mit wenig Aufwand.
Leider ist es nicht so einfach, diese Rule über die UI anzulegen, weil sie mit einer globalen Variablen arbeitet, die auch nicht so ohne weiteres ersetzbar ist.
Eine Alternative wäre ein Expiration Timer, den Du als separates Item anlegst. Wechselt das "echte" Item auf OFF, so setzt Du das Expiration Item auf ON. Wechselt das "echte" Item auf ON, so setzt Du das Expiration Item auf OFF.
Wenn die Zeit abläuft, sendet das Expiration Item den Befehl OFF, den Du nun mit einer Rule auswerten kannst, um das Proxy Item auf OFF zu setzen. Du brauchst also drei "simple" UI Rules, statt einer DSL Rule, plus ein Expiration Item statt der globalen Variablen.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet