FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Jewe am 16 Oktober 2017, 22:28:57

Titel: DBLog attribut DbLogSelectionMode exclude/include
Beitrag von: Jewe am 16 Oktober 2017, 22:28:57
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
Titel: Antw:DBLog attribut DbLogSelectionMode exclude/include
Beitrag von: C0mmanda am 16 Oktober 2017, 22:41:29
??
Das Attribut setzt du doch im dbLog-Device...

Grtz
Titel: Antw:DBLog attribut DbLogSelectionMode exclude/include
Beitrag von: Jewe am 16 Oktober 2017, 22:59:53
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 ?
Titel: Antw:DBLog attribut DbLogSelectionMode exclude/include
Beitrag von: C0mmanda am 16 Oktober 2017, 23:13:36
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
Titel: Antw:DBLog attribut DbLogSelectionMode exclude/include
Beitrag 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
Titel: Antw:DBLog attribut DbLogSelectionMode exclude/include
Beitrag von: Frank_Huber am 28 Dezember 2021, 13:05:29
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
Titel: Antw:DBLog attribut DbLogSelectionMode exclude/include
Beitrag 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.
Titel: Antw:DBLog attribut DbLogSelectionMode exclude/include
Beitrag von: Frank_Huber am 28 Dezember 2021, 13:30:20
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.
Titel: Antw:DBLog attribut DbLogSelectionMode exclude/include
Beitrag von: yellowpinky am 28 Dezember 2021, 16:43:05
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.
Titel: Antw:DBLog attribut DbLogSelectionMode exclude/include
Beitrag von: Frank_Huber am 28 Dezember 2021, 21:20:31
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.
Titel: Antw:DBLog attribut DbLogSelectionMode exclude/include
Beitrag von: yellowpinky am 29 Dezember 2021, 09:46:54
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