Meldung Waschmaschine wenn fertig

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Innocent
Beiträge: 198
Registriert: 29. Jul 2020 12:40

Re: Meldung Waschmaschine wenn fertig

Beitrag von Innocent »

Imofa? 🤔
Openhab 2 auf RaspberryPi 4

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

Re: Meldung Waschmaschine wenn fertig

Beitrag von udo1toni »

Typo :oops: imhofa...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Innocent
Beiträge: 198
Registriert: 29. Jul 2020 12:40

Re: Meldung Waschmaschine wenn fertig

Beitrag von Innocent »

Sorry, aber das versteh ich nicht... 😳
Openhab 2 auf RaspberryPi 4

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

Re: Meldung Waschmaschine wenn fertig

Beitrag von udo1toni »

Schau mal bitte genau, wer welche Postings geschrieben hat...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Innocent
Beiträge: 198
Registriert: 29. Jul 2020 12:40

Re: Meldung Waschmaschine wenn fertig

Beitrag von Innocent »

Jetzt hab ich es kapiert. Sorry. Das imhofa den Post geschrieben hat habe ich nicht geschnallt. Tut mir leid.

Kapiert hab ich es trotzdem noch nicht...
Openhab 2 auf RaspberryPi 4

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

Re: Meldung Waschmaschine wenn fertig

Beitrag von udo1toni »

Du hast eine zusätzliche Zeile eingefügt:

Code: Alles auswählen

sendTelegram("Sascha","Die Waschmaschine wurde gestartet")
Vorher stand nur eine einzige Anweisung

Code: Alles auswählen

bWash = true
hinter der bedingten Verzweigung

Code: Alles auswählen

if(sps_kg_wm_leistung.state > 20)
Die bedingte Verweigung wirkt immer nur auf die nächste Anweisung, damit wird nun die Anweisung

Code: Alles auswählen

bWash = true
immer ausgeführt, nicht nur, wenn die bedingte Verzweigung zutrifft.
Es ist essenziell, zu verstehen, wie der Code funktioniert. Die Rule sollte deshalb korrekt formatiert werden, insbesondere mit den korrekten Indentations (Einrückungen), um klar zu erkennen, wie die Befehle ablaufen.
Deine Version:

Code: Alles auswählen

rule "Waschmaschine fertig"
when
    Item sps_kg_wm_leistung changed
then
    if(!bWash) {
        if(sps_kg_wm_leistung.state > 20) // Erkennung die Maschine wurde gestartet
            sendTelegram("Sascha","Die Waschmaschine wurde gestartet")
        bWash = true
    } else { // bWash ist true -> Maschine aktiv
        if(sps_kg_wm_leistung.state < 1.4) { // Erkennung die Maschine ist vielleicht fertig
            if(tWash === null)
                tWash = createTimer(now.plusMinutes(4), [|
                    sendTelegram("Sascha","Die Waschmaschine ist fertig")
                    sendTelegram("Jenny","Die Waschmaschine ist fertig")
                    tWash = null
                    bWash = false
                ])
        } else if(sps_kg_wm_leistung.state > 3){ // notwendig, falls Stromaufnahme zwischendurch sehr niedrig
            tWash?.cancel
            tWash = null
        }
    }
end
So ist direkt erkennbar, dass, falls bWash false ist, bWash auf true gesetzt wird, egal, was sonst noch drum herum passiert.
Die korrigierte Version:

Code: Alles auswählen

rule "Waschmaschine fertig"
when
    Item sps_kg_wm_leistung changed
then
    if(!bWash) {
        if(sps_kg_wm_leistung.state > 20) { // Erkennung die Maschine wurde gestartet
            sendTelegram("Sascha","Die Waschmaschine wurde gestartet")
            bWash = true
        }
    } else { // bWash ist true -> Maschine aktiv
        if(sps_kg_wm_leistung.state < 1.4) { // Erkennung die Maschine ist vielleicht fertig
            if(tWash === null)
                tWash = createTimer(now.plusMinutes(4), [|
                    sendTelegram("Sascha","Die Waschmaschine ist fertig")
                    sendTelegram("Jenny","Die Waschmaschine ist fertig")
                    tWash = null
                    bWash = false
                ])
        } else if(sps_kg_wm_leistung.state > 3){ // notwendig, falls Stromaufnahme zwischendurch sehr niedrig
            tWash?.cancel
            tWash = null
        }
    }
end
Nun wird bWash nur auf true gesetzt, wenn die Bedingung

Code: Alles auswählen

if(sps_kg_wm_leistung.state > 20)
erfüllt ist.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Innocent
Beiträge: 198
Registriert: 29. Jul 2020 12:40

Re: Meldung Waschmaschine wenn fertig

Beitrag von Innocent »

Vielen Dank für die Erklärung. Ich druck mir das mal aus.

Danke für deine Geduld mit mir. 🤣
Openhab 2 auf RaspberryPi 4

Innocent
Beiträge: 198
Registriert: 29. Jul 2020 12:40

Re: Meldung Waschmaschine wenn fertig

Beitrag von Innocent »

Rule funktioniert nun endlich.

Vielen Dank.

Nun möchte ich eine einmalige Nachricht per telegram bekommen, wenn das Level der Batterien eines Thermostates unter 10% fällt.
Habe mich mal versucht.

Bekomme aber einen Fehler : " missing EOF at 'var' "

Code: Alles auswählen

var Boolean bBatterieGWC = false

rule "Batterie Thermoastat GWC"
when
    Item Number BatteryLevelGWC changed
then
    if(!bBatteryLevelGWC) {
         if(BatteryLevelGWC.state > 10) 
             bBatterieGWC = true 
        }
    else {
        if(BatteryLevelGWC.state < 10) {
            sendTelegram("Sascha","Thermostat Gäste WC Batterie 10%")
            bBatterieGWC = false
        }
    }
end
Openhab 2 auf RaspberryPi 4

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

Re: Meldung Waschmaschine wenn fertig

Beitrag von udo1toni »

Variablendefinitionen müssen zu Beginn der Datei (vor der ersten Rule) stehen.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Innocent
Beiträge: 198
Registriert: 29. Jul 2020 12:40

Re: Meldung Waschmaschine wenn fertig

Beitrag von Innocent »

Ok. Alles klar. Dann einfach neue Datei anlegen und gut ist?

Hatte diese Rule nämlich unter eine vorherige gesetzt.
Openhab 2 auf RaspberryPi 4

Antworten