Ich habe ein Frage zu event-on-change-reading und dem erstellen von log-Werten. Meine Waschmaschine hängt an einem Homemtaic Zwischenstecker mit Leistungsmessung.
Der Momentanverbauch wird über das Attribut power gelogt. Meine attributes dazu sehen wie folgt aus
DbLogInclude -> power
event-min-interval -> power:300
event-on-change-reading -> power:0.03
Ich war jetzt der Meinung das power nur gelogt wird wenn sich der Werte um 0.03 zum Vorgängerwert geändert hat bzw. wenn die 300 Sekunden ohne Werteänderung vergangen sind.
Hintergrund ist der das im Standby die Maschine immer im 0.07 herumtänzelt.
Diese Spitzen wollte ich "rausfiltern" aber es funktioniert nicht.
Der Auszug aus dem log sieht Momentan so aus.
2015-11-02_06:04:18 0.08
2015-11-02_06:11:26 0.08
2015-11-02_06:17:08 0.07
2015-11-02_06:23:52 0.08
2015-11-02_06:29:17 0.08
2015-11-02_06:36:40 0.08
2015-11-02_06:41:49 0.07
2015-11-02_06:47:05 0.08
2015-11-02_06:52:26 0.08
2015-11-02_06:59:44 0.08
2015-11-02_07:04:50 0.08
2015-11-02_07:10:01 0.08
2015-11-02_07:15:19 0.08
2015-11-02_07:22:32 0.08
2015-11-02_07:27:34 0.07
2015-11-02_07:32:42 0.08
2015-11-02_07:37:56 0.08
2015-11-02_07:45:04 0.08
Habe ich irgendwo einen Denkfehler oder funktioniert das Ganze so nicht wie ich es mir vorstelle?
Generell funktioniert das genauso und wenn ich das richtig sehe sind ja in dem Log-Ausschnitt auch keine Änderungen für das reading power enthalten. Die Logeinträge sind ja ohne Namen des Readings, also sind das Änderungen des states, also solltest Du auch entsprechende Einträge für state machen.
Johannes
Sorry, die Logeinträge sind direkt die Einträge aus der Plotfile über "show preprocessed input" angezeigt.
Also schon aus dblog nur die Einträge die "power" erzeugt hat.
Zitat von: devil77 am 02 November 2015, 07:55:02
Ich war jetzt der Meinung das power nur gelogt wird wenn sich der Werte um 0.03 zum Vorgängerwert geändert hat bzw. wenn die 300 Sekunden ohne Werteänderung vergangen sind.
Ich stolpere etwas über das bzw hier.
Aus meinem Verständnis sollte wenn beide Attribute gesetzt sind ein Log-Eintrag geschrieben werden, wenn EINE der beiden Bedingungen erfüllt ist. Also
1) entweder weicht der neue Wert mehr als 0.03 vom alten ab
2) oder es sind mindestens 300s vergangen.
Aus Deinem Log geht dann hervor, dass es keinen Fall gibt in dem 1) zutrifft, aber in allen Logeinträgen sind mehr als 300s vergangen.
Wolltest Du nur dann einen Log schreiben wenn die Abweichung mehr als 0.03 beträgt UND mehr als 300s vergangen sind? Das würde doch keinen Sinn ergeben, da dann starke Änderungen, die innerhalb von 300s auftreten gar nicht protokolliert würden?
Johannes
Ziel war eigenltich, schreibe est einen log wenn Abweichung mehr als 0.03 ODER 300s rum sind seit letztem log Eintrag.
Genau das sollte der Fall sein und das sollte auch meine Aussage von oben sein (Streiche entweder hier es geht im logischen Sinne hier um ein ODER, wie von Dir geschrieben).
Gibt es denn Werte, die mehr als 0.03 abweichen und die NICHT im log auftauchen?
Zitat von: viegener am 02 November 2015, 16:27:37
Gibt es denn Werte, die mehr als 0.03 abweichen und die NICHT im log auftauchen?
Die sehe ich ja nicht im log falls sie vorhanden sind, oder?
Wenn ich nach dem gehen was jetzt gelogt wird schwanke die Werte nur vom 0.06 bis 0.09.
Ich hatte mir halt erhoft die kleinen Schwankungen im log zu elemenieren aber das scheint so nicht zu funktionieren.
Ist die Frage ob event-on-change-reading mit der Zusatzangabe Schwellenwert überhaupt funktioniert bzw. unter was für Bedingungen das ganze nur funktioniert.
Vielleicht ist event-aggregator für deinen Zweck das richtige?
Gruß,
Gero
Das ist nicht Zielführend da hier in der angegebenen Zeitspanne alle Werte bzw. Werteänderungen ignoriert werden um den Mittelwert zu bilden.
Zitat von: devil77 am 03 November 2015, 12:08:10
Die sehe ich ja nicht im log falls sie vorhanden sind, oder?
Wenn ich nach dem gehen was jetzt gelogt wird schwanke die Werte nur vom 0.06 bis 0.09.
Ich hatte mir halt erhoft die kleinen Schwankungen im log zu elemenieren aber das scheint so nicht zu funktionieren.
Ist die Frage ob event-on-change-reading mit der Zusatzangabe Schwellenwert überhaupt funktioniert bzw. unter was für Bedingungen das ganze nur funktioniert.
Das verstehe ich nicht.
Wenn Du nur Änderungen sehen willst, die um mindestens 0.03 abweichen. Warum setzt Du dann nicht einfach nur
event-on-change-reading -> power:0.03
. Dann siehst Du nur einen Eintrag wenn sich wirklich etwas verändert.
Solange Du auch noch min-interval setzt bekommst Du halt mindestens all 300s einen Eintrag auch wenn sich nicht viel geändert hat.