dblog - Link auf der Geräteseite zu den Datensätzen

Begonnen von AndreasR, 20 Oktober 2017, 21:14:03

Vorheriges Thema - Nächstes Thema

AndreasR

Hallo,

ich würde mir einen Link zu den dblog Einträgen unten auf der jeweiligen Geräteseite wünschen ..

Seit der Umstellung auf die Datenbank stehe ich oft da und möchte mir die Historischen Werte ansehen und muss dann - anders als bei Filelog - eine Abfrage auf dem MySqlClient oder phpMyAdmin starten bzw. get logdb history ALL 2017-01-01_00 2017-12-31_23 GERÄTENAME ausführen. 

Ich hatte mir schon angesehen wie die Links unten in der Letzten Zeile
<< Select icon Extend devStateIcon Raw definition Delete this device (logdb) Device specific help >> aufgebaut sind - aber das steckt so tief im System das ich da nicht ranwill und kann  ..

hoffe das ich mich verständlich ausgedrückt habe - und helfe auch gerne mit soweit ich das kann ..

Danke
Andreas

schnitzelbrain

Hallo,

da bin ich auch dabei.
So schön und performant die Umstellung auf DBLOG ist, bei den File Logs hatte man einfach jederzeit auf die Einträge zugriff und musste nicht erst eine Abfrage starten.
Ein Modul ähnlich SVG das die Datenbank durch geht und einfach eine Liste/Tabelle anhand von den Einträgen in der Auswahl erstellt würde es auch schon tun.
Ich meine dies im Sinne von Klappmenüs und nicht GET einträgen die man sich immer eintippen muss oder mit externen Tools

SVG als Tabelle zum Beispiel. Bei der Fehlersuche war die erste Anlaufstelle bei vielem erst mal das Textlog (natürlich auch das FHEM Log generell)

Grüße

DS_Starter

Hallo,

der Post von Andreas ist schon etwas älter und inzwischen weiß ich auch dass er DbRep verwendet.
DbRep wurde genau zu dem Zweck erstellt die Datenbank nach gewissen Kriterien zu durchsuchen, auszuwerten und die Ergebnisse als Tabelle bzw. als Ausgabe der gefundenen Datensätze usw. darzustellen. Es soll einen Blick ins innere der DB ermöglichen ohne externe Tools benutzen zu müssen.
Man könnte sich für jedes interessierende Device ein DbRep-Device erstellen welches die DB nach den relevanten Datensätzen des Device durchsucht und ausgibt (set ... fetchrows history).
Man richtet dieses DbRep-Device einmalig ein und setzt die Attribute wie benötigt damit nur Datensätze des gewünschten Devices selektiert werden (Zeitgrenzen und Readings usw. können ebenfalls abgegrenzt werden).
Vielleicht hilft dies schon etwas.

Grüße
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

schnitzelbrain

#3
Zitat von: DS_Starter am 02 Januar 2018, 23:12:46
Hallo,

der Post von Andreas ist schon etwas älter und inzwischen weiß ich auch dass er DbRep verwendet.
DbRep wurde genau zu dem Zweck erstellt die Datenbank nach gewissen Kriterien zu durchsuchen, auszuwerten und die Ergebnisse als Tabelle bzw. als Ausgabe der gefundenen Datensätze usw. darzustellen. Es soll einen Blick ins innere der DB ermöglichen ohne externe Tools benutzen zu müssen.
Man könnte sich für jedes interessierende Device ein DbRep-Device erstellen welches die DB nach den relevanten Datensätzen des Device durchsucht und ausgibt (set ... fetchrows history).
Man richtet dieses DbRep-Device einmalig ein und setzt die Attribute wie benötigt damit nur Datensätze des gewünschten Devices selektiert werden (Zeitgrenzen und Readings usw. können ebenfalls abgegrenzt werden).
Vielleicht hilft dies schon etwas.

Grüße
Heiko
Hallo Heiko,

dafür dachte ich, war dbrep auch gedacht.
Nach deinem Hinweis, wusste ich auch wie.

Bei der Wiki hatte ich es irgendwie überlesen oder nicht verstanden.

Habs jetzt hinbekommen.

Der einzige Nachteil ist man muss sich mit SQL erst einmal ein Überblick verschaffen was überhaupt in der Db abgelegt wird um dann bei Interesse die Ausgabe entsprechend anzupassen.

Ich war überrascht wieviel in die Datenbank geschrieben wird was vorher als filelog nicht aufgetaucht ist.
Da wäre ein klappmenü ala svg zur Auswahl der Einträge immer noch angenehmer, aber man kann nicht alles haben.

Danke

Schnitzelbrain

Edit, ergänzt.

marvin78


schnitzelbrain

#5
Zitat von: marvin78 am 03 Januar 2018, 08:00:33
Was geschrieben wird, bestimmst du selbst.
So hatte ich das auch gedacht.
Als ich mir dann angeschaut habe was die 200mb in 14 Tagen verursacht hatte, hatte ich 25 devices drin.

Davon wurde 1 bewusst angelegt. Die anderen schrieben anscheinend hinein  sobald logdb da war.
Ich hab jetzt die Einträge gelöscht und mit exclude weiteres logging verhindert.

Wenn alle selbst angelegt werden mach die Auswahl natürlich nur bedingt sinn.

Grüße

Schnitzelbrain

marvin78

Bitte damit beschäftigen. Du hast die volle Kontrolle, wenn du weißt, was du tust.

DS_Starter

#7
ZitatDer einzige Nachteil ist man muss sich mit SQL erst einmal ein Überblick verschaffen was überhaupt in der Db abgelegt wird um dann bei Interesse die Ausgabe entsprechend anzupassen.

Auch dafür gibt es mit DbRep eine Lösung. In dem Wiki-Beispiel wird eine Auswertung aller in der DB enthaltenen Devices bzw. Device/Reading-Kombinationen erstellt und als Tabelle dargestellt:

https://wiki.fhem.de/wiki/DbRep_-_Reporting_und_Management_von_DbLog-Datenbankinhalten#Welche_Device.2FReading-Kombinationen_gibt_es_in_der_Datenbank_.3F

Mit einem AT kann diese Auswertung regelmäßig ausgeführt werden.
Eine Eweiterung ist die hier dargestellte Ermittlung einer Negativliste, d.h. es werden alle Devices ermittelt die eigentlich nicht in der DB vorkommen sollten und per Message zugesendet:

https://wiki.fhem.de/wiki/DbRep_-_Reporting_und_Management_von_DbLog-Datenbankinhalten#Auffinden_von_alten_Devicenamen_in_der_DB_und_versenden.2Floggen_einer_Negativliste

ZitatDa wäre ein klappmenü ala svg zur Auswahl der Einträge immer noch angenehmer, aber man kann nicht alles haben.

Auch das kannst du dir indirekt erstellen. Hast du dir schonmal die DbRep-Funktion "tableCurrentFillup" angeschaut ?
Mit diesem Kommando wird die current Tabelle mit einem Extrakt der in der history-Tabelle vorkommenden Device/Reading-Kombinationen (distinct) aufgefüllt.
Dadurch hast du bei der Erstellung eines SVG automatisch alle in deiner DB vorkommnenden Device/Reading-Kombinationen per DropDown-Liste alphabetisch geordnet zur Verfügung.
Wenn man die Funktion nutzen möchte sollte man im DbLog das Attr "DbLogType" auf "SampleFill/History" setzen.
Weiterhin wäre vor jedem Fillup ein "tableCurrentPurge" ratsam um eine leere current-Tabelle zu füllen. Wenn ich Zeit habe erstelle ich noch einen Wikibeitrag dazu wie man diese Funktion automatisiert nutzen kann.

Grüße
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

schnitzelbrain

Hallo Heiko,

Informationen overflow :-D

Danke für die Infos und Tipps , schau ich mir in Ruhe an.

Anscheinend geht dann doch alles. Super!

Grüße

Schnitzelbrain


schnitzelbrain

Zitat von: marvin78 am 03 Januar 2018, 21:06:10
Bitte damit beschäftigen. Du hast die volle Kontrolle, wenn du weißt, was du tust.
Ja, das mit dem "du weißt, was du tust" ist halt immer so ne Sache.

Ich arbeite mich halt mit Wiki und Forum durch und stelle am Ende fest das der ignorierte/überlesene/nicht verstandene Satz genau das war was ich wollte/brauchte.

Ich hatte mit fhem.Cfg/filelog und svg angefangen und nach der Umstellung auf configdb sowie dblog wurde ich dann erst einmal von Informationen / Anforderungen überrannt.

Mit den hier gewonnen Informationen komme ich aber auf jeden Fall weiter.

Schnitzelbrain


DS_Starter

Hallo,

wie versprochen habe ich einen Wiki-Artikel erstellt, der detailliert die mögliche Verwendung der "tableCurrentFillup"-Funktion im DbRep am Beispiel erläutert und nachvollziehbar macht.

https://wiki.fhem.de/wiki/DbRep_-_Reporting_und_Management_von_DbLog-Datenbankinhalten#Die_current-Tabelle_mit_einem_Extrakt_der_history-Tabelle_f.C3.BCllen_.28tableCurrentFillup.29

Grüße
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

schnitzelbrain

Zitat von: DS_Starter am 05 Januar 2018, 15:21:20
Hallo,

wie versprochen habe ich einen Wiki-Artikel erstellt, der detailliert die mögliche Verwendung der "tableCurrentFillup"-Funktion im DbRep am Beispiel erläutert und nachvollziehbar macht.

https://wiki.fhem.de/wiki/DbRep_-_Reporting_und_Management_von_DbLog-Datenbankinhalten#Die_current-Tabelle_mit_einem_Extrakt_der_history-Tabelle_f.C3.BCllen_.28tableCurrentFillup.29

Grüße
Heiko
Ja sehr gut, danke für die Info.

Grüße und schönes WE

Schnitzelbrain


schnitzelbrain

Zitat von: DS_Starter am 05 Januar 2018, 15:21:20
Hallo,

wie versprochen habe ich einen Wiki-Artikel erstellt, der detailliert die mögliche Verwendung der "tableCurrentFillup"-Funktion im DbRep am Beispiel erläutert und nachvollziehbar macht.

https://wiki.fhem.de/wiki/DbRep_-_Reporting_und_Management_von_DbLog-Datenbankinhalten#Die_current-Tabelle_mit_einem_Extrakt_der_history-Tabelle_f.C3.BCllen_.28tableCurrentFillup.29

Grüße
Heiko

Habs mal angeschaut und für nächste Woche geplant.
Sehr schön beschrieben  :)

Grüße
Schnitzelbrain