Waschmaschine Fertig

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Markus_JE
Beiträge: 138
Registriert: 6. Okt 2019 13:20
Answers: 0

Waschmaschine Fertig

Beitrag von Markus_JE »

Guten Tag,

ich würde mir gerne ein Telegramm auf das Mobiltelefon senden wenn die Waschmaschine fertig ist.
Die Abfrage der WM mache ich mit einem Shelly 1PM.
Hier habe ich ein item:

Code: Alles auswählen

Number:Power Shelly1PMWaschmaschine_Leistung
Anbei meine Regel welche aber nicht auslöst.

Code: Alles auswählen

val telegramAction
var told = 0
rule "Waschmaschine fertig"
when
        Item Shelly1PMWaschmaschine_Leistung received update
then
        if (Shelly1PMWaschmaschine_Leistung.state > 0.15 && Shelly1PMWaschmaschine_Leistung.state < 5.00) {
                createTimer(now.plusMinutes(1), [|
                        if ((Shelly1PMWaschmaschine_Leistung.state < 5.00) && (Shelly1PMWaschmaschine_Leistung.state > 0) && (told == 0)) {
                                telegramAction.sendTelegram("Waschmaschine ist fertig!")
                                told = 1
                        }
                ])
        }
end

rule "Zähler zurücksetzen"
when
        Item Shelly1PMWaschmaschine_Leistung received update
then
        if (Shelly1PMWaschmaschine_Leistung.state < 0.15) {
                told = 0
        }
end

Anbeku
Beiträge: 216
Registriert: 12. Nov 2020 10:26
Answers: 4

Re: Waschmaschine Fertig

Beitrag von Anbeku »

Ich vermute, das ist das selbe Problem was ich hatte.

Du hast geschrieben, dass deine Leistung vom Typ Number:Power ist, also musst du auch mit einem wert vom Typ Number:Power vergleichen.

Schreib mal

Code: Alles auswählen

if (Shelly1PMWaschmaschine_Leistung.state > 0.15|W && Shelly1PMWaschmaschine_Leistung.state < 5.00|W)
Also bei allen Leistungsangaben die Einheit hinzufügen.
Zuletzt geändert von Anbeku am 16. Feb 2021 11:49, insgesamt 1-mal geändert.

Markus_JE
Beiträge: 138
Registriert: 6. Okt 2019 13:20
Answers: 0

Re: Waschmaschine Fertig

Beitrag von Markus_JE »

Super, danke!!
Funktioniert erst mal.

Markus_JE
Beiträge: 138
Registriert: 6. Okt 2019 13:20
Answers: 0

Re: Waschmaschine Fertig

Beitrag von Markus_JE »

Hallo zusammen,

meine Rule zur Meldung via Sonos Box funktioniert "eigentlich", allerdings nur einmal.
Ich denke das ich hier irgendwo einen Fehler in Bezug auf den told habe.

Wäre super wenn mir hier jemand weiterhelfen könnte .

Rule:

Code: Alles auswählen

val telegramAction = getActions("telegram","telegram:telegramBot:XXXXXXXXXXX")
var told = 0
rule "Waschmaschine Fertig"
when
        Item Shelly1PMWaschmaschine_Leistung received update
then
        if (Shelly1PMWaschmaschine_Leistung.state > 1.5 | W && Shelly1PMWaschmaschine_Leistung.state < 3.7 | W) {
                createTimer(now.plusMinutes(2), [|
                        if ((Shelly1PMWaschmaschine_Leistung.state < 3.7 | W) && (Shelly1PMWaschmaschine_Leistung.state > 0 | W) && (told == 0)) {
                                telegramAction.sendTelegram("Waschmaschine ist fertig!")
								say("Waschmaschine ist fertig, Wäsche bitte aufhängen","voicerss:deDE","sonos:PLAY3:RINCON_5CAAFD58B32201400")
								told = 1
						}
                ])
        }
end

rule "Waschmaschine Fertig Zähler zurücksetzen"
when
        Item Shelly1PMWaschmaschine_Leistung received update
then
        if (Shelly1PMWaschmaschine_Leistung.state < 0.15 | W) {
                told = 0
        }
end

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

Re: Waschmaschine Fertig

Beitrag von udo1toni »

Also, das eine wäre, die zwei Rules zu einer Rule zu machen (Regel 1: Rules mit identischem Trigger immer zusammenfassen)
Es bietet sich an, die Leistungsaufnahme in einer Variablen zwischenzuspeichern, das erspart etwas Zeit. Auch wäre es sinnvoll, den Timer etwas anders zu nutzen. Diese Rule:

Code: Alles auswählen

val telegramAction = getActions("telegram","telegram:telegramBot:XXXXXXXXXXX")
var Timer tWasher = null

rule "Waschmaschine Fertig"
when
    Item Shelly1PMWaschmaschine_Leistung received update
then
    val nPower = (Shelly1PMWaschmaschine_Leistung.state as Number).floatValue
    if(nPower > 1.5 && nPower < 3.7 && tWasher === null) {
        tWasher = createTimer(now.plusMinutes(2), [|
            telegramAction.sendTelegram("Waschmaschine ist fertig!")
            say("Waschmaschine ist fertig, Wäsche bitte aufhängen","voicerss:deDE","sonos:PLAY3:RINCON_5CAAFD58B32201400")
            tWasher = null
        ])
    else if(nPower > 3.7) {
        tWasher?.cancel
        tWasher = null
    }
end
startet den Timer, sobald der Verbrauch unter 3.7 Watt sinkt aber über 1.5 Watt bleibt. Wenn nun innerhalb der Laufzeit (2 Minuten) der Verbrauch wieder über 3.7 Watt ansteigt, wird der Timer wieder gestoppt.

Warum Deine Rule allerdings nur einmal funktioniert, ist mir schleierhaft.
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

wosch
Beiträge: 53
Registriert: 30. Dez 2020 08:36
Answers: 0

Re: Waschmaschine Fertig

Beitrag von wosch »

Schau dir mal die Leistung über der Zeit an. Das geht in der Main UI in OH3 ja sehr einfach.
Ich vermute, dass die zweite rule nicht mehr getriggert wird, weil sich die Leistung bei ausgeschaltener Waschmaschine schlicht nicht mehr ändert. Da die Leistung nur in bestimmten zeitlichen Abständen an OH3 übermittelt wird, kommt die relevante Änderung der Leistung (in deinem Fall der Sprung auf kleiner 0,15 W) vermutlich in der Zeit zwischen zwei Messpunkten. Dadurch bleibt told auf 1 und die erste rule bleibt in der if Bedingung hängen.
Mir ist natürlich klar, dass die Änderung auf 0 W (also OFF) die rule ebenfalls triggern sollte, tatsächlich hatte ich aber vor 2 oder 3 Jahren ein ähnliches Problem.
Da ich die Leistungsmessung bei meinen Shellies nicht nutze, kann ich nicht sagen, ob sich die Abstastrate ändern lässt bzw. wieviele Sekunden zwischen zwei Messpunkten liegt. Beim TP-Link binding lässt sich die Zeit einstellen. Falls dies beim Shelly binding auch möglich ist, wäre dies evtl auch eine Lösung.

Antworten