Wann werden Events von FHEM erzeugt ?

Begonnen von dt2510, 31 Oktober 2019, 13:32:58

Vorheriges Thema - Nächstes Thema

dt2510

Wenn ich das richtig verstanden habe werden Events standardmäßig immer bei Änderung oder Aktualisierung mit dem gleichen Wert erzeugt. Dieses Verhalten ließe sich mit event-on-change-reading, event-on-update-reading und event-min-interval verändern um weniger Events zu bekommen.

Protokolliert wird jeder Event standardmäßig im Logfile des Devices oder im DbLog.

Aktuell läuft mein DbLog etwas voll, von daher folgende Überlegung:

- ich verzichte auf alle event-on-... Attribute um alle Events zu erzeugen
- im DbLog nicht benötigte Devices gebe ich im DbLog über excludeDevs an
- im DbLog nicht benötigte Readings gebe ich beim Device mit DbLogExclude an
- um nicht mit Daten überschwemmt zu werden gebe ich für benögte Readings im Device bei DbLogExclude ein MinInterval für das Reading mit

Jetzt sollten nur noch Events von gewünschten Devices/Readings im DbLog landen - identische Einträge auch erst wieder nach Ablauf von MinInterval Sekunden (wenn angegeben).

Liege ich mit dieser Annahme richtig oder habe ich etwas übersehen ?

p.s.: kann ich bei DbLogExclude z.B. folgendes angeben
attr <device> DbLogExclude (temperature|humidity):3600,battery:84000,.*
um nur die Readings temperature, humidity und battery bei Änderung immer (bei Aktualisierung maximal 1x pro Stunde bzw. Tag) in die DbLog zu schreiben und alle anderen Readings nicht oder sollte ich dann lieber generell DbLogInclude in Verbindung mit DbLogSelectionMode Include verwenden ? Ich weiß leider nicht, ob die Angaben bei DbLogExclude sequentiell abgearbeitet werden bzw. wie sich das .* auswirkt ...

marvin78

Events benötigst du auch für andere Dinge als  Logging. Das ist sogar in der Automation in der Regel Nebensache. event-on-. * wird nicht überflüssig, wenn du Logging einschränkst. Zumindest nicht pauschal.

dt2510

Ich möchte ja die Events nicht einschränken - warum auch, sollen alle kommen - sondern nur das Logging. Also brauche ich doch auch keine event-on-.* angaben - oder ?

rabehd

ZitatProtokolliert wird jeder Event standardmäßig im Logfile des Devices oder im DbLog.
Nein, Du legst fest ob es ein Logfile gibt und was da rein kommt. Ich lösche meist die automatisch angelegten Logfiles.
Lieber definiere ich mir selbst die Logfiles und entscheide welches Gerät was (Event) dort rein schreibt.
Das gilt genauso für DBLog.
Deine Aussage ohne das define des Logfiles oder von DBLog ist somit falsch.
Übrigens steht das alles in der Doku und findet man hier mit der Suchfunktion.
Auch funktionierende Lösungen kann man hinterfragen.

dt2510

#4
Zitat von: rabehd am 31 Oktober 2019, 15:17:15
Nein, Du legst fest ob es ein Logfile gibt und was da rein kommt. Ich lösche meist die automatisch angelegten Logfiles.
Lieber definiere ich mir selbst die Logfiles und entscheide welches Gerät was (Event) dort rein schreibt.
Das gilt genauso für DBLog.
Deine Aussage ohne das define des Logfiles oder von DBLog ist somit falsch.
Übrigens steht das alles in der Doku und findet man hier mit der Suchfunktion.

Die automatisch angelegten Logfiles hab' ich auch gelöscht und ein DbLog angelegt wo jetzt auch alles reinläuft. Meine Frage war doch eigentlich ganz einfach (und aus der Dokumentation wurde ich nicht 100% schlau, deshalb hier die Frage):

Aussage 1) event-on-update-reading/event-on-change-reading schränkt die Events selbst ein (die will ich alle haben)
Aussage 2) excludeDevs, DbLogExclude schränkt die Protokollierung ein (da will ich nur bestimmte haben)

Frage: Muss ich IRGENDEIN event-on-.* definieren oder brauche ich die in meinem Fall nicht ?

Bonusfrage: ist die Definition attr <device> DbLogExclude (temperature|humidity):3600,battery:84000,.* korrekt ? Über diese Kombination (mit .* - also alle anderen Readings - am Ende) steht leider nix in der Doku

Ich vermute aber mal, dass ich beim DbLog

attr DbLog DbLogSelectionMode Exclude/Include

und beim Device
attr <device> DbLogExclude .*
attr <device> DbLogInclude (temperature|humidity):3600,battery:84000


angeben muss um alle Readings außer den gewünschten zu exkludieren.

dt2510

Zitat von: rabehd am 31 Oktober 2019, 15:17:15
Deine Aussage ohne das define des Logfiles oder von DBLog ist somit falsch.

Wo hab' ich irgendwas davon geschrieben, dass ich kein define der Logfiles bzw. von DbLog mache ???

rabehd

Zitatdass ich kein define der Logfiles bzw. von DbLog mache
Also für Dich. Deine Aussage kann ich nicht nachvollziehen, da Du das define hier nicht reinstellst.

ZitatAussage 1) event-on-update-reading/event-on-change-reading schränkt die Events selbst ein (die will ich alle haben)
Wofür brauchst Du alle?

In der Definition der DBlog oder dem Logfile kannst Du doch festlegen welche Readings geloggt werden.
Wo ist das Problem? Was sit an der Doku unklar?

Helfen würde natüröich dein Define.
Auch funktionierende Lösungen kann man hinterfragen.