Hallo,
Ich hatte diese Frage schon mal im KNX Teil gestellt, nur leider keine Lsung gefunden.
ich möchte meine Daten zukünftig mit DBlog loggen und zwar in verschiedene Datenbanken (Wetter, Raumklima, ...)
Jetzt sehe ich die Schwierigkeit, das bei KNX jedes Device nur den Werte "state" hat.
Mein Ansatz ist nun, mit den "define-Einträgen" nach Device-Name zu filtern und dann verschiedene Datenbanken zu definieren.
define dblog_wetter DbLog ./db/db-wetter.conf (Wetter).*:.*
soll eigentlich nur alle Devices mit Wetter im Namen loggen (Wetter_temp, Wetter_tau, ...)
Zusätzlich sind erst einmal alle Devices ausgeschlossen und mit DbLgSelectionMode Include nur gewünscht Devices freigegeben. Diese sollen aber in verschiedene DBs, je nach Namen, loggen
Leider passiert es nicht und alle devices werden in dieses DB gelogged.
Habt ihr eine Idee .
Danke!
machs mal einfach so:
define dblog_wetter DbLog ./db/db-wetter.conf Wetter.*:.*
lg
Hallo DS_Starter,
Danke für Deinen Tip. Leider funktioniert dieser nicht.
Meine Einstellungen sehe wie folgt aus:
define dblog_wetter DbLog ./db/db-wetter.conf Wetter.*:.*
attr dblog_wetter DbLogSelectionMode Include
attr dblog_wetter DbLogType Current/History
define Garten_absf KNX 1/0/203:dpt14
attr Garten_absf DbLogInclude state
attr Garten_absf IODev EIB
attr Garten_absf alias absolute Luftfeuchte außen
attr Garten_absf format g/m³
attr Garten_absf webCmd :
Zitat2017-12-19 21:09:38|Wetter_feucht|KNX|state: 90.00 %|state|90.00|%
2017-12-19 21:09:39|Wetter_tau|KNX|state: -0.30 °C|state|-0.30|°C
2017-12-19 21:19:37|Wetter_temp|KNX|state: 1.10 °C|state|1.10|°C
2017-12-19 21:19:38|Wetter_feucht|KNX|state: 90.08 %|state|90.08|%
2017-12-19 21:19:38|Wetter_tau|KNX|state: -0.30 °C|state|-0.30|°C
2017-12-19 21:20:12|Garten_absf|KNX|state: 4.728 g/m³|state|4.728|g/m³
Ich teste dies gerade nur mit Garten_absf.
Später soll das Ziel sein, mehrere Definitionen von db mit Filter zu haben und auch mehrerer Devices mit DbLogInclude. Je nachdem was dann in der db definition steht, sollen die Daten dann in verschiedenen Datenbanken je nach Filter.
Vielleicht liegt dies auch an etwas anderem? Ober gibt es einen anderen Ansatz und da liegt der Fehler schon?
Danke für Eure Mühen!!!
Ah, ich sehe du arbeitest mit DbLogSelectionMode Include.
Da musst du aufpassen -> Zitat aus commandref:
Include: Es wird nur das geloggt was ueber die RegExp in DbLogInclude eingeschlossen wird.
Das Attribut DbLogExclude wird in diesem Fall ebenso wenig beruecksichtigt wie die Regex im DEF.
Das bedeutet die Angabe:
Wetter.*:.*
ist wirkungslos. Und nur die Angabe DbLogInclude "state" zählt.
Ich würde das Attr DbLogSelectionMode im DbLog löschen (den default verwenden), dann zieht der Regex im DEF.
Du kannst dann zusätzlich mit den Attributen DbLogExclude bzw. event-on-xxx in den DEVICES steuern welche Readings geloggt werden.
Grüße,
Heiko
HaHa,
es funktioniert.
Also war es kein Syntax-Problem sondern ein Problem des Konzeptes!
Danke!!!
mein Code der jetzt funktioniert:
define dblog_wetter DbLog ./db/db-wetter.conf Wetter.*:state.*
attr dblog_wetter DbLogType Current/History
Somit wird nur der state Wert gelogged und die anderen Readings nicht.
:)
Nur noch als Hinweis ... du loggst das state-Reading. Es gibt das Attribut addStateEvent im DbLog. Das darfst du in dem Fall nicht auf "0" setzen, sonst klappt das loggen des state nicht mehr. Lies dir dazu mal die Erläutrung für dieses Attribut durch.
Grüße
Heiko