FHEM Forum

FHEM - Hausautomations-Systeme => Sonstige Systeme => Thema gestartet von: d.schoen am 20 April 2017, 12:55:39

Titel: movingAverage und PCA301
Beitrag von: d.schoen am 20 April 2017, 12:55:39
Hallo zusammen,

ich überwache unsere Waschmaschine und den Trockner im Keller mit zwei PCA301 Energiemesssteckdosen. Da vor allem die Waschmaschine relativ starke Schwankungen im Stromverbrauch hat, glätte ich das power-Reading über die movingAverage Methode aus dem Wiki.

Nun ist es leider so, dass die PCA301 nur regelmäßige Readings liefert, wenn tatsächlich ein Verbraucher aktiv ist. Ich möchte allerdings gerade das Ende eines Waschgangs erkennen.

Bisher hatte ich folgende beiden Userreadings:
avg_power:power.* {movingAverage("Keller_Trockner","power",300)}, status:power.* { (ReadingsVal("Keller_Trockner","avg_power",0) >= 30) ? 'aktiv' : 'standby';; }

Leider klappt das aber nicht wie gewünscht. Während dem Betrieb der WaMa passt alles super, nur am Schluss des Waschgangs kann es teilweise sehr lang dauern, bis neue Readings kommen und damit das avg_power Reading langsam absinkt.

Habt ihr eine Idee, wie ich das ggf. umgehen könnte? Ggf. per Watchdog, der das Reading automatisch auf "0" aktualisiert, wenn kein Reading von dem Device selbst kommt?

Vielen Dank und beste Grüße
Titel: Antw:movingAverage und PCA301
Beitrag von: Michael am 20 April 2017, 17:32:34
Moin d.schoen

Ich habe mir ein DOIF angelegt das die Waschmaschiene überwacht und
mir die Waschladungen zählt sowie das Telefon klingeln läst wenn sie Fertig ist.


defmod check_Waschmaschine DOIF ([Waschmaschine_Schalter:power]>3)\
(set Waschmaschine on)\
(setreading Waschmaschine waschladungen {([Waschmaschine:waschladungen]+1)}) \
DOELSEIF ([Waschmaschine_Schalter:power]<3)\
(set Waschmaschine off)\
(set FritzBox ring 612 20 News show:Waschmaschiene)\

attr check_Waschmaschine devStateIcon no timer:timer.off timer:timer.on
attr check_Waschmaschine sortby 3
attr check_Waschmaschine wait 60:60

setstate check_Waschmaschine cmd_2
setstate check_Waschmaschine 2017-04-20 11:16:04 Device Waschmaschine_Schalter
setstate check_Waschmaschine 2017-04-18 12:28:52 cmd 2.2
setstate check_Waschmaschine 2017-04-18 12:28:52 cmd_event Waschmaschine_Schalter
setstate check_Waschmaschine 2017-04-18 12:28:52 cmd_nr 2
setstate check_Waschmaschine 2017-04-18 12:28:52 cmd_seqnr 2
setstate check_Waschmaschine 2017-04-20 11:16:04 e_Waschmaschine_Schalter_power 0
setstate check_Waschmaschine 2017-04-18 12:28:52 state cmd_2
setstate check_Waschmaschine 2017-04-20 17:19:27 wait_timer no timer


Waschmaschine_Schalter ist die Steckdose.
Waschmaschine                ist ein Dummy, der mir nur Anzeigt ob Waschmaschine läuft.
check_Waschmaschine     ist das DOIF
FritzBox                            ist das Fritzbox Modul

Bei läuft es so prima und die Frau will es nicht mehr missen.  ;D

Ich hoffe das ist alles so Richtig, bin halt auch noch Anfänger.  ???
Die Profis mögens mir Verzeihen.  :)
Titel: Antw:movingAverage und PCA301
Beitrag von: d.schoen am 21 April 2017, 09:49:49
Danke dir! So weit bin ich auch schon. Ich habe das ganze über TelegramBot gelöst.

Ich habe nur noch ein Problem mit der Weiterverarbeitung des Stromverbrauchs.
Wie man in dem angehängten Plot sieht, schwankt der Verbrauch der Waschmaschine relativ stark und geht oft auch auf Werte knapp über 0 zurück. Daher brauche ich da eine Glättung. Nun ist nur das Problem, dass der Durchschnittswert (dicke Linie) nach dem Ende des Waschgangs sehr langsam abfällt, was damit zusammenhängt, dass keine neuen Readings generiert werden, wenn kein Strom verbraucht wird.

Diesen langsamen Abfall würde ich gern irgendwie beschleunigen. Vielleicht bin ich mit dem movingAverage auch vollkommen auf dem Holzweg und ich sollte eine Kombination aus Durchschnitt und normalen "power" Reading nutzen.
Titel: Antw:movingAverage und PCA301
Beitrag von: Michael am 21 April 2017, 12:12:25
Moin d.schoen

Zitat... Vielleicht bin ich mit dem movingAverage auch vollkommen auf dem Holzweg ...
Denk ich auch.

Ist dir diese Zeile "attr check_Waschmaschine wait 60:60" aufgefallen.
Sehe dazu am besten mal beim DOIF Modul nach.