Seite 1 von 1
Waschmaschine Fertig
Verfasst: 15. Feb 2021 16:43
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:
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
Re: Waschmaschine Fertig
Verfasst: 15. Feb 2021 17:47
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.
Re: Waschmaschine Fertig
Verfasst: 16. Feb 2021 11:44
von Markus_JE
Super, danke!!
Funktioniert erst mal.
Re: Waschmaschine Fertig
Verfasst: 8. Mär 2021 16:50
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
Re: Waschmaschine Fertig
Verfasst: 8. Mär 2021 21:08
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.
Re: Waschmaschine Fertig
Verfasst: 9. Mär 2021 19:33
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.