Hallo zusammen,
mein eindruck ist, dass ein cloneDummy sich nicht wie das originale Device verhält. Ich habe einen Temperatur/Luftfeuchtigkeit-Sensor. Da er sich bei jedem Batteriewechsel völlig neu anmeldet, wollte ich das Device von der übrigen Konfiguration (Log, Plot, ....) trennen. Dazu dachte ich mir einen cloneDummy anzulegen.
Ich habe in diesem cloneDummy "SensorAussen" folgendes konfiguriert:
define SensorAussen cloneDummy SensorAussenQuelle
attr SensorAussen addStateEvent 1
attr SensorAussen cloneIgnore T,H
attr SensorAussen event-min-interval .*:180
attr SensorAussen event-on-change-reading state
Es ist aber leider so, dass diese Attribute nicht wirken wollen. Das Log-File sieht wie folgt aus:
2018-02-03_17:15:59 SensorAussen T: 3.5 H: 82.0 D: 0.7 A: 5.0
2018-02-03_17:16:57 SensorAussen T: 3.5 H: 82.0 D: 0.7 A: 5.0
2018-02-03_17:16:57 SensorAussen T: 3.5 H: 82.0 D: 0.7 A: 5.0
2018-02-03_17:17:58 SensorAussen T: 3.5 H: 82.0 D: 0.7 A: 5.0
2018-02-03_17:19:00 SensorAussen T: 3.5 H: 82.0 D: 0.7 A: 5.0
2018-02-03_17:20:02 SensorAussen T: 3.5 H: 82.0 D: 0.7 A: 5.0
Auch unveränderte Werte tauchen im Minutentakt, teilweise sogar zweimal zeitgleich auf. Ist das Verhalten bekannt? Soll das so sein oder ist das ein Fehlverhalten? Hat jemand ähnliche Erfahrungen gemacht?
Schon mal Danke im Voraus.
das dürfte nicht an cloneDummy liegen, sondern an einem falschen Verständnis der event.* Attribute Deinerseits.
Also ich wollte erreichen, dass bei jeder Änderung des Reading state ein Eintrag im log erscheint. Wenn sich nichts ändert, möchte ich aber wenigstens alle 3 Minuten einen Eintrag im log haben.
Ansonsten werden die Logs übers Jahr so groß, dass FHEM sie nicht mehr verarbeiten kann.
Was verstehe ich denn genau falsch? Wie müsste es aussehen? So wie ich es gebaut habe, ist es doch in der Hilfe erklärt?
Zitat von: Gast45 am 03 Februar 2018, 20:19:51
Also ich wollte erreichen, dass bei jeder Änderung des Reading state ein Eintrag im log erscheint.
Ok, dann tut cloneDummy genau das, was Du möchtest. Bei einem cloneDummy "ändert" sich das reading "state" bei jeder Aktualisierung.
Zitat von: Gast45 am 03 Februar 2018, 20:19:51
Ansonsten werden die Logs übers Jahr so groß, dass FHEM sie nicht mehr verarbeiten kann.
Dann hast Du eher ein organisatorisches Problem in Deiner FHEM Installation. Du solltest Deine Logs soweit aufteilen, z.B. monatlich oder wöchentlich, dass das nicht passiert. Oder die regexp für Dein Logging so anpassen, dass nur das geloggt wird, was Du wirklich brauchst.
Ich möchte nur Änderungen loggen, keine Aktualisierungen mit unveränderten Werten.
Bei Wetterdaten macht aber nur eine einzige Datei für das ganze Jahr am meisten Sinn, weil man so auch den Temperaturverlauf mal über das ganze Jahr in einem Plot darstellen kann. Deshalb wird das wahrscheinlich auch die Standard-Definition von FHEM für Temperatursensoren sein?!
Zitat von: Gast45 am 03 Februar 2018, 21:11:47
Bei Wetterdaten macht aber nur eine einzige Datei für das ganze Jahr am meisten Sinn, weil man so auch den Temperaturverlauf mal über das ganze Jahr in einem Plot darstellen kann.
Quatsch. Das mit dem Jahresplot funktioniert auch, wenn Du die Logdateien täglich neu erstellen lässt. Vorausgesetzt, Du hast die Dateien das Jahr über alle aufbewahrt.
Zitat von: Gast45 am 03 Februar 2018, 21:11:47
Ich möchte nur Änderungen loggen, keine Aktualisierungen mit unveränderten Werten
Dann solltest Du beaser kein cloneDummy dafür verwenden (genauer: nicht das reading state eines cloneDummy)
Ok, dann probiere ich das mit den monatlichen Dateien nochmal aus, aber ich meine FHEM hat es nicht geschafft 12 Dateien zu öffnen. Aber das bringt mir am Ende ja auch nichts. Ob eine Datei zu groß ist, oder die Summe von 12 Dateien genauso groß :)
Ich hatte schon mal an halbjährlich gedacht, aber dafür gibt es keine Variable im Linux. Ich muss also die geloggten Daten reduzieren. Ständig gleiche Werte haben ja auch keinenwirklichen Informationsgehalt.
Was das Reading betrifft hatte ich es auch mal mit temperature und humidity statt state versucht. Funktionierte aber auch nicht.
Das Attribut hatte ich richtig geschrieben (event-on-change-reading). Kann man ja nicht falsch zusammenklicken ;)
Ich habe mir jetzt erstmal geholfen, indem ich die cloneDummies ersetzt habe durch manuell angelegte Dummies
define SensorAussen dummy
attr SensorAussen event-min-interval .*:180
attr SensorAussen event-on-change-reading state
in die ich alle 10 Sekunden per notify die Werte aus der Quelle kopiere.
define cp_SensorAussenQuelle_to_SensorAussen at +*00:00:10 { my $temp= ReadingsVal("SensorAussenQuelle","temperature",0) ; my $hum= ReadingsVal("SensorAussenQuelle","humidity",0) ; fhem("set SensorAussen T: $temp H: $hum");}
Hier scheint die von mir gewählte event-Definition zu wirken.
Jedenfalls sieht das Log jetzt so aus:
2018-02-04_13:14:31 SensorAussen T: 2.2 H: 75.0 D: -1.8 A: 4.2
2018-02-04_13:15:31 SensorAussen T: 2.1 H: 75.0 D: -1.9 A: 4.2
2018-02-04_13:17:41 SensorAussen T: 2.1 H: 76.0 D: -1.7 A: 4.3
2018-02-04_13:18:41 SensorAussen T: 1.7 H: 76.0 D: -2.1 A: 4.1
2018-02-04_13:21:41 SensorAussen T: 1.7 H: 76.0 D: -2.1 A: 4.1
2018-02-04_13:24:41 SensorAussen T: 1.7 H: 76.0 D: -2.1 A: 4.1
2018-02-04_13:27:41 SensorAussen T: 1.7 H: 76.0 D: -2.1 A: 4.1
Geänderte Werte erscheinen sofort. Ändern sich die Werte nicht, so erscheint alle 3 Minuten ein Log.