FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Thyraz am 02 August 2016, 12:15:40

Titel: Loggen / Erzeugen von Events der Waschmaschine inkl. Ausdünnen der Werte
Beitrag von: Thyraz am 02 August 2016, 12:15:40
Hallo,

es geht um eine schaltbare Steckdose mit integrierter Stromaufnahme (Reading "power"), an der die Waschmaschine hängt.

Bin mir nicht ganz sicher wie ich in diesem Fall vorgehen soll,
da ich für gewisse Werte der Stromaufnahme immer ein Event will (Waschmaschine fertig bei einer Stromaufnahme von konstant knapp 3W) , ansonsten immer frühestens nach einer Minute (Events kommen beim Waschen alle paar Sekunden rein und blähen meine Datenbank immens auf).

Ich will auf alle Fälle meine Notifies zum Auswerten und das Log auf der selben Datenbasis halten.
Also nicht nur das Loggen ausdünnen, sondern schon die Events.
Ansonsten ist es sehr schwer nachzuvollziehen warum ein Notify bei Waschgang XYZ nicht gescheit funktioniert, wenn man die realen Werte nicht mehr zur Verfügung hat.
Außerdem belasten die unnötig oft auftretenden Events ja auch nur FHEM.

Naheliegend schien nun event-min-interval.
Aber wenn man Pech hat, bekommt man den Moment wenn die Wäsche fertig ist nicht mit.
Zum Beispiel weil kurz davor noch ein Wert mit 500 Watt reinkommt und dann die c.a. 3 Watt beim Wasch-Ende dann vom min-interval verschluckt wurde.
Da die Stromaufnahme ab dem Moment konstant bleibt, kommt auch später kein Update mehr rein, welches die "Wäsche fertig" Nachricht tiggern könnte.

Hat jemand eine Idee wie man da realisieren kann?
Titel: Antw:Loggen / Erzeugen von Events der Waschmaschine inkl. Ausdünnen der Werte
Beitrag von: Ellert am 02 August 2016, 12:26:03
event-on-change-reading mit Schwelle und Readingsangabe, dann gibt es nur Events während der Wäsche und nur bei wesentlichen Änderungen bestimmter Readings.
Titel: Antw:Loggen / Erzeugen von Events der Waschmaschine inkl. Ausdünnen der Werte
Beitrag von: betateilchen am 02 August 2016, 13:51:17
Wenn das eine Strommeß-Steckdose von Homematic wäre, würde ich die Schwelle für die Meldung direkt in der Steckdose einstellen.
Titel: Antw:Loggen / Erzeugen von Events der Waschmaschine inkl. Ausdünnen der Werte
Beitrag von: Thyraz am 02 August 2016, 13:58:32
Danke, das mit der Schwelle hatte ich noch gar nicht gesehen. :)
Fürchte aber das hilft mir nicht komplett mein Problem in den Griff zu bekommen...

Der Normalbetrieb der Waschmaschine schwankt so zwischen ein paarhundert und 1500 Watt.
Und die Schwankungen sind hier auch recht wild.

Ich bräuchte also einen sehr großen Schwellwert um die Masse an Daten aus den Events und der Datenbank zu bekommen.
Andererseits habe ich aber sehr kleine Werte/Änderungen zwischendrin.
Z.b. gibt es Phasen wo die Maschine wahrscheinlich die Wäsche einweicht (und die Abläufe sind je nach Programm auch sehr unterschiedlich) in denen sie nur so 10-20 Watt verbraucht.

Dann habe ich noch einen Zustand den ich ebenfalls erkennen will: Wasser nicht aufgedreht, Maschine steht im Fehlermodus und braucht so etwa 6 Watt).

Wenn nun ein Wert mit 10 Watt der letzte war bevor die Maschine fertig ist, würde ich die Fertigmeldung mit 3 Watt wieder nicht mitbekommen, da meine Schwelle viel zu groß wäre um diesen Wert durchzulassen. :-/


Eine Idee die mir noch kam: Ein UserReading, da man hier ja mit Perl-Code die Werte auswerten kann und somit entscheiden ob man den Wert ändert oder wieder den selben schreibt.
Weiß nur nicht ob das dann immer ein Event erzeugt (auch bei gleichem Wert) oder ob ich mit event-on-change-reading auch ein userreading begrenzen kann.

Und das als Perl-Noob hinzubekommen wird dann die zweite Aufgabe. :P

edit:
@betateilchen ist Z-Wave und das Device hat leider keine einstellbare Schwelle.
Allerdings würde das wie oben beschrieben wahrscheinlich auch nicht helfen.

Eine Schwelle in Prozent statt einem festen Wert würde mit wahrscheinlich mehr helfen das Ganze recht gut auszudünnen.
Eine Änderung von 10 Watt zu 3 Watt wäre dann größer als zwischen 1500 Watt und 1000 Watt...
Titel: Antw:Loggen / Erzeugen von Events der Waschmaschine inkl. Ausdünnen der Werte
Beitrag von: Ellert am 02 August 2016, 14:23:41
Wenn Du die Schwelle auf z.B. 1 W setzt und die WM ausgeschaltet ist, werden keine Events mehr erzeugt. Bei 1x am Tag Waschen für 3h, dann hast Du 88% der Events verhindert, falls die Steckdose regelmässig sendet. Und wenn Du nicht jeden Tag wäschst werden es noch mehr Prozente.
Titel: Antw:Loggen / Erzeugen von Events der Waschmaschine inkl. Ausdünnen der Werte
Beitrag von: Kermit20 am 02 August 2016, 14:31:39
schau mal hier: https://forum.fhem.de/index.php?topic=26339.0 (https://forum.fhem.de/index.php?topic=26339.0)
Titel: Antw:Loggen / Erzeugen von Events der Waschmaschine inkl. Ausdünnen der Werte
Beitrag von: Thyraz am 02 August 2016, 15:22:06
@Ellert, es sind nicht Events die während dem Nicht-Betrieb kommen.
Ich schalte die Waschmaschine nach beendetem Waschen am deren Betriebmodusrad immer auf "Aus".
Solange die Waschmaschine in dem Zustand ist bleibt der Stromverbrauch bei 0 Watt und es werden keine Logeinträge mehr erzeugt.

Mir geht es um die Events/Logeinträge während des Waschens, da die Z-Wave Steckdose eben extrem viel loggt.
Mit den 3-4 Wäschen die wir in der Woche haben, hat sich die Größe der Datenbank (welche ohne Waschmaschine seit knapp einem Jahr loggt) vervielfacht, obwohl die Waschmaschine erst 1-2 Monate geloggt wird.

Kommt mir einfach unverhältnismässig vor (und ich habe Angst, dass die Speicherkarte recht schnell volläuft), gerade da ich eine so hohe Abfragerate der Werte an sich nicht brauche.
Dennoch würde ich den groben Verlauf des Stromverbrauchs eben gern bei Bedarf in einem Chart visualisieren können und somit auch nicht komplett auf das Loggen verzichten.

Denke ich versuche mich mal an meiner Userreadings + Perl Auswertungsidee...
Titel: Antw:Loggen / Erzeugen von Events der Waschmaschine inkl. Ausdünnen der Werte
Beitrag von: Ellert am 02 August 2016, 15:50:19
O.k. ich kenne nur die Homematich Steckdose, da hilft mir das.

Ich kenne Z-Wave nicht, Du kannst aber die Readings, die Events erzeugen sollen einschränken, also nur das Reading power zulassen, mehr benötigst Du für die WM nicht, also event-on-change-reading power statt event-on-change-reading .*  dann erzeugen alle anderen Readings keine Events.
Titel: Antw:Loggen / Erzeugen von Events der Waschmaschine inkl. Ausdünnen der Werte
Beitrag von: Thyraz am 02 August 2016, 16:24:54
Ja, normal hilft mir das auch.
Es geht auch nur um das Power-Reading.

Die Waschmaschine ist halt nur nicht konstant was den Stromverbrauch angeht, sondern das Power-Reading ändert sich teilweise im Sekundentakt.
Dadurch werden massig Logeinträge erzeugt.
Titel: Antw:Loggen / Erzeugen von Events der Waschmaschine inkl. Ausdünnen der Werte
Beitrag von: Ellert am 02 August 2016, 16:36:11
Dann kannst Du event-on-change-reading und event-on-min-interval kombinieren. Bei einem Intervall von 60 s loggst Du bei 3 h Waschzeit 180 Werte, das ist nicht wirklich viel, es sollten auch keine Schaltereignisse verloren gehen und Du reduzierst die Events auf 1/60.
Titel: Antw:Loggen / Erzeugen von Events der Waschmaschine inkl. Ausdünnen der Werte
Beitrag von: Thyraz am 02 August 2016, 16:49:58
Bist du dir sicher, dass das klappt ohne "wichtige" Werte zu verpassen?
Das worüber wir die letzten Posts reden hatte ich ja schon als Problem im ersten Post erläutert.

Laut commandref:
Zitat
event-min-interval
Dieses Attribut enthält eine durch Kommata getrennte Liste von "readings:minInterval" Paare. readings kann ein regexp sein. Ein Event wird nur dann generiert, falls seit dem letzten Auftreten des gleichen Events mindestens minInterval Sekunden vergangen sind.

Hatte oben als Grund gegen event-min-interval ja geschrieben,
dass dann z.B. kurz vor Wasch-Ende ein 10 Watt Wert rein kommen kann, und der wichtige "knapp 3W"-Wert (Wasch-Ende) dann eben nicht durchkommt.
(Weil danach eben keine wiederholenden niedrigen Werte des Zwischensteckers mehr kommen, sondern er erst wieder bei einer Änderung einen Wert schicken würde, welche aber nicht mehr eintritt.)

Somit würde die Notification "Wäsche fertig" nie eintreten.
Titel: Antw:Loggen / Erzeugen von Events der Waschmaschine inkl. Ausdünnen der Werte
Beitrag von: Thyraz am 02 August 2016, 18:44:48
Ok, hab es über ein Userreading hinbekommen.
Jetzt wird das Event für mein neues Reading bei Änderungen aktualisiert, falls der letzte Wert älter 30 Sekunden ist oder mehr als 25% von diesem abweicht.

"power" ist das Reading des Zwischensteckers.
"powerVal" ist mein erzeugtes UserReading.

Event-on-change-reading ist für power und powerVal aktiv.
Mein Waschmaschinen DOIF und das Datenbank loggen hab ich vom power auf das powerVal Reading umgestellt.


powerVal:power.* {
my $lastUpdate = time_str2num(ReadingsTimestamp($name,"powerVal",0));
my $timeDiff = time() - $lastUpdate;

my $powerVal = ReadingsVal($name,"powerVal","0");
my $power = (split ' ',ReadingsVal($name,"power","0"))[0];
my $percentDiff = ($powerVal == 0) ? 999 : 100 * (abs($powerVal - $power) / $powerVal);

if ($timeDiff > 30 || $percentDiff > 25) {
return $power;
} else {
return $powerVal;
}
}
Titel: Antw:Loggen / Erzeugen von Events der Waschmaschine inkl. Ausdünnen der Werte
Beitrag von: KernSani am 02 August 2016, 18:54:22
Spricht etwas dagegen, in z.B. ein Tageslig zu schreiben und alles älter als x Tage zu löschen?
Titel: Antw:Loggen / Erzeugen von Events der Waschmaschine inkl. Ausdünnen der Werte
Beitrag von: Thyraz am 02 August 2016, 18:58:04
Wäre an sich auch noch eine Möglichkeit.

Logge halt alles mit DBLog um bei Fehlern etc. die Daten schnell mit demCharting Frontend (http://www.fhemwiki.de/wiki/Neues_Charting_Frontend) auswerten zu können.

Lassen sich bei DBlog auch recht einfach automatisiert Daten aus DBLog über FHEM killen?
Da ich meine Waschmaschinendaten an sich nur im Fehlerfall brauche, würde es mir reichen immer den Vormonat zu löschen wenn der aktuelle Monat zu Ende geht.
Titel: Antw:Loggen / Erzeugen von Events der Waschmaschine inkl. Ausdünnen der Werte
Beitrag von: KernSani am 02 August 2016, 19:22:57
Eigenes Dblog anlegen und dann per deleteOldDays weg was weg muss...