Seite 3 von 9

Re: Meldung Waschmaschine wenn fertig

Verfasst: 26. MĂ€r 2021 14:43
von Innocent
Imofa? đŸ€”

Re: Meldung Waschmaschine wenn fertig

Verfasst: 26. MĂ€r 2021 18:38
von udo1toni
Typo :oops: imhofa...

Re: Meldung Waschmaschine wenn fertig

Verfasst: 26. MĂ€r 2021 19:59
von Innocent
Sorry, aber das versteh ich nicht... 😳

Re: Meldung Waschmaschine wenn fertig

Verfasst: 26. MĂ€r 2021 21:33
von udo1toni
Schau mal bitte genau, wer welche Postings geschrieben hat...

Re: Meldung Waschmaschine wenn fertig

Verfasst: 27. MĂ€r 2021 13:47
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...

Re: Meldung Waschmaschine wenn fertig

Verfasst: 27. MĂ€r 2021 20:50
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.

Re: Meldung Waschmaschine wenn fertig

Verfasst: 27. MĂ€r 2021 21:33
von Innocent
Vielen Dank fĂŒr die ErklĂ€rung. Ich druck mir das mal aus.

Danke fĂŒr deine Geduld mit mir. đŸ€Ł

Re: Meldung Waschmaschine wenn fertig

Verfasst: 31. MĂ€r 2021 15:05
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

Re: Meldung Waschmaschine wenn fertig

Verfasst: 31. MĂ€r 2021 18:06
von udo1toni
Variablendefinitionen mĂŒssen zu Beginn der Datei (vor der ersten Rule) stehen.

Re: Meldung Waschmaschine wenn fertig

Verfasst: 31. MĂ€r 2021 20:59
von Innocent
Ok. Alles klar. Dann einfach neue Datei anlegen und gut ist?

Hatte diese Rule nÀmlich unter eine vorherige gesetzt.