FHEM Forum

FHEM => Automatisierung => Thema gestartet von: cs-online am 17 September 2019, 19:55:00

Titel: DBLogInclude ?
Beitrag von: cs-online am 17 September 2019, 19:55:00
Hallo,

ich habe mein Log auf DB umgestellt und das läuft super, allerdings werden zunächst ja alle Events geloggt. Das wollte ich nun einschränken. Ich habe z.B. bei meinem OBIS Stromzähler

attr Stromzaehler DbLogInclude total_consumption,state,statTotal_consumptionLast,statTotal_consumption,statPowerYearLast,statPowerYear,statPowerMonthLast,statPowerMonth,statPowerHourLast,statPowerHour,statPowerDayLast,statPowerDay,statAnzahl_NeustartsLast,statAnzahl_Neustarts,power,Neustart,Anzahl_Neustarts

versucht, das Logging einzugrenzen und hätte das so verstanden, dass dann auch nur diese Readings geloggt werden, es werden aber trotzdem wie im Anhang viele andere Readings mitgeloggt, interessanterweise aber nicht alle Readings. Das ist bei anderen Devices anscheinend auch so. Ich habe auch schon ohne Leerzeichen nach dem Komma probiert...

Mach ich da was falsch ?
Titel: Antw:DBLogInclude ?
Beitrag von: DS_Starter am 17 September 2019, 20:06:46
Vermutlich hast du im DbLog-Device das Attribut "DbLogSelectionMode" nicht auf "Include" gesetzt.
Standard ist "Exclude".

Grüße.
Heiko
Titel: Antw:DBLogInclude ?
Beitrag von: cs-online am 17 September 2019, 20:24:53
Jepp, genau das wars wohl :-)

Danke dir !!!
Titel: Antw:DBLogInclude ?
Beitrag von: FHEM-User22 am 18 September 2019, 08:07:47
Hallo,
Oh Mann, ich habe solange gesucht. Ich hatte DbLogInclude und nicht DbLogSelectionMode eingestellt. Richtiges lesen hilft.

Kann man einfach die überflüssigen Device-Logs löschen? Meine Datenbank ist in paar Tagen riesig geworden. Ich möchte aber einige Devices behalten. Sonst würde ich bei Null anfangen.

Dankeschön
Titel: Antw:DBLogInclude ?
Beitrag von: DS_Starter am 18 September 2019, 08:19:30
Moin,

ZitatKann man einfach die überflüssigen Device-Logs löschen? Meine Datenbank ist in paar Tagen riesig geworden.

Na klar geht das. Ganz einfach mit DbRep. Wenn du noch etwas Geduld hast, zeige ich es dir bei unserem nächsten Stammtisch.  :D
Wenn ich dazu komme, schreibe ich heute Abend ein kleines How-To ins Wiki.

LG,
Heiko
Titel: Antw:DBLogInclude ?
Beitrag von: FHEM-User22 am 18 September 2019, 09:09:22
Hallo Heiko,

immer wieder Klasse.... Prima.

Mach Dir keinen Streß, ich kann warten. Eine Übersicht, welches Device wieviel Platz braucht wäre in diesem Zusammenhang auch interessant. Aber das sind Wünsche...

Liebe Grüße
Titel: Antw:DBLogInclude ?
Beitrag von: DS_Starter am 18 September 2019, 09:18:35
 :) dein Wunsch kann auch erfüllt werden, zumindest sieht man die anzahl der datensätze aller in der DB enthaltenen Devices.

Liebe Grüsse zurück
Titel: Antw:DBLogInclude ?
Beitrag von: Frank_Huber am 18 September 2019, 09:20:23
Zitat von: FHEM-User22 am 18 September 2019, 09:09:22
Eine Übersicht, welches Device wieviel Platz braucht wäre in diesem Zusammenhang auch interessant. Aber das sind Wünsche...
Das kannst auf SQL Ebene rausziehen:
select `history`.`DEVICE` AS `device`,`history`.`READING` AS `reading`,count(0) AS `number` from `history` group by `history`.`DEVICE`,`history`.`READING`  order by `number` DESC;
Titel: Antw:DBLogInclude ?
Beitrag von: DS_Starter am 18 September 2019, 19:51:50
Wenn man ein DbRep-Device definiert hat, gibt es dort ein Set "sqlSpecial".
Dort sind zur Zeit drei Routinen hinterlegt die man häufiger braucht und die man regelmäßig ausführen möchte/könnte.

So gibt es auch ein

set <dbrep> sqlSpecial allDevCount

Das liefert nach etwas Laufzeit die in der DB vorhandenen Devices und die Anzahl ihrer Datensätze. (einen vordefinierten Setter incl. Readings gibt es auch)
Um die Ausgabe etwas freundlicher zu gestalten, kann man das Attribut "sqlResultFormat = table" setzen.

Ich habe das im DbRep eingebaut um bei Bedarf noch mehr vordefinierte Statements den Usern ausliefern zu können. Wenn jemand also ein Statement hat was es wert wäre dort zu hinterlegen, kann er es mir gerne mitteilen.

Grüße,
Heiko