FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: ramses am 28 Mai 2017, 18:16:04

Titel: Logging Konzept
Beitrag von: ramses am 28 Mai 2017, 18:16:04
Hi,

auf einem Pi läuft FHEM + MySQL und weil mittlerweile ein sehr hohes Logging Aufkommen herrscht, würde ich gerne folgende Punkte in Griff bekommen, da ich soweit gelesen habe nichts "out of the box" zur Verfügung gestellt wird (oder irre ich mich?).
Würde mich auch freuen, Links zu eventuell bereits eingesetzten Logging Konzepte zu bekommen oder Tipps & Tricks

1. Wie kann ich die Anzahl der Reports pro Sensor (und pro Reading) und Zeiteinheit festlegen (z.B. HKT nur 1 mal alle 15 min oder jedes Mal wenn sich was ändert)
2. Wie kann ich festlegen, welche Readings überhaupt geloggt werden sollen.
Z.B. von

2016-12-19_07:32:40 HT.Wohnen TimeInformationHour: 0
2016-12-19_07:32:43 HT.Wohnen mode: manual
2016-12-19_07:32:43 HT.Wohnen battery: ok
2016-12-19_07:32:43 HT.Wohnen desiredTemperature: 21.0
2016-12-19_07:32:43 HT.Wohnen valveposition: 100
2016-12-19_07:32:43 HT.Wohnen 21.0 °C


möchte ich nur desiredTemperatur, valveposition und aktuelles Temp alle 15 min (anstatt alle 3,5 min) loggen und die battery nur 1/Tag

schön wäre es, wenn so etwas die FHEM core behandeln würde und pro Sensor als extra Einstellbereich zur Verfügung stellen würde.

Danke!
Titel: Antw:Logging Konzept
Beitrag von: KernSani am 28 Mai 2017, 18:31:47
Da möchte ich mal freundlich auf die commandref bzw. das Wiki verweisen, eine Suche hier im Forum sollte auch helfen.
Stichworte wären filelog (oder dblog) falls du in die DB loggst), event-on-change-reading, event-min-interval u.ä.
Titel: Antw:Logging Konzept
Beitrag von: Markus M. am 28 Mai 2017, 18:32:57
DbLog (https://wiki.fhem.de/wiki/DbLog)
Attribute:
- DbLogExclude
- DbLogInclude
- event-min-interval
- event-on-change-reading
- event-on-update-reading

Die letzten drei stehen "out of the box" zur Verfügung.
Titel: Antw:Logging Konzept
Beitrag von: ramses am 04 Juni 2017, 23:25:06
ok, vielen Dank für die Infos!

diese sind zwar gute Hinweise, jedoch habe ich damit noch nicht ein Konzept zusammenzufassen. Was ich damit meine, ein "Kochrezept" zu entwickeln um nicht jedes Mal das Rad erneut erfinden zu müssen.

Ich möchte zB (und nicht nur), Werte von einen Temperatursensor so zu speichern, dass ungeachtet von der Vorwerte, ein Logeintrag alle 30 min erfolgen soll und sollte einer der Werte sich innerhalb von 30 min ändern, soll dieser auch geloggt werden.
Der Sensor schickt diese Werte zB alle 30 Sek

2017-03-06_22:45:11 TCM21...._38 battery: low
2017-03-06_22:45:11 TCM21...._38 temperature: 3.3
2017-03-06_22:45:11 TCM21...._38 humidity: 68
2017-03-06_22:45:11 TCM21...._38 T: 3.3 H: 68


und loggen möchte ich nur (batt low wird falsch gemeldet, daher brauche ich es nicht):
2017-03-06_22:45:11 TCM21...._38 T: 3.3 H: 68

ich erwarte auch nicht eine fertige Lösung, jedoch verstehe ich (noch) nicht, ob und wie mit der oben erwähnten Boardmitteln sowas realisiert werden kann.
da ich bestimmt nicht der einzige bin, der sowas braucht, würde sich ein Konzept (umfassende Beispiele, Tips&Tricks, etc) anbieten.

Vielen Dank!
Titel: Antw:Logging Konzept
Beitrag von: KernSani am 04 Juni 2017, 23:38:33
Zitat von: ramses am 04 Juni 2017, 23:25:06
Ich möchte zB (und nicht nur), Werte von einen Temperatursensor so zu speichern, dass ungeachtet von der Vorwerte, ein Logeintrag alle 30 min erfolgen soll und sollte einer der Werte sich innerhalb von 30 min ändern, soll dieser auch geloggt werden.


Um (nur) jede Änderung zu loggen verwendest du event-on-change-reading. Um geringe Schwankungen zu ignorieren, kannst du auch noch einen Threshold setzen, bei mir sieht das beispielsweise so aus:
attr <meinSensor> event-on-change-reading battery,humidity:2,temperature:0.19


Um alle 30 Minuten einen Logeintrag zu bekommen, auch wenn sich nix geändert hat, kannst du z.B. addLog (https://wiki.fhem.de/wiki/Plot-Abriss_vermeiden) verwenden.


Titel: Antw:Logging Konzept
Beitrag von: DS_Starter am 05 Juni 2017, 07:38:42
Noch als kleine Ergänzung:

ZitatUm alle 30 Minuten einen Logeintrag zu bekommen, auch wenn sich nix geändert hat, kannst du z.B. addLog verwenden.

Eine Addlog-Funktion hat DbLog inzwischen out-of-the-box mit an Bord.