Rules Wasseralarm wiederholen

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Pierrecinema
Beiträge: 12
Registriert: 12. Apr 2021 01:15
Answers: 0

Rules Wasseralarm wiederholen

Beitrag von Pierrecinema »

hallo

ich stehe hier etwas auf dem schlauch. ich habe folgende rules für einen wasseralarm , opnehab 4 ist neu für mich und weiss nicht wie weiter.

ih möchte das sich diese rules wiederholt bis das item vom wassersensor wieder auf off geht

Code: Alles auswählen

configuration: {}
triggers:
  - id: "1"
    configuration:
      itemName: Wassermelder_Schlafzimmer_Pidi_TS0207__TZ3000_kstbkt6a_Wasseraustritt
    type: core.ItemStateUpdateTrigger
conditions: []
actions:
  - inputs: {}
    id: "2"
    configuration:
      itemName: HueAlarm
      command: BREATHE
    type: core.ItemCommandAction
  - inputs: {}
    id: "6"
    configuration:
      volume: 100
      sink: chromecast:audiogroup:95bdccfb-2262-42f1-b650-f694a4de5109
      sound: Fenster_regen.mp3
    type: media.PlayAction
was oder wo kann ich eine wiederholung machen bis wassermelder wieder off ist

danke schon mal und danke für das tolle forum das mir schon oft geholfen hat.

Benutzeravatar
udo1toni
Beiträge: 14850
Registriert: 11. Apr 2018 18:05
Answers: 232
Wohnort: Darmstadt

Re: Rules Wasseralarm wiederholen

Beitrag von udo1toni »

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

Pierrecinema
Beiträge: 12
Registriert: 12. Apr 2021 01:15
Answers: 0

Re: Rules Wasseralarm wiederholen

Beitrag von Pierrecinema »

Vielen Dank. Werde es am weekend testen. Sollnich das rule file manuel erstellen und dein Code kopieren oder es bei mir einfügen über die ui

Benutzeravatar
udo1toni
Beiträge: 14850
Registriert: 11. Apr 2018 18:05
Answers: 232
Wohnort: Darmstadt

Re: Rules Wasseralarm wiederholen

Beitrag von udo1toni »

Das kannst Du machen wie Du willst, wichtitg ist nur, dass Du die Syntax korrekt verwendest. Und wie erwähnt, der Timer (so wie ich ihn im Beispielcode verwende) funktioniert nur über die Textkonfiguration. In der UI müsstest Du auf den Private Cache ausweichen, der eventuell momentan (mit der DSL) nicht korrekt funktioniert.
openHAB4.3.0 stable in einem Debian-Container (bookworm) (Proxmox 8.3.1, LXC), mit openHABian eingerichtet

Antworten