Modul 93_DbRep - Reporting und Management von Datenbankinhalten (DbLog)

Begonnen von DS_Starter, 19 Mai 2016, 22:52:13

Vorheriges Thema - Nächstes Thema

DS_Starter

Hallo zusammen,

mir kam die Idee zu diesem Modul durch den Wunsch die Energiedaten meiner PV-Anlage auszuwerten. Ich logge die Energiedaten der PV-Anlage und aller anderen FHEM-Events  über das DbLog-Modul in einer MySQL-DB und möchte mir übersichtlich zum Beispiel die Tageswerte für Einspeisung / Bezug aus der Datenbank aufbereiten.
Daneben sollten ebenfalls die Monatswerte oder auch, je nach Bedarf, für einen bestimmten abgegrenzten Zeitraum, z.B. von Datum/Zeit X bis Datum/Zeit Y usw. die Daten auswertbar sein.

siehe auch diesen Thread : https://forum.fhem.de/index.php/topic,53079.msg448026.html#msg448026

Herausgekommen sind bis jetzt die hier angehängte Modulversionen (Ausgangsversion: 93_DbRep.pm bzw. Weiterentwicklungen) die neben der Erfüllung der beschriebenen Erfordernisse auch allgemein zur Auswertung und Management von DB-Inhalten, welche über das DbLog-Modul geschrieben werden, dienen kann. Der Umfang der Fubktionen wird stetig erweitert wobei darauf geachtet wird dass alle Funktionen nonblocking aufgebaut sind.

Ich benutze es aktuell (so wie meine Anforderung bestand) zur Auswertung und Reporting von Energiezählerwerten aber auch ganz allgemein zur Anzeige und Auswertung von jeglichem DB-Content den die Geräte schreiben. Meistens lasse ich mir die Datensätze der vergangenen 24h in einem DbRep-Device anzeigen um einen Überblick zu erhalten.
Für die Anzeige der Energiedaten habe ich mehrere DbRep-Devices angelegt die über Readingsgroup zusammengeführt werden. (siehe Screenshots)

Ich die bisherige Beschreibung an dieser Stelle gelöscht und im Wiki einen neuen Eintrag für das Modul begonnen.
Ergänzungen sind gerne willkommen.

Link zum Wiki-Eintrag:
http://www.fhemwiki.de/wiki/DbRep_-_Reporting_und_Management_von_DbLog-Datenbankinhalten

Den aktuellen Entwicklungsstand stelle ich stets im contrib-Verzeichnis bereit, den ich nach einer gewissen Testzeit regulär einchecke.

Die Version könnt ihr hier aus contrib herunterladen:

https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter  (Downloadbutton benutzen)

Es können dort mehrere Dateien von Modulen die ich gerade weiterentwickle vorhanden sein. Benutzt bitte den Download-Button hinter dem Dateinamen 93_DbRep.pm.

viele Grüße

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

DS_Starter

Ich habe noch etwas weiter gebaut und neben einigen Codeänderungen eine delete-Funktion für DB-Einträge hinzugefügt.
Daneben habe ich die Funktionen des Moduls mit SQLite als DbLog-DB ausprobiert was auch problemlos funktioniert hat.
Die Beschreibung im ersten Beitrag habe ich angepasst und auch die aktuelle Version dort hinterlegt.

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

DS_Starter

Mit oben angehängten neuen Version (nonblocking) habe ich die Funktion "fetchrows" mit Blocking.pm auf eine nicht blockierende Arbeitsweise umgestellt. Vielleicht kriege ich das noch für alle Funktionen hin ... mal sehen.
Ein kleiner Nachteil ist dabei, dass man nach der Funktionsausführung den Browser refreshen muß um die Ergebnisse zu sehen wenn man sich in  in der Detailansicht befindet.
Zumindest ist das so wenn die Ergebnismenge ziemlich groß ist habe ich festgestellt.
Aber der Vorteil des nicht blockieren (insbesondere bei umfangreichen selects) überwiegt meiner Meinung nach. Solange die Verarbeitung läuft, wird "running" state angezeigt. Ansonsten "done".

EDIT: die Funktion "delEntries" ist nun auch nonblocking ausgeführt und die Datei als (nonblockig) im ersten Beitrag aktualisiert.

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

DS_Starter

Die Funktion "sumValue" wird nun auch nonblocking ausgeführt  -> die aktuelle Version (nonblocking) im ersten Beitrag aktualisiert.
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

DS_Starter

Der Code ist weiterentwickelt und die Funktion maxValue nun ebenfalls nonblocking.
Nun sind die Funktionen delEntries, fetchrows, maxValue und sumValue nonblocking ausgelegt.
Die neue Version nonbl_V2.6 ist im Eingangsthread hinterlegt.

Würde mich über Rückmeldungen freuen wie es bei euch läuft bzw. welche Fehler evtl. auftreten.
Ich sammle die evtl gemeldeten Fehler und mache weiter wenn ich wieder Zeit habe.
Also bitte nicht wundern wenn ich nicht gleich antworte ... bin erstmal anderweitig eingebunden.

VG
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

DS_Starter

Hallo zusammen,

nachdem ich nun wieder etwas Zeit gefunden habe, sind in der im Anfangsthread hochgeladenen Version 2.6.2 zwei fehlerhafte Routinen bzgl. der Berechnung der Wochenaggregation und der MaxVal-Werte korrigiert.

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

DS_Starter

Mit der weiterentwickelten und angehängten Version 2.6.3 ist die Stabilität des Moduls bei Ausfall bzw. Nichterrechbarkeit der Datenbank verbessert worden.
Weitere kleinere Änderungen ...

VG
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

DS_Starter

Die letzten verbliebenen Funktionen countEntries, averageValue habe ich nun mit der angehängten Version 2.8.1 ebenfalls auf nonblocking umgestellt.
Daneben sind noch Änderungen bezüglich der blockingcall Routinen, den SQL-Aufrufen der Funktionen sumValue, maxValue, fetchrows sowie der main-routine eingeflossen.
Weitere kleinere Änderungen.

Da ich bis jetzt keinerlei negative Rückinfos erhalten habe (eigentlich gar keine  ;) ) werde ich das Modul nun in Kürze dokumentieren und im Repository einchecken.

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

DS_Starter

Jetzt habe ich noch die Atribute showproctime und timout hinzugefügt. Zum Einen kann damit die SQL-Zeit (Hintergrund BlockingCall) für eine Funktion ermittelt werden und zum Anderen kann mit timeout die Zeit für den Abbruch des BlockingCall verändert werden (Standard sind 60 Sekunden).

Datei V 2.9  und die Beschreibung sind im ersten Beitrag angepasst.

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

SandroK

Hallo DS_Starter,

kannst Du mir nochmals etwas behilflich sein ?

Mein Define sieht so aus - Siehe 1. Anlage
Mein Device mit Reading sieht so aus - Siehe 2. Anlage
Die Datenbanktabelle sieht so aus - Siehe 3. Anlage

Es tut sich aber nix. Was mache ich verkehrt bzw. was fehlt mir
noch ? Denke es gibt auch ein Problem mit dem Reading, da
insgesamt 3 EnergyCam Devices Ihre Daten in die Tabelle schreiben,
2 davon mit dem Reading "Energy"

Wie bekomme ich eine Tages- bzw. Monatstabelle hin, wie
Du als Beispiel veröffentlicht hast ?

Version 2.9 ist im Einsatz !

Danke Sandro

eldrik

Hi DS_Starter,

dein Modul setze ich derzeit noch nicht ein, doch wäre ich daran interessiert zu wissen ob die Abfrageteile, die du bereits auf nonblocking umgestellt hast im Prinzip auch für das DbLog Modul vom Maintainer übernommen oder per Patch zur Verfügung gestellt werden könnten?

Ich glaube dies wäre eine generelle Bereicherung.

Greetz
Eldrik

DS_Starter

Hi eldrik,

Die Frage könnte eigentlich nur der DbLog-Maintainer beantworten. Sicherlich wären dann einige Anpassungen am DbLog nötig. Ich versuche mich mit diesem Modul auf möglichst flexible Auswertungsscenarien zu konzentrieren um entsprechende Readings bereit zu stellen.
Vielleicht meldet sich ja der Dblog-Maintainer noch dazu.

Grüsse
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

DS_Starter

Hallo Sandro,

Dein define sieht erstmal gut aus. Was passiert denn wenn du ein countentries laufen lässt und nachdem der state von Running (oben) nach done gewechselt hat du ein Browser refresh durchführst ?

Gibt es im Log irgendwelche Meldungen ?

Gruß
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

SandroK

Servus Heiko,

ein countEntries produziert folgenden Logeintrag:

2016.06.27 09:11:28 3: DbRep Mengen - Connection to db mysql:database=fhem;host=localhost;port=3306 established
Undefined subroutine &main::timelocal called at ./FHEM/93_DbRep.pm line 359.


Ein Browserrefresh geht dann gar nicht mehr. FHEM Server geht dann voll in die Knie
Nur ein kompletter Restart des Raspberry lässt FHEM wieder "erwachen".

Wie schon erwähnt ich nutzte die Vers. 2.9 (gestern erst gezogen!)

DS_Starter

Na das sollte nicht sein. Ich schaue mir das heute Abend genauer an. Du kannst es bitte nochmal tun mit gesetzten Zeitgrenzen auf zum Beispiel heute 00:00:00  bis aktuelle Zeit.

Grüsse
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