Hallo Zusammen,
ich habe seit einigen Wochen ein ziemlich lästiges Problem, was mein Logfile massiv füllt (um nicht zu sagen vollmüllt).
Für einen Temperatursensor habe ich schon vor längerem die Datenlast reduziert, indem ich einen Dummy per
define AktAussenTemp_WiGa dummy
angelegt habe, welcher alle 60 Sek. mit der aktuellen Außentemperatur über folgendes AT-Kommando aktualisiert wird:
define ATempWiGaAnDummy at +*00:01:00 { my $d= ReadingsVal("Aussentemp_WiGa","getG1",0); fhem("set AktAussenTemp_WiGa $d")}
Hierbei ist "getG1" das Reading des Geräts "Aussentemp_WiGa". Am Dummy wurde dann noch das folgende Attribut hinzugefügt:
attr AktAussenTemp_WiGa event-on-change-reading state
Veränderte Werte werden somit in das Logfile zum Device geschrieben.
Es funktioniert auch alles soweit, jedoch habe ich seit einigen Wochen im FHEM Logfile jede Minute, also
immer wenn das AT-Kommando ausgeführt wird, zwei Einträge mit "... no pending sleeps".
ZitatBeispiel:
2019.01.01 00:38:38 3: set AktAussenTemp_WiGa 5.20 °C : no pending sleeps
2019.01.01 00:38:38 3: ATempWiGaAnDummy: no pending sleeps
Deaktiviere ich das AT, werden natürlich keine Meldungen ins FHEM Logfile geschrieben, jedoch auch keine Temperaturwerte in das Logfile des Device "AktAussenTemp_WiGa" :-\
Es stellt sich nun die Frage, warum diese "... no pending sleeps" Meldungen auftreten und was ich dagegen machen kann?
Ich hoffe Ihr habt einen Tip für mich.
VG,
MacErNed
Hi,
Unabhängig von dem "no pending sleeps": Wieso brauchst du einen extra dummy? Kannst du nicht mit den event-on-* Attributen direkt am Sensor die Datenlast reduzieren?
Grüße,
Oli
Hi Oli,
der Sensor "Aussentemp_WiGa" liefert alle 5 Sek. aktuelle Werte und wird daher nicht geloggt. Mir reichen für ein Logfile mit Diagramm die Änderungen alle 60 Sek.
VG,
MacErNed
Hi MacErNed,
deshalb meine ich event-on-change-reading am Sensor setzen, dann wird nur bei Änderung ein Event erzeugt (und damit ein Logeintrag geschrieben). Ggf. kannst du dabei auch noch einen Threshold setzen, dass nur Änderungen von z.B. größer 0,19 Grad geloggt werden, dass aber (event-min-interval) mindestens ein Eintrag pro Stunde kommen soll (sollte die Temperatur sich nicht ändern)...
Das macht m.E. viel mehr Sinn (und reduziert die Systemlast)
Grüße,
Oli
Hi,
ich weiß auch nicht was pending sleeps sind aber dies hier
{ my $d= ReadingsVal("Aussentemp_WiGa","getG1",0); fhem("set AktAussenTemp_WiGa $d")}
geht auch so
set AktAussenTemp_WiGa [Aussentemp_WiGa:getG1]
Nennt sich set magic (https://commandref.fhem.de/#set) ;)
Und vielleicht verschwindet ja dadurch die Meldung? Ist aber unwahrscheinlich.
Gruß Otto
Hi Otto und Oli,
DANKE für die Tipps :D
Der set-magic-Vorschlag von Otto hat nun schon bewirkt, daß keine "no pending sleeps" mehr ins Logfile geschrieben werden.
Ein Rückbau zur ursprünglichen Lösung erzeugte die Meldungen auch zuverlässig wieder ::)
Na ja, ich verstehe es noch nicht, aber das Problem ist gelöst :)
Den Vorschlag von Oli mit event-on-change-reading muss ich noch umsetzen.
VG
MacErNed
Moin,
was mir noch auffällt: Eigentlich fehlt in dem define im Perl Teil ja ein Semikolon? Verursacht dies die eigenartige Meldung?
https://commandref.fhem.de/commandref_DE.html#command
Also konkret:
define ATempWiGaAnDummy at +*00:01:00 { my $d= ReadingsVal("Aussentemp_WiGa","getG1",0);; fhem("set AktAussenTemp_WiGa $d")}
Gruß Otto