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

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

Vorheriges Thema - Nächstes Thema

DerFrickler


DS_Starter

ZitatDas mit dem readingPreventFromDel klappt super!

Danke für die Rückmeldung !

Die neue Version 3.9 ist auch eingecheckt.

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

Hallo zusammen,

ich habe wieder eine neue Version V3.10 im Eingangsthread hinterlegt.
Hinzugekommen ist ein Internal "LASTCMD" damit man immer sieht welches Kommando gerade läuft bzw. welches zuletzt ausgeführt wurde. Manchmal ist es nicht unbedingt ersichtlich (z.B. bei benutzten Readingnamemap) woraus die aktuellen Readings resultierten.
Außerderm habe ich die Berechnungsroutine für "diffValue" mit in den Blockingcall (in den Forkprozess) verschoben. Ich hatte festgestellt, dass bei sehr hohen Datenvolumen die Berechnung sehr ressourcenintensiv ist und die FHEM-Hauptschleife stark belastet hat. Dadurch konnte es zum freeze kommen.
In dem Zusammenhang haben alle Routinen ein Reading "background_processing_time" bekommen welches die verbrauchte Zeit im Hintergrund misst.  Die SQL-Zeit ist ein Teil davon und wird wie bisher für die DB-Zeit ausgewiesen.

Gerne wieder Feedback ...

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

bobyg

Hallo,

erstmal Danke für die Entwicklung dieses sehr braucbaren Moduls! Ich stehe zwar noch am Anfang meiner Umsetzung, allerdings ist mir aufgefallen dass es kein Gegenstück zu "maxValue", also ein "minValue" gibt. Habe ich was übersehen?, Oder gab es bislang keinen Bedarf?

Danke.

DS_Starter

Hallo bobyg,

Nein, du hast nichts übersehen. Bislang hatte diese Funktion niemand vermisst.
Aber das kann ich ja in einem der nächsten Updates mit vorsehen.
Aus deiner Mitteilung entnehme ich dass du daran Interesse hättest ?

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

bobyg

Ja, ich könnte diese Funktion brauchen. Wäre klasse wenn es in einem Update implementiert würde.  ;)

Danke und viele Grüße
bobyg

bobyg

Hallo, ich bin's nochmal

Werte, die den Timestamp YYYY-MM-DD 00:00:00 haben, wirken sich bei mir zusätzlich auf die Berechnungen des Vortags aus. Sie werden also doppelt "behandelt".
Falls ich was übersehen habe, entschuldige ich die Störung, ansonsten freu ich mich auf das Update  :D

Viele Grüße

DS_Starter

Hallo bobyg,

Es ist natürlich die Frage wohin ein Wert genau auf dem Punkt YYYY-MM-DD 00:00:00 gehört, Vortag 24:00:00 oder neuer Tag 00:00:00
Das kann man unterschiedlich sehen  ;)

Ich glaube, mir ist dieser Grenzfall noch nie untergekommen, aber werde das mal näher beleuchten.

EDIT: Stell mal bitte verbose 4 ein, führe deine Selektion aus und poste einen Ausschnitt aus dem Log mit den ausgeführten SQL-Statements. Auch ein List deines DbRep Devices wäre hilfreich.

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

bobyg

- Versuch mal 24:00:00 in Deine Datenbank einzutragen, dann reden wir weiter.  :P Aber ich sehe ein, dieser Punkt ist diskutabel.
- Allerdings erwarte ich bei einem Wert der das Datum YYYY-MM-DD hat, dass er zu diesem Datum gehört und nicht DD-1
- Und unabhäning davon ist das Problem immernoch dass für DbRep YYYY-MM-DD 00:00:00 auch DD-1 ist.

Aus dem Log könnte ich nichts verdächtiges rauslesen:

2016.09.30 00:53:09 4: DbRep dbRepOil - -------- New selection ---------
2016.09.30 00:53:09 4: DbRep dbRepOil - Aggregation: day
2016.09.30 00:53:09 4: DbRep dbRepOil - Timestamp begin human readable: 2016-08-20 00:00:00
2016.09.30 00:53:09 4: DbRep dbRepOil - Timestamp end human readable: 2016-09-30 00:53:09
2016.09.30 00:53:09 4: BlockingCall (sumval_DoParse): created child (3115), uses telnetPort to connect back
2016.09.30 00:53:09 4: DbRep dbRepOil -> Start BlockingCall sumval_DoParse
2016.09.30 00:53:09 4: DbRep dbRepOil - SQL to execute: SELECT SUM(VALUE) FROM `history` where READING = 'Oelstand' AND TIMESTAMP BETWEEN '2016-08-20 00:00:00' AND '2016-08-21' ;
2016.09.30 00:53:09 4: DbRep dbRepOil - SQL to execute: SELECT SUM(VALUE) FROM `history` where READING = 'Oelstand' AND TIMESTAMP BETWEEN '2016-08-21' AND '2016-08-22' ;
2016.09.30 00:53:09 4: DbRep dbRepOil - SQL to execute: SELECT SUM(VALUE) FROM `history` where READING = 'Oelstand' AND TIMESTAMP BETWEEN '2016-08-22' AND '2016-08-23' ;
2016.09.30 00:53:09 4: DbRep dbRepOil - SQL to execute: SELECT SUM(VALUE) FROM `history` where READING = 'Oelstand' AND TIMESTAMP BETWEEN '2016-08-23' AND '2016-08-24' ;
2016.09.30 00:53:09 4: DbRep dbRepOil - SQL to execute: SELECT SUM(VALUE) FROM `history` where READING = 'Oelstand' AND TIMESTAMP BETWEEN '2016-08-24' AND '2016-08-25' ;
2016.09.30 00:53:09 4: DbRep dbRepOil - SQL to execute: SELECT SUM(VALUE) FROM `history` where READING = 'Oelstand' AND TIMESTAMP BETWEEN '2016-08-25' AND '2016-08-26' ;
2016.09.30 00:53:09 4: DbRep dbRepOil - SQL to execute: SELECT SUM(VALUE) FROM `history` where READING = 'Oelstand' AND TIMESTAMP BETWEEN '2016-08-26' AND '2016-08-27' ;
2016.09.30 00:53:09 4: DbRep dbRepOil - SQL to execute: SELECT SUM(VALUE) FROM `history` where READING = 'Oelstand' AND TIMESTAMP BETWEEN '2016-08-27' AND '2016-08-28' ;
2016.09.30 00:53:09 4: DbRep dbRepOil - SQL to execute: SELECT SUM(VALUE) FROM `history` where READING = 'Oelstand' AND TIMESTAMP BETWEEN '2016-08-28' AND '2016-08-29' ;
2016.09.30 00:53:09 4: DbRep dbRepOil - SQL to execute: SELECT SUM(VALUE) FROM `history` where READING = 'Oelstand' AND TIMESTAMP BETWEEN '2016-08-29' AND '2016-08-30' ;
2016.09.30 00:53:09 4: DbRep dbRepOil - SQL to execute: SELECT SUM(VALUE) FROM `history` where READING = 'Oelstand' AND TIMESTAMP BETWEEN '2016-08-30' AND '2016-08-31' ;
2016.09.30 00:53:09 4: DbRep dbRepOil - SQL to execute: SELECT SUM(VALUE) FROM `history` where READING = 'Oelstand' AND TIMESTAMP BETWEEN '2016-08-31' AND '2016-09-01' ;
2016.09.30 00:53:09 4: DbRep dbRepOil - SQL to execute: SELECT SUM(VALUE) FROM `history` where READING = 'Oelstand' AND TIMESTAMP BETWEEN '2016-09-01' AND '2016-09-02' ;
2016.09.30 00:53:09 4: DbRep dbRepOil - SQL to execute: SELECT SUM(VALUE) FROM `history` where READING = 'Oelstand' AND TIMESTAMP BETWEEN '2016-09-02' AND '2016-09-03' ;
2016.09.30 00:53:09 4: DbRep dbRepOil - SQL to execute: SELECT SUM(VALUE) FROM `history` where READING = 'Oelstand' AND TIMESTAMP BETWEEN '2016-09-03' AND '2016-09-04' ;
...
2016.09.30 00:53:10 4: DbRep dbRepOil - SQL to execute: SELECT SUM(VALUE) FROM `history` where READING = 'Oelstand' AND TIMESTAMP BETWEEN '2016-09-28' AND '2016-09-29' ;
2016.09.30 00:53:10 4: DbRep dbRepOil - SQL to execute: SELECT SUM(VALUE) FROM `history` where READING = 'Oelstand' AND TIMESTAMP BETWEEN '2016-09-29' AND '2016-09-30' ;
2016.09.30 00:53:10 4: DbRep dbRepOil - SQL to execute: SELECT SUM(VALUE) FROM `history` where READING = 'Oelstand' AND TIMESTAMP BETWEEN '2016-09-30' AND '2016-09-30 00:53:09' ;
2016.09.30 00:53:10 4: DbRep dbRepOil -> BlockingCall sumval_DoParse finished
2016.09.30 00:53:10 4: Connection accepted from telnetPort_127.0.0.1_46772
2016.09.30 00:53:10 4: DbRep dbRepOil -> Start BlockingCall sumval_ParseDone
2016.09.30 00:53:10 4: DbRep dbRepOil -> BlockingCall sumval_ParseDone finished


Dieser einzelne DB-Eintrag führt zu den Readings in dem Screenshot den ich angängt habe:

"TIMESTAMP"   "DEVICE"   "TYPE"   "EVENT"   "READING"   "VALUE"   "UNIT"
"2016-09-01 00:00:00"   "Oeltank"   "HTTPMOD"   "rl_av_h"   "Oelstand"   "129.000"   ""

DS_Starter

ZitatVersuch mal 24:00:00 in Deine Datenbank einzutragen, dann reden wir weiter.

Ich weiß das es natürlich nicht möglich ist ... es war auch mehr ein philsophischer Aspekt.  ;)
Wie gesagt, ich schau es mir an.

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

Hallo bobyg, @all,

ich habe dieses Grenzwertproblem gefixt und die Funktionen entsprechend angepasst.
Bitte teste(t) mal die Version 3.11.1 aus dem Eingangsthread.
Bei mir klappt das alles tadellos.

Danach würde ich mich dem "minValue" widmen.

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

doesel

Hallo,
nur mal so: Auch ich habe das minValue bisher vermisst. Wäre schon toll...
Gruß
Doesel
(FHEM auf Cubietruck mit Igor-Image, 64GB SSD), seit März 19 FHEM auf NUC im Proxmox-Container, 240GB SSD, div. Homematic, Max Fensterkontakte, Onewire über Firmata und FHEM2FHEM auf Raspberrys, MySensors, Jeelink-Clone mit GSD-Modul, CUL, SDM220Modbus, Logo!8, WS980WiFi

bobyg

Das geht hier ja richtig schnell. Der Grenzwertproblemfix war erfolgreich.

DS_Starter

ZitatDas geht hier ja richtig schnell. Der Grenzwertproblemfix war erfolgreich.

Danke für die Rückinfo  :)  Dann checke ich diese Version auch ein. Sie ist dann morgen früh regulär mit dem Update verfügbar.
Wenn ich eine Testversion mit "minValue" habe, melde ich mich wieder und stelle sie hier wie gewohnt bereit.

schönes WE und 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

Hallo miteinander,

die Funktion minValue habe ich in der im Eingangsthread hinterlegten Version 3.12 realisiert.
Bitte zieht sie euch runter und viel Spaß beim Test.

viele 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