So wird die Rule nicht funktionieren.
Punkt 1: sie triggert bei jedem Update. Du möchtest stattdessen einen Alarm, wenn Wasseraustritt gemeldet wird, also mutmaßlich bei ON (oder evtl. CLOSED, je nachdem, wie der Sensor funktioniert)
Und dann möchtest Du aus verständlichen Gründen, dass der Alarm so lange aktiv gemeldet wird, bis kein Wasseraustritt mehr registriert wird. Das heißt, Du musst das Audio als Loop spielen oder alternativ über einen Timer immer wieder ausspielen lassen.
Es ist dazu vermutlich notwendig, "richtigen" Code zu schreiben, z.B. so:
Code: Alles auswählen
var Timer tWaterAlarm = null
rule "Wasseraustritt melden"
when
Item Wassermelder_Schlafzimmer_Pidi_TS0207__TZ3000_kstbkt6a_Wasseraustritt received update
then
if(newState == ON && tWaterAlarm === null)
tWaterAlarm = createTimer(now.plusSeconds(1),[|
val strSink = "chromecast:audiogroup:95bdccfb-2262-42f1-b650-f694a4de5109"
val strSound = "Fenster_regen.mp3"
val intVolume = new PercentType(100)
playSound(strSink,strSound,intVolume)
tWaterAlarm.reschedule(now.plusSeconds(60)) // minütlich wiederholen
]
else if(newState == OFF) {
tWaterAlarm?.cancel
tWaterAlarm = null
}
end
Ich gehe hier davon aus, dass Wassermelder_Schlafzimmer_Pidi_TS0207__TZ3000_kstbkt6a_Wasseraustritt ein Switch Item ist (Werte ON/OFF).
Wird der Zustand ON gemeldet (und es läuft gerade kein Timer) so wird ein Timer generiert, der nach einer Sekunde die playSound Action ausführt. Sobald der Timer Code ausgeführt wird (also zum ersten Mal nach einer Sekunde) wird außerdem der Timer erneut aktiviert, diesmal nach einer Minute. Das Audio wird also einmal pro Minute abgespielt.
Wird der Zustand OFF gemeldet, so wird ein bestehender Timer abgebrochen und anschließend der Zeiger auf den Timer gelöscht.
Das Ganze geht auch mit anderen Scriptsprachen und auch über die UI, allerdings muss man hier dann den private Cache verwenden, da gibt es in der aktuellen Version von openHAB wohl einen Issue.
openHAB4.3.0 stable in einem Debian-Container (bookworm) (Proxmox 8.3.1, LXC), mit openHABian eingerichtet