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

#1950
In meinem contrib liegt eine neue V von DbRep.
Ich habe die Funktionalität von diffValue erweitert.

Man kann nun einstellen dass sowohl postive (wie bisher) als auch negative Differenzen berechnet werden.
UseCase war die Berechnung von Ladeleistungen (+) als auch Entladeleistungen (-) einer PV-Batterie pro Tag mit eine Stundenaggregation.

Dazu ist das Attr diffAccept erweitert:

diffAccept [+-]<Schwellenwert>

diffAccept legt für die Funktion diffValue fest, bis zu welchem <Schwellenwert> eine Werte-Differenz zwischen zwei unmittelbar aufeinander folgenden Datensätzen akzeptiert werden.
Wird dem Schwellenwert +- (optional) vorangestellt, werden sowohl positive als auch negative Differenzen ausgewertet.

(default: 20, nur positve Differenzen zwischen Vorgänger und Nachfolger)

    Beispiel:
    attr diffAccept +-10000


Bei Schwellenwertüberschreitungen wird das Reading diff_overrun_limit_<Schwellenwert> erstellt.
Es enthält eine Liste der relevanten Wertepaare. Mit verbose 3 werden diese Datensätze ebenfalls im Logfile protokolliert.

(Upgedatet)

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

Tomk

Hallo, ich habe mir mit diffValue die Tageswerte aus der db gezogen und würde diese gerne in einem barchart svg Tageweise darstellen. Die Werte selbst sind wieder in die db geschrieben, aber wie muss ich das svg konfigurieren?


Berechnete Readings:2023-03-02_17-50-27__Qcells__SolarEngeryTotal__DIFF__2023-03-02
58.2000
2023-04-02 14:06:02
2023-03-03_17-47-58__Qcells__SolarEngeryTotal__DIFF__2023-03-03
45.1000
2023-04-02 14:06:02
2023-03-04_17-29-16__Qcells__SolarEngeryTotal__DIFF__2023-03-04
10.1000
2023-04-02 14:06:02

DS_Starter

Ehrlich gesagt verstehe ich die Frage noch nicht ganz.
Du hast ja nach writeToDB Readings in der DB die so heißen sollten:

diff_day_SolarEngeryTotal

Die kannst du doch nun wie gewöhnlich im SVG darstellen bzw. wo genau ist dein Problem ?
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

Tomk

Die SVG nimmt den timestamp von dem db Eintrag für die x Achse. Hier steht aber der Zeitpunkt an dem die Berechnung ausgeführt wurde, nicht der Tag für den die Werte sind.

Ich müsste entweder den Zeitstempel anpassen oder dem Plot beibringen das es den Zeitpunkt aus dem Reading extrahiert...

DS_Starter

ZitatHier steht aber der Zeitpunkt an dem die Berechnung ausgeführt wurde, nicht der Tag für den die Werte sind.
Der Timestamp sollte allerdings der Zeitstempel des Datensatzes sein.
Das schaue ich mir morgen genauer an und melde mich wieder.

Hast du das Attr aggregation auf "day" stehen ?
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 gerade ein diffValue eines Wertes ausgeführt (verbose 5):

2023.04.02 22:50:28.278 4: DbRep Rep.CPU - begin transaction
2023.04.02 22:50:28.287 4: DbRep Rep.CPU - UPDATE history: 2023-04-02 20:08:02|SMA_Energymeter|SMAEM||diff_day_Einspeisung_Wirkleistung_Zaehler|0.0080|, RESULT: 0
2023.04.02 22:50:28.288 4: DbRep Rep.CPU - INSERT history: 2023-04-02 20:08:02|SMA_Energymeter|SMAEM||diff_day_Einspeisung_Wirkleistung_Zaehler|0.0080|, RESULT: 1
2023.04.02 22:50:28.290 4: DbRep Rep.CPU - transaction committed
2023.04.02 22:50:28.291 3: DbRep Rep.CPU - number of lines updated in >LogDB<: 0
2023.04.02 22:50:28.291 3: DbRep Rep.CPU - number of lines inserted into >LogDB<: 1

Man sieht dass der Insert Timestamp in die history der Timestamp des Wertes ist und nicht die Zeit der Ausführung (2023.04.02 22:50:28).
Poste mal bitte noch ein List deines Devices damit ich es evtl. nachstellen kann.
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

Tomk

Merkwürdig, ich dachte das wäre so gewollt das der timestamp der Berechnung hier hinterlegt wird.

Mein device sieht so aus:
defmod Rep.Pv.lm.daily DbRep myDbLog
attr Rep.Pv.lm.daily aggregation day
attr Rep.Pv.lm.daily device Qcells
attr Rep.Pv.lm.daily event-on-change-reading .*
attr Rep.Pv.lm.daily fastStart 1
attr Rep.Pv.lm.daily reading SolarEngeryTotal
attr Rep.Pv.lm.daily readingNameMap Daily_Production
attr Rep.Pv.lm.daily room PV->Reporting
attr Rep.Pv.lm.daily showproctime 1
attr Rep.Pv.lm.daily timestamp_begin previous_month_begin
attr Rep.Pv.lm.daily timestamp_end previous_month_end

FHEM-User22

Guten Morgen,
ich habe mir mal das RAW von Tomk gestiebitzt.

define Rep.Pv.lm.hour DbRep LogDBHome
attr Rep.Pv.lm.hour aggregation no
attr Rep.Pv.lm.hour alias PV letzte Stunde
attr Rep.Pv.lm.hour comment https://forum.fhem.de/index.php?msg=1270728
attr Rep.Pv.lm.hour device FRW_Einspeisung
attr Rep.Pv.lm.hour event-on-change-reading .*
attr Rep.Pv.lm.hour fastStart 1
attr Rep.Pv.lm.hour reading switch_aenergy_total
attr Rep.Pv.lm.hour readingNameMap Daily_Production
attr Rep.Pv.lm.hour room Strom,Strom Einspeisung
attr Rep.Pv.lm.hour showproctime 1
attr Rep.Pv.lm.hour timestamp_begin previous_hour_begin
attr Rep.Pv.lm.hour timestamp_end previous_hour_end
#   DATABASE   fhem
#   DEF        LogDBHome
#   FUUID      642a60c7-f33f-bd9c-c200-48a40829fd3d4947
#   FVERSION   93_DbRep.pm:v8.52.1-s27340/2023-03-19
#   LASTCMD    initial database connect stopped due to attribute 'fastStart'
#   MODEL      Client
#   NAME       Rep.Pv.lm.hour
#   NOTIFYDEV  global,Rep.Pv.lm.hour
#   NR         499
#   NTFY_ORDER 50-Rep.Pv.lm.hour
#   ROLE       Client
#   STATE      initialized
#   TYPE       DbRep
#   UTF8       1
#   HELPER:
#     DBLOGDEVICE LogDBHome
#     IDRETRIES  3
#     PACKAGE    main
#     VERSION    8.52.1
#   READINGS:
#     2023-04-03 07:58:34   state           initialized
#
setstate Rep.Pv.lm.hour initialized
setstate Rep.Pv.lm.hour 2023-04-03 07:58:34 .associatedWith FRW_Einspeisung
setstate Rep.Pv.lm.hour 2023-04-03 07:58:34 state initialized


Bin ich total falsch, ich finde keine Ergebisse. Wo schreibt dbrep die neu erzeugten Readings hin? Oder habe ich einen Denkfehler.

Dankeschön
FHEM auf Raspberry Pi und Proxmox und... und.... und....

DS_Starter

Guten Morgen nach Grimma  :)

Bin ich total falsch, ich finde keine Ergebisse. Wo schreibt dbrep die neu erzeugten Readings hin?

Zumindest in die history Tabelle. Du musst aber ein:

 set ... <Kommando> writeToDB

ausführen.

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

@Tomk,

ich habe dein Setup bei mir nachgestellt.
Wie schon geschrieben werden Diffs des Monats mit den Werte-Timestamp in die DB geschrieben:

Zitat2023.04.03 09:46:59.910 4: DbRep Rep.CPU - UPDATE history: 2023-03-15 23:54:22|SMA_Energymeter|SMAEM||diff_day_Einspeisung_Wirkleistung_Zaehler|8.1357|, RESULT: 1
2023.04.03 09:46:59.913 4: DbRep Rep.CPU - UPDATE history: 2023-03-16 23:48:46|SMA_Energymeter|SMAEM||diff_day_Einspeisung_Wirkleistung_Zaehler|24.2794|, RESULT: 1
2023.04.03 09:46:59.915 4: DbRep Rep.CPU - UPDATE history: 2023-03-17 23:56:04|SMA_Energymeter|SMAEM||diff_day_Einspeisung_Wirkleistung_Zaehler|9.7738|, RESULT: 1
2023.04.03 09:46:59.917 4: DbRep Rep.CPU - UPDATE history: 2023-03-18 23:49:48|SMA_Energymeter|SMAEM||diff_day_Einspeisung_Wirkleistung_Zaehler|9.3645|, RESULT: 1
2023.04.03 09:46:59.932 4: DbRep Rep.CPU - UPDATE history: 2023-03-19 23:08:32|SMA_Energymeter|SMAEM||diff_day_Einspeisung_Wirkleistung_Zaehler|0.5659|, RESULT: 1
2023.04.03 09:46:59.935 4: DbRep Rep.CPU - UPDATE history: 2023-03-20 19:47:01|SMA_Energymeter|SMAEM||diff_day_Einspeisung_Wirkleistung_Zaehler|0.0331|, RESULT: 1
2023.04.03 09:46:59.938 4: DbRep Rep.CPU - UPDATE history: 2023-03-21 23:24:33|SMA_Energymeter|SMAEM||diff_day_Einspeisung_Wirkleistung_Zaehler|4.8647|, RESULT: 1
2023.04.03 09:46:59.940 4: DbRep Rep.CPU - UPDATE history: 2023-03-22 23:52:13|SMA_Energymeter|SMAEM||diff_day_Einspeisung_Wirkleistung_Zaehler|9.8353|, RESULT: 1
2023.04.03 09:46:59.943 4: DbRep Rep.CPU - UPDATE history: 2023-03-23 19:52:52|SMA_Energymeter|SMAEM||diff_day_Einspeisung_Wirkleistung_Zaehler|0.1750|, RESULT: 1
2023.04.03 09:46:59.945 4: DbRep Rep.CPU - UPDATE history: 2023-03-24 23:58:47|SMA_Energymeter|SMAEM||diff_day_Einspeisung_Wirkleistung_Zaehler|1.0459|, RESULT: 1
2023.04.03 09:46:59.948 4: DbRep Rep.CPU - UPDATE history: 2023-03-25 22:17:31|SMA_Energymeter|SMAEM||diff_day_Einspeisung_Wirkleistung_Zaehler|3.2759|, RESULT: 1
2023.04.03 09:46:59.950 4: DbRep Rep.CPU - UPDATE history: 2023-03-26 23:59:44|SMA_Energymeter|SMAEM||diff_day_Einspeisung_Wirkleistung_Zaehler|0.7821|, RESULT: 1
2023.04.03 09:46:59.953 4: DbRep Rep.CPU - UPDATE history: 2023-03-27 23:53:45|SMA_Energymeter|SMAEM||diff_day_Einspeisung_Wirkleistung_Zaehler|9.5597|, RESULT: 1
2023.04.03 09:46:59.955 4: DbRep Rep.CPU - UPDATE history: 2023-03-28 23:36:28|SMA_Energymeter|SMAEM||diff_day_Einspeisung_Wirkleistung_Zaehler|5.8637|, RESULT: 1
2023.04.03 09:46:59.958 4: DbRep Rep.CPU - UPDATE history: 2023-03-29 23:52:56|SMA_Energymeter|SMAEM||diff_day_Einspeisung_Wirkleistung_Zaehler|0.9543|, RESULT: 1
2023.04.03 09:46:59.960 4: DbRep Rep.CPU - UPDATE history: 2023-03-30 23:42:17|SMA_Energymeter|SMAEM||diff_day_Einspeisung_Wirkleistung_Zaehler|1.3963|, RESULT: 1
2023.04.03 09:46:59.962 4: DbRep Rep.CPU - UPDATE history: 2023-03-31 23:35:46|SMA_Energymeter|SMAEM||diff_day_Einspeisung_Wirkleistung_Zaehler|0.2493|, RESULT: 1

Das resultierende SVG habe ich testweise erstellt wie im Anhang.

Hole dir bitte die DbRep Version aus meinem contrib.
Die Version ist noch nicht eingecheckt. Ich hatte wie weiter vorn schon geschrieben die Funktionalität von diffValue erweitert. Möglicherweise habe ich "nebenbei" mit der V einen Bug gefixt (glaube ich allerdings nicht  ;)  )

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

FHEM-User22

Hallo Heiko,

Zitat von: DS_Starter am 03 April 2023, 09:58:28set ... <Kommando> writeToDB

welches Kommando genau? Und nur einmal?

Grüße aus Grimma
FHEM auf Raspberry Pi und Proxmox und... und.... und....

DS_Starter

Zitatwelches Kommando genau? Und nur einmal?

Es gibt einige Kommandos wie maxValue, minValue, diffValue die die Option "writeToDB" anbieten.
Diese Option kannst du immer angeben wenn du es möchtest.
Gibt es noch keine Ergebniswerte in der DB wird ein Insert ausgeführt, anderenfalls erfolgt ein Update auf den existierenden Datensatz. Dadurch wird der Wert in der DB 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

Tomk

Zitat von: DS_Starter am 03 April 2023, 10:05:19@Tomk,

ich habe dein Setup bei mir nachgestellt.
Wie schon geschrieben werden Diffs des Monats mit den Werte-Timestamp in die DB geschrieben:
...

Das resultierende SVG habe ich testweise erstellt wie im Anhang.

Hole dir bitte die DbRep Version aus meinem contrib.
Die Version ist noch nicht eingecheckt. Ich hatte wie weiter vorn schon geschrieben die Funktionalität von diffValue erweitert. Möglicherweise habe ich "nebenbei" mit der V einen Bug gefixt (glaube ich allerdings nicht  ;)  )

LG

vielleicht bin ich auch echt nur zu blöd... ich habe nochmal die Version aus dem Contrib aktualisiert. Aber ich denke das macht kein Unterschied. der Timestamp ist immernoch der gleiche (siehe Foto).
Aber wie hast du das SVG erzeugt... vielleicht mache ich hier einfach was falsch?

Du darfst diesen Dateianhang nicht ansehen.

DS_Starter

#1963
Ach ich glaube jetzt sehe ich es.
Du hast dir direkt die Readings des DbRep-Devices geloggt und versuchst die im SVG wiederzugeben.
Das ist nicht der Weg.

Zunächst setzt du

event-on-update-reading state
Das reicht, die Readings von DbRep muss man üblicherweise nicht loggen oder daraus Events erzeugen, es sei denn man macht es bewusst für die weitere Verarbeitung.

Dann führst du diffValue mit der Option writeToDB aus.

Es entstehen neue Readings in der Datenbank des ausgewerteten Devices, wie in meinem Beispiel:

Device: SMA_Energymeter , neues Reading: diff_day_Einspeisung_Wirkleistung_Zaehler

Diese Readings holst du dir in dein SVG-Device und kannst sie anzeigen.

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

#1964
Ich habe soeben die neue DbRep Version eingecheckt.
diffValue kann mit diffAccept so eingestellt werden dass positive und negative Differenzen verarbeitet werden.

Weiterhin kann sqlCmd (sqlCmdBlocking) das Statement 'describe' verarbeiten.

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