Autor Thema: Modul 93_DbRep - Reporting und Management von Datenbankinhalten (DbLog)  (Gelesen 122230 mal)

Offline DerFrickler

  • Sr. Member
  • ****
  • Beiträge: 587
Das mit dem readingPreventFromDel klappt super!

Gruß!

Offline DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5480
Zitat
Das mit dem readingPreventFromDel klappt super!

Danke für die Rückmeldung !

Die neue Version 3.9 ist auch eingecheckt.

Grüße
Heiko
ESXi 6.5 @NUC6i5SYH mit FHEM auf Debian 10, DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, SSChatBot, SSCal, DbLog/DbRep, Log2Syslog, SMAPortal, Watches, Dashboard
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Offline DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5480
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 6.5 @NUC6i5SYH mit FHEM auf Debian 10, DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, SSChatBot, SSCal, DbLog/DbRep, Log2Syslog, SMAPortal, Watches, Dashboard
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Offline bobyg

  • New Member
  • *
  • Beiträge: 8
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.

Offline DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5480
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 6.5 @NUC6i5SYH mit FHEM auf Debian 10, DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, SSChatBot, SSCal, DbLog/DbRep, Log2Syslog, SMAPortal, Watches, Dashboard
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Offline bobyg

  • New Member
  • *
  • Beiträge: 8
Ja, ich könnte diese Funktion brauchen. Wäre klasse wenn es in einem Update implementiert würde.  ;)

Danke und viele Grüße
bobyg

Offline bobyg

  • New Member
  • *
  • Beiträge: 8
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

Offline DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5480
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
« Letzte Änderung: 29 September 2016, 23:47:53 von DS_Starter »
ESXi 6.5 @NUC6i5SYH mit FHEM auf Debian 10, DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, SSChatBot, SSCal, DbLog/DbRep, Log2Syslog, SMAPortal, Watches, Dashboard
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Offline bobyg

  • New Member
  • *
  • Beiträge: 8
- 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"   ""

Offline DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5480
Zitat
Versuch 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 6.5 @NUC6i5SYH mit FHEM auf Debian 10, DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, SSChatBot, SSCal, DbLog/DbRep, Log2Syslog, SMAPortal, Watches, Dashboard
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Offline DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5480
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 6.5 @NUC6i5SYH mit FHEM auf Debian 10, DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, SSChatBot, SSCal, DbLog/DbRep, Log2Syslog, SMAPortal, Watches, Dashboard
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Offline doesel

  • Full Member
  • ***
  • Beiträge: 131
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

Offline bobyg

  • New Member
  • *
  • Beiträge: 8
Das geht hier ja richtig schnell. Der Grenzwertproblemfix war erfolgreich.

Offline DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5480
Zitat
Das 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 6.5 @NUC6i5SYH mit FHEM auf Debian 10, DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, SSChatBot, SSCal, DbLog/DbRep, Log2Syslog, SMAPortal, Watches, Dashboard
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Offline DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5480
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 6.5 @NUC6i5SYH mit FHEM auf Debian 10, DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, SSChatBot, SSCal, DbLog/DbRep, Log2Syslog, SMAPortal, Watches, Dashboard
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter