[erledigt] logdb DbLogInclude keine Daten?

Begonnen von Noname, 26 September 2015, 14:04:27

Vorheriges Thema - Nächstes Thema

Noname

Hallo,

ich will auf logdb umstellen.

Ich habe folgendes eingestellt:

attr global userattr DbLogInclude ...

define logdb DbLog ./db.conf .*:.*
attr logdb DbLogSelectionMode include
attr logdb room Datenbank

define KS300_Wetter KS300 1234 295 1.0
attr KS300_Wetter event-on-change-reading state
attr KS300_Wetter room Wetterstation

attr KS300_Wetter DbLogInclude .*

leider werden keine Werte in die Datenbank geschrieben.

Wenn ich auf DbLogExclude umstelle geht's, allerdings
werden dann alle Daten mitgeschrieben!

Wer kann mir weiterhelfen

Danke bereits im Voraus







betateilchen

Lass das Attribut bei Deinem KS300 komplett weg. Die regexp .* ist ohnehin Unfug.

Hast Du denn geprüft, ob sich überhaupt irgendwelche Werte verändert haben - also ob events erzeugt werden? Mit Deinem event-on-change schränkst Du das ja erheblich ein. Ohne Event = kein Logeintrag.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Noname

#2
Hi,

Events werden erzeugt, da auch Daten ins Filelog gehen:

2015-09-26_16:28:52 KS300_Wetter T: 17.1  H: 57  W: 4.4  R: 632.5  IR: no  WI: 1  WA: 5.3
2015-09-26_16:31:25 KS300_Wetter T: 17.2  H: 57  W: 3.6  R: 632.5  IR: no  WI: 1  WA: 5.3
2015-09-26_16:36:30 KS300_Wetter T: 17.2  H: 57  W: 3.3  R: 632.5  IR: no  WI: 1  WA: 5.2
2015-09-26_16:44:07 KS300_Wetter T: 17.2  H: 57  W: 3.8  R: 632.5  IR: no  WI: 1  WA: 5.2

Attribut bei KS300 weglassen (regexp .* ist ohnehin Unfug),
verstehe ich nicht wie soll ich DbLog mitteilen welche Daten
geschrieben werden sollen?

in der Doku steht:
Wenn DbLog genutzt wird, wird in alle Devices das Attribut DbLogInclude propagiert. DbLogInclude funktioniert im Endeffekt genau wie DbLogExclude, ausser dass eben readings mit diesen RegExp in das Logging eingeschlossen werden koennen, statt ausgeschlossen. Siehe dazu auch das DbLog-Device-Spezifische Attribut DbLogSelectionMode, das beeinflußt wie DbLogExclude und DbLogInclude ausgewertet werden.
Beispiele attr MyDevice1 DbLogInclude .* attr MyDevice2 DbLogInclude state,(floorplantext|MyUserReading):300,battery:3600

betateilchen

Zitat von: Noname am 26 September 2015, 17:05:21

weglassen verstehe ich nicht


Was ist am Wort "weglassen" unverständlich?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Noname

Hi,

ich erwartete eigentlich einen qualifizierten
fachlichen Rat.

Schade!

betateilchen

Einen fachlichen Rat hatte ich Dir gegeben,

ZitatLass das Attribut bei Deinem KS300 komplett weg.

dieser wird von Dir aber in Frage gestellt.

Von den ca. 250 Devices in meiner fhem Installation hat kein einziges das Attribut DbLogInclude, und trotzdem werden genau die ausgewählten Werte in meine Datenbank geloggt, die ich haben möchte.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Noname

ok,

vielleicht haben wir nicht vom gleichen gesprochen.

Also ich möchte von all meine Geräten, nur eine kleine
Auswahl von Geräten und davon nur ausgewählte Werte
in die DB logen.

deswegen dbloginclude.

kannst du mal die relevanten teile deiner config posten?

betateilchen

#7
Ich habe schon verstanden, was Du machen willst.

Wunschgemäß hier der Auszug aus meiner Konfigurationsdatenbank.



define fhemDbLog DbLog ./FHEM/logDB.cfg (.*:lumi.*|.*:batVoltage.*|.*:measured-temp.*|.*:desired.*|.*:actuator.*|.*:valve.*|.*:Bb]attery:.*|.*:temperature.*|.*:humidity.*|.*:dewpoint.*|.*:pressure.*|Melder.*:.*|RM_.*:.*|sunDummy.*:.*|out_Regen.*:.*|.*_SenPwr.*|gds.*)


-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Noname

Danke für die Info,

allerdings hilft mir das nicht weiter.

Bei dir werden z.B. alle Temperaturen aller Geräte in die DB geschrieben.

Ich möchte aber die Auswahl der Geräte selber treffen. Die Angabe über
einen String ist nicht gerade praktikabel. Deswegen sollte die
Auswahl besser im Gerät über atrr .. getroffen werden, so wie bei den Filelogs.


betateilchen

Schau Dir doch die regexp einfach mal genau an, dann wirst Du feststellen, dass dort sowohl einzelne readings aller Geräte geloggt werden (z.B. temperature) als auch alle readings eines bestimmten Gerätes (z.B. out_Regen). Das Ganze kann man auch beliebig kombinieren.

Die Angabe der gewünschten Geräte in der regexp des DEF hat entscheidende Vorteile, beispielsweise dass man die gesamte Auswahl an einer einzelnen Stelle sehen (und bei Bedarf anpassen) kann.

Wenn man nur 5 Devices hat, mag Dein Lösungsansatz vielleicht umsetzbar sein. Aber bei einer größeren Installation suchst Du Dir später einen Wolf.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Virsacer

Zitat von: betateilchen am 26 September 2015, 20:34:41

define fhemDbLog DbLog ./FHEM/logDB.cfg (.*:lumi.*|.*:batVoltage.*|.*:measured-temp.*|.*:desired.*|.*:actuator.*|.*:valve.*|.*:Bb]attery:.*|.*:temperature.*|.*:humidity.*|.*:dewpoint.*|.*:pressure.*|Melder.*:.*|RM_.*:.*|sunDummy.*:.*|out_Regen.*:.*|.*_SenPwr.*|gds.*)

Danke für den Tipp - ich habe meine Config gerade um 77 Zeilen geschrumpft 8)

marvin78

Die Möglichkeit gab es aber schon immer. Ich habe von Anfang an nicht verstanden, wofür man ein DbLogInclude benötigt. Das ist viel zu viel Aufwand.

betateilchen

Zitat von: marvin78 am 27 September 2015, 10:48:55

Ich habe von Anfang an nicht verstanden, wofür man ein DbLogInclude benötigt.


Ich auch nicht.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Virsacer

Ich hab am Anfang alles geloggt...
...und als ich dann gemerkt hab, dass das doch recht schnell recht viel wird hab ich nicht mehr dran gedacht, dass man das ja auch so filtern kann und hab halt nach und nach Excludes und Includes gesetzt :-\

svenkoni

#14
Hallo,

ich glaube, Noname ist noch nicht weitergeholfen worden. Dann versuch ich es mal:

Setze das "DbLogSelectionMode" Attr auf "Exclude/Include". Dann musst Du das DbLogExclude Attribut des Gerätes auf ".*" setzen. Damit wird erstmal nichts geloggt. Das funktioniert bei mir beim Anlegen eines neuen Gerätes automatisch durch ein notify (habe ich in irgendeinem Artikel gelesen).
Nun kannst Du durch setzen des DbLogInclude Attributs einzelne Werte Deiner Wahl loggen lassen. Du bist dann sehr flexibel. Möglicherweise gehts auch anders, aber so funktionierts bei mir prima.

Gruß
Sven