Waschmaschine Rule Problem

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
thedk
Beiträge: 36
Registriert: 10. Mär 2017 09:25
Answers: 0

Waschmaschine Rule Problem

Beitrag von thedk »

Hallo Leute,
ich hab zwei unterschiedliche Probleme und werde die mal in zwei Themen packken zwecks der Überischtlichkeit.

Ich bastel seit längerem an einer Rule für meine Waschmaschine, hier hängt eine Homematic Steckdose dazwischen die Strom, Leistung, etc misst. Die Rule hab ich mir teilweise so zusammenkopiert und angepasst (ich weiß also schon auch was da passiert). Problem bei der Sache ist, dass ich mehrere Meldungen bekomme das die Waschmaschine fertig ist, ich habe bisher nicht herausgefunden wie ich sinnvoll ein Delay einfüge bzw. eine Bedingung aufstelle das sich der Strom in einem gewissen Bereich bewegen muss bevor eine erneute Meldung kommt.

Hier erstmal die Rule:

Code: Alles auswählen

import org.openhab.core.library.types.*
import org.openhab.model.script.actions.*
 
var Timer timer
 
rule "Waschmaschinenstatus"
when
  Item Leistungssteckdose_2_Current changed
then
  val Leistungssteckdose_2_Power = (Leistungssteckdose_2_Power.state as DecimalType).intValue
  if (Leistungssteckdose_2_Power < 2) {
    timer = createTimer(now.plusMinutes(3)) [|
			sendCommand(Kugel_Color, HSBType::GREEN)  
			sendMail("email@gmx.de", "Betreff", "Text")]
			Thread::sleep(1800000)  // 30 min. Delay
	 } else {
  if (timer != null) timer.cancel
    }
end
Die Rule startet sobald sich der Strom ändert, wenn die Leistung jetzt unter 2 Watt sinkt startet sich einen Timer von 3 min., ist dieser abgelaufen bekomme ich eine Mail und eine Hue Lampe schaltet sich auf grün (sollte zumindest, zweites Problem ^^). Den Thread::sleep habe ich jetzt gesetzt, da sich die Leistung in einem geringen Bereich trotzdem logischerweise nach fertigstellung noch ändert. Sonst würde ich alle 3 min eine Mail bekomme und das Licht ein- und ausschalten. Zufrieden bin ich damit jedoch nicht, teilweise funktioniert das nicht und nach 30 min gehts von vorne los.

Geht es bzw. wie könnte ich sagen, dass das ganze erst von vorne los geht wenn der Strom/die Leistung einen gewissen Bereich überschritten hat?

Benutzeravatar
alkaline
Beiträge: 173
Registriert: 20. Apr 2017 13:25
Answers: 0

Re: Waschmaschine Rule Problem

Beitrag von alkaline »

Da gibt es ein sehr schönes Tutorial dafür von Tom Dietrich. Wie du selbst beschrieben hast geht mitunter die Sache nach 30 Min von vorne los, Schuld daran ist die eigentliche Strommessung bzw. deine Regel dahinter. Schau dir das mal an:
https://community.openhab.org/t/washing ... hine/15587

Marcus

thedk
Beiträge: 36
Registriert: 10. Mär 2017 09:25
Answers: 0

Re: Waschmaschine Rule Problem

Beitrag von thedk »

Danke für den Link.
Falls meine jetzige Lösung nicht funkionieren sollte, schaue ich mir das ganze mal genauer an.

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

Re: Waschmaschine Rule Problem

Beitrag von wosch »

Hallo zusamnmen,

ich hole mal den Thread wieder hoch, da es genau um da Thema geht und ich auch im Grunde für meine Waschmaschine den Aufbau wie im oben verlinkten Tutorial der Community beschrieben, nutze (Anmerkung: bei Status FINISHED wird eine zweite rule getriggert, um die es aber gar nicht geht):

Code: Alles auswählen

val Number WamaModeOff = 0
//val Number WamaModeStandby = 1
val Number WamaModeOn = 2
val Number WamaModeFinished = 3


rule "Status Waschmaschine"
when 
    Item Wama_Power changed
then 
    val Number WamaAvg = Wama_Power.averageSince(now.minusMinutes(1)) as Number
    if (WamaAvg <= 0.1) {
        Wama_State.postUpdate(WamaModeOff)
        logInfo("Wama_State", "Waschmaschine Wama OFF")
    }
    else if (WamaAvg >= 2.5) {
        Wama_State.postUpdate(WamaModeOn)
        logInfo("Wama_State", "Waschmaschine Wama ON")
    }
    else if (WamaAvg < 2.5) {
        if (Wama_State.state == WamaModeOn) Wama_State.postUpdate(WamaModeFinished)
    }
end
Das Problem an der Geschichte: Während dem Waschen springt der Zustand zwischendrin ab und zu mal auf OFF, was ich aber überhaupt nicht nachvollziehen kann, da die Leistungswerte aus dem log das nicht mal ansatzweise hergeben... Heute morgen war es sogar so, dass er kurz bevor der Status auf FINISHED hätte springen müssen, auf OFF ging und so die Prüfung im 2. else if nicht zutraf und somit der Status auch nie FINISHED erreicht hat.

Mir ist klar, dass ich das umgehen könnte, wenn ich die if-Bedingung im 2. else if weglassen würde, aber mir geht es darum das Problem zu verstehen. Denn eigentlich dürfte er während des kompletten Waschvorgangs niemals auf OFF springen, denn die Leistung ist immer deutlich größer als 0,1 W, damit natürlich auch der Average. Beispielhaft hier den Moment von heute Morgen (s.o.):
Bild

Die blaue Kurve ist ein Ausschnitt der Leistung aus dem log - der orange Strich zeigt an wann der Status auf OFF sprang (ebenfalls aus dem log).

Ich kann es wirklich nicht verstehen, da die Leistung zu keiner Zeit die if-Bedingung für OFF erfüllt. Um Peaks in der Leistung zu "filtern" habe ich vor einiger Zeit schon den Average eingeführt, aber Peaks gibt es in diesem Moment ja überhaupt nicht?!

Ich kann den Fehler leider echt nicht finden, ich stehe da total auf dem Schlauch! Könnt ihr mir helfen?

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

Re: Waschmaschine Rule Problem

Beitrag von udo1toni »

Logge doch mal mit, dass WamaAvg als Wert liefert:

Code: Alles auswählen

logInfo("Wama_State","WamaAvg = {}",WamaAvg) 
Die Zeile packst Du vor das if()
openHAB4.3.5 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 Rule Problem

Beitrag von wosch »

Hallo Udo!

der Mittelwert wird ab jetzt geloggt, das könnte dann auch das Ei des Columbus gewesen sein :)
Wenn die nächste Wäscheladung dran war, melde ich mich wieder.

Bis dahin nur zum Verständnis: Der Mittelwert kann doch (eigentlich) nur aus den Item-Werten bestimmt werden. Der Wert wird alle x Sekunden geändert. Bis zur Änderung bleibt der Wert wie zuvor übergeben. D.h. solange die Werte für Wama-Power immer größer sind als die 0,1 W, kann der Average doch gar nicht kleiner sein, oder? So hatte ich das zumindest erwartet. Oder spielt bei der Mittelwertbildung irgendwie die Zeit mit rein, in der es kein Update gab?

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

Re: Waschmaschine Rule Problem

Beitrag von wosch »

Guten Abend zusammen,

da mir das Thema keine Ruhe gelassen hat, habe ich heute den Geschirrspüler geloggt (Power und Average).
Lustigerweise gab es auch hier kurz vor Schluss wieder den Fall, dass der State auf OFF geschalten wurde, und daher der zweite else if-Zweig in der rule wegen der if-Bedingung nicht erfüllt war, und damit der Status FINISHED gar nicht erreicht wurde.

Da ich nun auch den Average mitgeloggt habe, ist auch klar warum: zwei aufeinanderfolgende Datenpunkte sind leer, also {} im log. Ich gehe mal davon aus, die werden als 0 interpretiert und daher ist gleich das erste if () in der rule gültig, und er schaltet auf OFF - so wie er sollte.

Bild

Naja, eigentlich nicht so wie er sollte, denn wie ich auch schon vermutet habe, dürfe der Average gar nicht 0 sein, denn die Power ist für beide Zeitpunkte >0. Wobei ja nicht 0 (also 0.0) geloggt wird, sondern {}, also kein Wert (NULL?). Dies passiert übrigens beim Überfliegen des logs während dem Waschvorgang häufiger. Aufgefallen ist mir das schon öfter, da ich Waschmaschine und Trockner als Widget im Habpanel habe, und im Vorbeigehen dann eben das OFF ins Auge stieß, obwohl die Maschine wissentlich noch lief.

Die Gretchenfrage ist nun: Warum wird der Average {}, wo die Power-Werte doch größer sind? Liegt das Problem vielleicht in der persistence?

Code: Alles auswählen

Wama_Power: strategy=everyMinute

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

Re: Waschmaschine Rule Problem

Beitrag von wosch »

Ich wollte nur den letzten Stand melden:
Ich habe mittlerweile die rules mehrmals in OH3 laufen lassen und es war alles so wie es sein sollte - die Average values waren niemals 0. Zumindest nicht wenn sie es nicht sein sollten. Ich habe zwar keine Erklärung für den "Fehler" in OH2.5, aber da ich mittlerweile vollständig umgestiegen bin, stört es mich weitaus weniger :D

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

Re: Waschmaschine Rule Problem

Beitrag von udo1toni »

:)
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Antworten