Regel Benachrichtigung wenn Fenster offen

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
wighdeas
Beiträge: 26
Registriert: 30. Dez 2019 18:01
Answers: 1

Regel Benachrichtigung wenn Fenster offen

Beitrag von wighdeas »

Hallo zusammen,

ich bin gerade dabei mir aus den Foren-Themen eine Notification zusammenzubauen.

Ziel: Benachrichtigung wenn Fenster im Badezimmer
- entweder nach 5 Minuten (nach dem Duschen/Baden)
- oder wenn die Relative Luftfeuchtigkeit* auf einen bestimmten Wert gesunken ist, z.B. 45%
immer noch geöffnet ist.

*

Code: Alles auswählen

Number:Dimensionless   FussbodenheizungBadezimmer1HUMIDITY     
Was ich bisher erfolgreich geschafft habe (oder besser gesagt, mir hier rauskopiert und abgeändert :D ):

Code: Alles auswählen

var Timer WindowTimer = null

rule "Fenster Badezimmer Status"
when
    Item FensterBadezimmer1STATE changed
then
    if(FensterBadezimmer1STATE.state != OPEN) {
        WindowTimer = createTimer(now.plusSeconds(300), [ |
            sendTelegram("paevbot", "Das Fenster im Bad ist noch offen!")   
        ])
    } else { 
        if(WindowTimer !== null) {
            WindowTimer.cancel 
            WindowTimer = null 
            sendTelegram("paevbot", "Das Fenster im Bad ist geschlossen!")   
        }
    }
end
nun meine Frage - wie bekomme ich die "Luftfechte"-Komponente hier noch mit rein?

Danke im Voraus!
Openhabian/Openhab 2.4.0.
RasPi4 4B
HomeMaticIP (CCU3, Firmware 3.51.6)
Dezcon-Zigbee-Adapter

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

Re: Regel Benachrichtigung wenn Fenster offen

Beitrag von udo1toni »

Vermutlich wäre es das einfachste, eine zweite Rule dafür anzulegen:

Code: Alles auswählen

// Globale Variablen und Konstanten zu Beginn der Datei definieren!
val Number nHumGrenz = 45                                                           // Grenzwert für Luftfeuchte

rule "Luftfeuchte"
when
    Item FussbodenheizungBadezimmer1HUMIDITY changed
then
    if(!(previousState instanceof Number)) return;
    if(!(newState instanceof Number)) return;                                        // geht erst ab OH 2.5, sonst statt newState FussbodenheizungBadezimmer1HUMIDITY.state
    val Number nFeucht = (newState as Number).floatValue                             // evtl. gehts auch ohne .floatValue
    if(((previousState as Number).floatValue > nHumGrenz) && nFeucht <= nHumGrenz) {
        if(FensterBadezimmer1STATE.state != OPEN) {                                  // sicher, dass die Richtung stimmt? Ich würde hier ein == erwarten...
            sendTelegram("paevbot", "Das Fenster im Bad ist noch offen, aber die Luftfeuchte ist auf "+nFeucht.toString+"% gesunken!")
            WindowTimer?.cancel
        }
    }
end
Die Kommentare sind nur Erläuterung bzw. Fragen ;) das kann also auch weg gelassen werden.
Funktionsweise: Wenn sich der Sensorwert geändert hat, prüft die Rule, ob der alte Sensorwert über dem Grenzwert lag und der neue Sensorwert unter dem Grenzwert liegt (oder gleich dem Grenzwert ist). Ist das der Fall, prüft die Rule, ob das Fenster geöffnet ist und sendet gegebenenfalls eine Nachricht. Zusätzlich wird der Timer gestoppt, falls einer vorhanden ist. (Die Schreibweise WindowTimer?.cancel entspricht if(WindowTimer !== null) WindowTimer.cancel)

Anmerkungen am Rande: Ich habe bei mir nur einen Lüfter, der läuft nach dem Duschen 15 Minuten und das ist manchmal sogar etwas knapp. Vielleicht ist das bei weit geöffnetem Fenster schneller erledigt, aber mir schien die Zeitspanne etwas gering...
Je nach Wetterlage kann es sein, dass die Luftfeuchte niemals unter einen fixen Grenzwert sinkt. Normalerweise müsste man den Taupunkt berechnen und danach die Meldung ausgeben. Es gibt mindestens im offiziellen deutschen Forum (hier ist das inoffizielle - aber hier ist wesentlich mehr los ;) ) und im englischen Forum dazu einige Threads mit konkreten Rules, um den Taupunkt zu berechnen und auch Alarm zu geben.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten