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

Online DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3049
Antw:Modul 93_DbRep - Reporting und Management von Datenbankinhalten (DbLog)
« Antwort #840 am: 30 Oktober 2018, 00:06:42 »
Die Version 8.6.0 mit den beschriebenen Erweiterungen und weiteren Verbesserungen in reduceLog ist eingecheckt.
Bitte in commandref nachlesen.

Grüße
Heiko
ESXi 6.5 auf NUC6i5SYH mit FHEM auf Debian 9/64 Bit  (Stretch), DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, DbLog/DbRep, Log2Syslog, Dashboard (interims)
aktive Mitarbeit:SMAEM, SMAInverter
Kaffeekasse: https://www.paypal.me/HMaaz

Online DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3049
Antw:Modul 93_DbRep - Reporting und Management von Datenbankinhalten (DbLog)
« Antwort #841 am: 04 November 2018, 19:25:54 »
Im contrib Verzeichnis

https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

gibt es eine neue DbRep-Version.
In dieser Version habe ich das Attribut "valueFilter", was es ja schon einige Zeit gibt, auch für die folgenden Funktionen verfügbar gemacht:

averageValue, changeValue, countEntries, delEntries,delSeqDoublets, diffValue, exportToFile, fetchrows, maxValue, minValue, reduceLog, sumValue, syncStandby
Der in valueFilter gesetzte Wert wird als REGEXP auf das DB-Feld "VALUE" angewendet und kann dazu dienen, zusätzlich zu den vorhandenen Möglichkeiten die Auswahl der Datensätze hinsichtlich ihres im Feld VALUE enthaltenen Wertes einzuschränken.
Welche regulären Ausdrücke das jeweilige Datenbanksystem verwenden kann, ist der REGEXP-Doku des jeweiligen DB-Systems zu entnehmen.
Für MariaDB kann man sie z.B. hier lesen: https://mariadb.com/kb/en/library/regular-expressions-overview/

Grüße
Heiko
« Letzte Änderung: 04 November 2018, 19:43:10 von DS_Starter »
ESXi 6.5 auf NUC6i5SYH mit FHEM auf Debian 9/64 Bit  (Stretch), DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, DbLog/DbRep, Log2Syslog, Dashboard (interims)
aktive Mitarbeit:SMAEM, SMAInverter
Kaffeekasse: https://www.paypal.me/HMaaz

Online DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3049
Antw:Modul 93_DbRep - Reporting und Management von Datenbankinhalten (DbLog)
« Antwort #842 am: 06 November 2018, 20:44:43 »
Hallo zusammen,

ich habe noch etwas weiter am Modul gearbeitet und das Attribut "fastStart" implementiert.
Was es bewirkt:

* fastStart -
Normalerweise verbindet sich jedes DbRep-Device beim FHEM-Start kurz mit seiner Datenbank um benötigte Informationen abzurufen und das Reading "state" springt bei Erfolg auf "connected". Ist dieses Attribut gesetzt, erfolgt die initiale Datenbankverbindung erst dann wenn das DbRep-Device sein erstes Kommando ausführt.
Das Reading "state" verbleibt nach FHEM-Start solange im Status "initialized". Diese Einstellung kann hilfreich sein wenn viele DbRep-Devices definiert sind.

Liegt im contrib-Verzeichnis.

Grüße,
Heiko

ESXi 6.5 auf NUC6i5SYH mit FHEM auf Debian 9/64 Bit  (Stretch), DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, DbLog/DbRep, Log2Syslog, Dashboard (interims)
aktive Mitarbeit:SMAEM, SMAInverter
Kaffeekasse: https://www.paypal.me/HMaaz

Online DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3049
Antw:Modul 93_DbRep - Reporting und Management von Datenbankinhalten (DbLog)
« Antwort #843 am: 07 November 2018, 22:36:06 »
Version 8.8.0 ist eingecheckt und morgen früh per update verfügbar.
ESXi 6.5 auf NUC6i5SYH mit FHEM auf Debian 9/64 Bit  (Stretch), DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, DbLog/DbRep, Log2Syslog, Dashboard (interims)
aktive Mitarbeit:SMAEM, SMAInverter
Kaffeekasse: https://www.paypal.me/HMaaz

Online DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3049
Antw:Modul 93_DbRep - Reporting und Management von Datenbankinhalten (DbLog)
« Antwort #844 am: 09 November 2018, 15:20:03 »
Hallo zusammen,

ist zwar momentan eher ein Monolog hier  ;) , aber ich möchte euch darüber informieren, dass im contrib Verzeichnis eine neue Version von DbRep liegt
in der ich einen Befehl zur Datenbankbereinigung doppelter (bzw. mehrfacher) Datensätze implementiert habe.

* delDoublets [adviceDelete | delete] - zeigt bzw. löscht doppelte / mehrfach vorkommende Datensätze. Dazu wird Timestamp, Device,Reading und Value ausgewertet.
Die Attribute zur Aggregation,Zeit-,Device- und Reading-Abgrenzung werden dabei berücksichtigt. Ist das Attribut "aggregation" nicht oder auf "no" gesetzt, wird im Standard die Aggregation "day" verwendet.

    adviceDelete    : ermittelt die zu löschenden Datensätze (es wird nichts gelöscht !)
    delete    : löscht die Dubletten


Aus Sicherheitsgründen muss das Attribut "allowDeletion" für die "delete" Option gesetzt sein.
Die Anzahl der anzuzeigenden Datensätze des Kommandos "delDoublets adviceDelete" ist zunächst begrenzt (default 1000) und kann durch das Attribut "limit" angepasst werden. Die Einstellung von "limit" hat keinen Einfluss auf die "delDoublets delete" Funktion, sondern beeinflusst NUR die Anzeige der Daten.
Vor und nach der Ausführung von "delDoublets" kann ein FHEM-Kommando bzw. Perl-Routine ausgeführt werden. (siehe Attribute "executeBeforeProc", "executeAfterProc")

    Beispiel:

    Ausgabe der zu löschenden Records inklusive der Anzahl mit "delDoublets adviceDelete":

    2018-11-07_14-11-38__Dum.Energy__T 260.9_|_2
    2018-11-07_14-12-37__Dum.Energy__T 260.9_|_2
    2018-11-07_14-15-38__Dum.Energy__T 264.0_|_2
    2018-11-07_14-16-37__Dum.Energy__T 264.0_|_2

    Im Werteteil der erzeugten Readings wird nach "_|_" die Anzahl der entsprechenden Datensätze ausgegeben, die mit "delDoublets delete" gelöscht werden.


 
ESXi 6.5 auf NUC6i5SYH mit FHEM auf Debian 9/64 Bit  (Stretch), DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, DbLog/DbRep, Log2Syslog, Dashboard (interims)
aktive Mitarbeit:SMAEM, SMAInverter
Kaffeekasse: https://www.paypal.me/HMaaz

Offline MarkusN

  • Full Member
  • ***
  • Beiträge: 224
    • Markus´ Blog
Antw:Modul 93_DbRep - Reporting und Management von Datenbankinhalten (DbLog)
« Antwort #845 am: 16 November 2018, 09:22:53 »
Um deinen Monolog mal ein bisschen zu unterbrechen  ;D

Ich habe diverse Zähler (Gas, Strom) bei denen ich den aktuellen Tagesverbrauch in eine MySQL DB logge (Module GasCalculator/ElectricityCalculator). Dieser Verbrauch wird jede Nacht zurückgesetzt. Genau genommen interessieren mich hierbei nur die jeweils höchsten Werte pro Tag, alles andere ist eigentlich nur Ballast. Ermöglicht mir dieses Modul alle anderen Werte außer die Tageshöchstwerte zu löschen?

Online DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3049
Antw:Modul 93_DbRep - Reporting und Management von Datenbankinhalten (DbLog)
« Antwort #846 am: 16 November 2018, 10:05:48 »
 :D

Grundsätzlich kann ich deine Frage bejahen.
Erste Möglichkeit die mir einfällt ... man überlegt sich ein schlaues SQL Statement was diese Aufgabe erfüllt und lässt es regelmäßig mit sqlCmd laufen.

Mit den zur Zeit eingebauten Möglichkeiten könntest du auch so vorgehen:

- Attribute device, reading und die Zeitabgrenzung timeDiffToNow = d:3, aggregation = day setzen
- set ... maxValue writeToDB ausführen

Dadurch wird mit jedem Lauf der Tages-Maximalwert des betrachteten Readings mit einem neuen Readingnamen in die DB geschrieben. Betrachtet werden bei jedem Lauf die letzten 3 Tage.
Die neuen Readings kannst du dann in Diagrammen darstellen etc.

Und wenn alles so ist wie du dir es wünscht kannst du mit delEntries alle Originalreadings löschen die älter sind als 3 Tage. Das machst du dann mit einem anderen DbRep Device was entsprechend eingestellt ist.
Ist also auch so möglich vorzugehen.

Vielleicht nehme ich eine solche Funktion noch mit als sqlSpecial auf.  :)

Grüße,
Heiko
« Letzte Änderung: 16 November 2018, 13:54:06 von DS_Starter »
ESXi 6.5 auf NUC6i5SYH mit FHEM auf Debian 9/64 Bit  (Stretch), DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, DbLog/DbRep, Log2Syslog, Dashboard (interims)
aktive Mitarbeit:SMAEM, SMAInverter
Kaffeekasse: https://www.paypal.me/HMaaz

Offline andies

  • Hero Member
  • *****
  • Beiträge: 1552
Antw:Modul 93_DbRep - Reporting und Management von Datenbankinhalten (DbLog)
« Antwort #847 am: 16 November 2018, 17:37:09 »
ich möchte euch darüber informieren, dass im contrib Verzeichnis eine neue Version von DbRep liegt
in der ich einen Befehl zur Datenbankbereinigung doppelter (bzw. mehrfacher) Datensätze implementiert habe.

* delDoublets [adviceDelete | delete] - zeigt bzw. löscht doppelte / mehrfach vorkommende Datensätze. Dazu wird Timestamp, Device,Reading und Value ausgewertet.
Was ist denn der Unterschied zu
set DbLogRep delSeqDoublets delete
FHEM 5.9 auf RaspPi3 (Raspbian:  4.14.34-v7+ ); Perl: v5.20.2
SIGNALduino (433 MHz) und HM-UART (868 MHz)
wenige Brennenstuhl-IT, Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Online DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3049
Antw:Modul 93_DbRep - Reporting und Management von Datenbankinhalten (DbLog)
« Antwort #848 am: 17 November 2018, 08:32:58 »
Guten Morgen,

Zitat
Was ist denn der Unterschied zu
Code: [Auswählen]

set DbLogRep delSeqDoublets delete

Hinter delSeqDoublets  steckt eine andere Logik. Bei dieser Funktion werden nicht nur echte Dubletten (also Datensätze mit identischen Werten in den Feldern TIMESTAMP,DEVICE,READING,VALUE) gelöscht, sondern es werden auch die nachfolgenden Datensätze mit den Werten in DEVICE,READING,VALUE geprüft und bei Gleichheit gelöscht. Wenn du in der Commandref schaust ist die Funktionslogik genau beschrieben.

Die Funktion delDoublets löscht tatsächlich nur echte Dubletten.

Grüße
Heiko
ESXi 6.5 auf NUC6i5SYH mit FHEM auf Debian 9/64 Bit  (Stretch), DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, DbLog/DbRep, Log2Syslog, Dashboard (interims)
aktive Mitarbeit:SMAEM, SMAInverter
Kaffeekasse: https://www.paypal.me/HMaaz
Informativ Informativ x 1 Liste anzeigen