Hallo,
ich habe zwei DBLog Datenbanken, in denen ich wichtige und unwichtige Werte trennen möchte. Nun frage ich mich, wie das attribut DbLogSelectionMode exclude/include funktionieren soll ? Es wird ja keine Datenbank mit angegeben.
Kann ich das Attribut überhaupt verwenden ?
Jens
??
Das Attribut setzt du doch im dbLog-Device...
Grtz
In der Datenbank setzte ich attribut DbLogSelectionMode exclude/include.
und im device dann DbLogExclude oder DbLogInclude.
Welche Datenbank wird werden dann die Werte geschrieben, wenn ich das in beiden Datenbanken mache ?
Das legt du im define der Datenbank per RegEx fest.
define logdb DbLog ./db.conf .*:.*
Loggt alles in die eine DB.
define logdb DbLog ./db.conf .*:temperature
Loggt alle temperature-Werte aller Devices in die eine DB.
define logdb DbLog ./db.conf Sensor1:.*
Loggt alle Werte von Sensor1 in die eine DB.
So kannst du das am Ende auf 2 DBs aufteilen.
Exclude/Include macht dann nochmal das Feintuning.
https://wiki.fhem.de/wiki/DbLog
Grtz
Anscheinend hab ich in diesem Zusammenhang auch ein Verständnisproblem und komme nicht weiter.
Ich möchte das Reading "state" bei allen Devices loggen und bei ausgewählten Devices noch zusätzliche Readings. Leider schaffe ich nur das eine oder das Andere.
Meine Datenbankdefinitionen:
/opt/fhem/contrib/dblog/db.conf .*:(state).*
DbLogSelectionMode Exclude/Include
In meinen Devices habe ich dann die zusätzlichen Readings hinzu gefügt:
DbLogInclude Therme_Betriebsstunden_Hz,Therme_BrennerFlammesignal
In dem oben angeführten Fall wird jedoch nur der "state" aller Devices in die Datenbank geschrieben, nicht jedoch die Readings welche in DbLogInclude angeführt sind.
Wird DbLogSelectionMode Include gesetzt werden nur die Readings des DbLogInclude geloggt und kein "state" was ich lt. Doku auch so verstanden hätte
Zitat von: yellowpinky am 28 Dezember 2021, 12:57:44
Anscheinend hab ich in diesem Zusammenhang auch ein Verständnisproblem und komme nicht weiter.
Ich möchte das Reading "state" bei allen Devices loggen und bei ausgewählten Devices noch zusätzliche Readings. Leider schaffe ich nur das eine oder das Andere.
Meine Datenbankdefinitionen:
/opt/fhem/contrib/dblog/db.conf .*:(state).*
DbLogSelectionMode Exclude/Include
In meinen Devices habe ich dann die zusätzlichen Readings hinzu gefügt:
DbLogInclude Therme_Betriebsstunden_Hz,Therme_BrennerFlammesignal
In dem oben angeführten Fall wird jedoch nur der "state" aller Devices in die Datenbank geschrieben, nicht jedoch die Readings welche in DbLogInclude angeführt sind.
Wird DbLogSelectionMode Include gesetzt werden nur die Readings des DbLogInclude geloggt und kein "state" was ich lt. Doku auch so verstanden hätte
deine Datenbank loggt nur "state". da kannst mit dem Attribut im Gerät machen was Du willst...
Mein Standart:
in der DB habe ich alles drin. .*:.*
in jedem Gerät habe ich ein DbLogExclude .*
In den geräten wo ich etwas loggen will mache ich das über DbLogInclude.
SelectionMode Exclude/Include.
/Frank
Das ist mir natürlich klar, aber ich möchte nicht alle Geräte nachziehen, wenn ich nur bei ein paar Devices mehr Readings loggen möchte.
Zitat von: yellowpinky am 28 Dezember 2021, 13:16:53
Das ist mir natürlich klar, aber ich möchte nicht alle Geräte nachziehen, wenn ich nur bei ein paar Devices mehr Readings loggen möchte.
wenn Du aber die oberste Ebene auf "state" limitiertst, dann kannst untergeordnet nichts weiteres dazu packen.
kannst ja auch keine Dose rote Gummibärchen kaufen und dich wundern dass keine grünen drin sind, oder? ;-)
ein
attr .* DbLogExclude .*
und
attr .* DbLogInclude state
richtet das global mit zwei Befehlen.
Zitat von: Frank_Huber am 28 Dezember 2021, 13:30:20
wenn Du aber die oberste Ebene auf "state" limitiertst, dann kannst untergeordnet nichts weiteres dazu packen.
kannst ja auch keine Dose rote Gummibärchen kaufen und dich wundern dass keine grünen drin sind, oder? ;-)
ein attr .* DbLogExclude .*
und attr .* DbLogInclude state
richtet das global mit zwei Befehlen.
Danke Frank werde ich testen!
Ich steh nur auf der Leitung, denn bei..
DbLogSelectionMode Include werden ja auch alle Readings die im
DbLogInclude enthalten sind geloggt, nur eben das "state" der obersten Ebene nicht. Anscheinend ist das
DbLogInclude höher priorisiert als die DB Restriktion.
Zitat von: yellowpinky am 28 Dezember 2021, 16:43:05
Ich steh nur auf der Leitung, denn bei..
DbLogSelectionMode Include werden ja auch alle Readings die im DbLogInclude enthalten sind geloggt, nur eben das "state" der obersten Ebene nicht. Anscheinend ist das DbLogInclude höher priorisiert als die DB Restriktion.
Das beantwortet die CRef:
ZitatDbLogSelectionMode
attr <device> DbLogSelectionMode [Exclude|Include|Exclude/Include]
Dieses fuer DbLog-Devices spezifische Attribut beeinflußt, wie die Device-spezifischen Attribute DbLogExclude und DbLogInclude (s.u.) ausgewertet werden.
Fehlt dieses Attribut, wird "Exclude" als Default angenommen.
Exclude: DbLog verhaelt sich wie bisher auch, alles was ueber die RegExp im DEF angegeben ist, wird geloggt, bis auf das, was ueber die RegExp in DbLogExclude ausgeschlossen wird.
Das Attribut DbLogInclude wird in diesem Fall nicht beruecksichtigt
Include: Es wird nur das geloggt was ueber die RegExp in DbLogInclude (im Quelldevice) eingeschlossen wird.
Das Attribut DbLogExclude wird in diesem Fall ebenso wenig beruecksichtigt wie die Regex im DEF. Auch der Devicename (des Quelldevice) geht in die Auswertung nicht mit ein.
Exclude/Include: Funktioniert im Wesentlichen wie "Exclude", nur das sowohl DbLogExclude als auch DbLogInclude geprueft werden. Readings die durch DbLogExclude zwar ausgeschlossen wurden, mit DbLogInclude aber wiederum eingeschlossen werden, werden somit dennoch geloggt.
Zitat von: Frank_Huber am 28 Dezember 2021, 13:30:20
wenn Du aber die oberste Ebene auf "state" limitiertst, dann kannst untergeordnet nichts weiteres dazu packen.
kannst ja auch keine Dose rote Gummibärchen kaufen und dich wundern dass keine grünen drin sind, oder? ;-)
ein attr .* DbLogExclude .*
und attr .* DbLogInclude state
richtet das global mit zwei Befehlen.
Hab ich umgesetzt - funktioniert - LG Daniel