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

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

Vorheriges Thema - Nächstes Thema

Omega

Ich beschäftige mich gerade mit einigen Umbenennungen (im wesentlichen HM-Devices mit mehreren Kanälen). Trotz Lesens der Doku habe ich noch Fragen.

Meine Vermutung:
Wenn ich mit

set <hm-device> deviceRename name-alt name-neu

arbeite (damit das Device und alle seine Kanäle umbenannt werden), bekommt der DbRep-Agent davon nichts mit und ich muss zusätzlich

set <dbrep-agent> deviceRename name-alt,name-neu

ausführen.
Wirkt hier deviceRename wie bei Homematic, d.h. das Device inkl. der dazugehörenden Kanäle wird bearbeitet oder muss ich in DbRep dann doch jeden Kanal einzeln umbenennen?

Benenne ich dagegen ein einzelnes Device in FHEM um (rename alt neu), führen meine 2 DbRep-Agents (2 DB's) dies automatisch im Hintergrund in den beiden Datenbanken durch und ich muss nichts weiter machen, als die Bearbeitung abzuwarten, um dann das nächste Device umbenennen zu können.

LG
Holger
NUC6i3SYH (FHEM 5.8 in VM)
Homematic: HMLAN, HMUSB, HM-Sec-SD, HM-CC-RT-DN, HM-TC-IT, ... + diverse weitere
LaCrosseGateway, ESPEasy
ZWave

DS_Starter

#931
Hallo Holger,

die DbRep-Agenten arbeiten Event basiert, d.h. die reagieren auf den RENAME Event.
Nun weiß ich nicht add-hoc ob die rename Funktion bei Homematic Events erzeugt.
Wenn nicht, wäre der Weg genau wie von dir beschrieben.

ZitatWirkt hier deviceRename wie bei Homematic, d.h. das Device inkl. der dazugehörenden Kanäle wird bearbeitet oder muss ich in DbRep dann doch jeden Kanal einzeln umbenennen?
Vielleicht habe ich die Frage nicht richtig verstanden, aber deviceRename in DbRep ausgeführt wirkt IMMER nur auf die Datensätze innerhalb der DB und ändert nicht die Devicenamen im FHEM an sich.

LG,
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

Omega

Hallo Heiko,
danke für deine Klarstellung.

Dann werde ich Device und Kanäle einzeln umbenennen in der Annahme, dass DbRep dann seinerseits daraufhin reagiert. Falls nicht habe ich halt etwas Fleißarbeit vor mir  ;).

Danke.
LG
Holger
NUC6i3SYH (FHEM 5.8 in VM)
Homematic: HMLAN, HMUSB, HM-Sec-SD, HM-CC-RT-DN, HM-TC-IT, ... + diverse weitere
LaCrosseGateway, ESPEasy
ZWave

Thowe

Hallo Heiko,
ich könnte zum Reduzieren von Daten eine DB-Funktion gebrauchen, die bei aufsteigenden Values (z.B. von integrierenden Parametern, aber auch Zeitstempel s. Beispiel, die untertags zurückgesetzt werden) auf "negative Flanken" reagiert und dann den letzten hohen und den ersten nach Zurücksetzen in der DB nachbehält.
Beispiel (timestamp,device,value):
Vor Reduktion:
...
2019-07-07 10:01:15;Statusdauer;240:45:26,1
2019-07-07 10:02:15;Statusdauer;240:46:26,1
2019-07-07 10:10:45;Statusdauer;240:54:56,6
2019-07-07 10:13:07;Statusdauer;0:01:27,4
2019-07-07 10:16:16;Statusdauer;0:04:36,3
...

Nach Reduktion:
...
2019-07-07 10:10:45;Statusdauer;240:54:56,6
2019-07-07 10:13:07;Statusdauer;0:01:27,4
...

Viele Grüße,
Thowe

DS_Starter

Hallo Thowe,

möglicherweise reicht dir schon die Funktion "delSeqDoublets" ?
Hast du dir die scho mal angeschaut ? Es ist nicht 100% das was du suchst, kommt dem aber schon nahe.
Ansonsten meldest dich wieder und ich nehme es auf meine ToDo-Liste.
LG,
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

Thowe

Hallo Heiko,
danke für die schnelle Rückmeldung - am Sonntag!
Die Funktion "delSeqDoublets" führt in meinem Fall zu keiner sauberen Datenreduzierung, weil sich der Value von Eintrag zu Eintrag unterschiedlich vergrößert und delSeqDoublets auf beide Flanken reagiert. ich müsste seqDoubletsVariance unter den kleinsten Wert meiner negativen Flanken einstellen, und da rutschen mir zu viele positive Flanken durch, also es verbleiben aufsteigende Datensequenzen in der DB. Falls es getrennte Attribute, z.B. seqDoubletsDiffpos und  seqDoubletsDiffneg inkl. für Zeitwerte gäbe, könnte ich es dafür nutzen.

Viele Grüße,
Thowe

DS_Starter

Hallo Thowe,

habe ich verstanden, glaube ich  :D
Nehme es mal auf meine ToDo. Mal sehen ob ich es noch vor meinem Urlaub schaffe. Bin gerade mit meinem Log2Syslog beschäftigt.
Aber ich vergesse es nicht.  ;)

LG,
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

Aber noch eine Frage ... was genau meinst du mit "..  inkl. für Zeitwerte .." ?
Inwiefern sollen die mit eingehen ?
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

Thowe

Hallo Heiko,
super, wenn Du Dich der Sache annehmen würdest. Aber Urlaub geht vor!
Zu den Zeitwerten: In meinem Beispiel weiter oben hatte ich diesen Value für Statusdauer verwendet. Meine Heizung liefert eine Statusdauer in willkürlichen Abständen. Mit dem letzten hohen und ersten niedrigen Statusdauer-Wert und den jeweiligen Timestamps errechne ich mir eine genauere Dauer des Heizbetriebes bzw. der Ruhezeit.
Viele Grüße,
Thowe

Nighthawk

Hallo Heiko,

gibt es eigentlich die Möglichkeit die großartigen Funktionen delDoublets und delSeqDoublets auch standalone (als einzelne Programme ohne FHEM) zu verwenden?
Hintergrund ist dass mein FHEM PI momentan aus allen Löchern pfeift, sodass die Ausführung daraus über meine mittlerweile 3 Jahre alte DB den Pi sehr schnell ins Stocken bringt.
Da meine DB aber auf einem NAS läuft der eigentlich genug Ressourcen zur Verfügung hat würde ich das große Aufräumen gern darauf ausführen.


Danke und Gruß
Alex

DS_Starter

Hallo Alex,

Das wird leider nicht stand alone funktionieren. Neben sql werden auch Perl Routinen eingesetzt.
Vielleicht hast du die Möglichkeit auf dem nas eine (minimale) fhem instanz zu installieren ?

Lg vom Nordmeer,
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

Nighthawk

Hallo Heiko,

Danke Dir für die Rückmeldung (sogar aus dem Urlaub)!
Darüber habe ich auch schon nachgedacht, werde ich wohl demnächst mal probieren.

Gruß aus Vietnam ;-)
Alex

DS_Starter

Hallo zusammen,

ich habe begonnen meine ToDo-Liste für DbRep abzuarbeiten.

Aktuell wurde das Modul um das Attribut "fetchValueFn" erweitert.
Es besteht nun die Möglichkeit zusammengesetzte Werte im Datenbankfeld VALUE über eine Userfunktion einen interessierenden Einzelwert in den Readings anzuzeigen bzw. weiterzuverarbeiten.

Zum Beispiel das "ram"-Reading des sysmon-Devices sieht mit fetchrows im DbRep so aus:


Total: 986.02 MB, Used: 427.56 MB, 43.36 %, Free: 343.90 MB


Will man z.B. nur den Used-Wert angezeigt bekommen, setzt man im DbRep:


attr Rep.Sysmon.UsedRam fetchValueFn { $VALUE =~ s/^.*Used:\s(.*)\sMB,.*/$1." MB"/e }


Damit ergibt sich nur diese Anzeige:


657.67 MB


Die neue Version 8.22.0 habe ich eingecheckt und ist morgen im update. Für ganz eilige liegt sie auch in meinem contrib (siehe footer)

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

#943
Hallo zusammen,

bisher wurden die im Attribut "device" enthaltenen Einträge, welche ein SQL Wildcard (%) im Namen enthielten nur als solche behandelt wenn sie NICHT Bestandteil einer Liste waren. In letzterem Fall wurde der Eintrag als normaler String gewertet.
Mit der Version 8.25.0 in meinem contrib werden Einträge mit Wildcard auch als solche behandelt, wenn sie sich in einer Liste befinden.

Die Weiterentwicklung geht zurück auf die Frage von pechnase hier: https://forum.fhem.de/index.php/topic,101756.msg952253.html#msg952253

Sie bezieht sich zwar auf das Attr readings. Dies werde ich in einem weiteren Schritt umsetzen.

Würde mich über den einen oder anderen Tester freuen bevor ich die neue Version einchecke.

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

#944
Für das Attribut "reading" habe ich die Änderung nun auch umgesetzt, d.h. SQL Wildcard (%) kann auch in Reading-Listen verwendet werden und wird dort nicht mehr wie bisher als normaler String ausgewertet.

Version 8.26.0 ist zunächst in meinem contrib bereitgestellt (siehe footer).

LG
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