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

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

Vorheriges Thema - Nächstes Thema

knxler

Hallo noch einmal,

ich habe nun auch den Mittelwert auch mal getestet. Der passt auch nicht ganz.

Ich habe mal meine Excelliste angehängt wie ich den Wert berechne.

Grüße

knxler

Hallo Heiko,

jetzt habe ich auch den letzten Datensatz. Super.

Danke!!

Martin

DS_Starter

#632
Zitatjetzt habe ich auch den letzten Datensatz. Super.
Dann haben wir das schonmal geschafft.  :)

Also ich berechne den gewichteten Mittelwert so wie auf der Seite http://massmatics.de/merkzettel/#!837:Gewichteter_Mittelwert beschrieben:

         # zeitgewichteten Mittelwert berechnen
         # http://massmatics.de/merkzettel/#!837:Gewichteter_Mittelwert
         #
         # $tsum = timestamp letzter Messpunkt - timestamp erster Messpunkt
         # $t1 = timestamp wert1
         # $t2 = timestamp wert2
         # $dt = $t2 - $t1
         # $t1 = $t2
         # .....
         # (val1*$dt/$tsum) + (val2*$dt/$tsum) + .... + (valn*$dt/$tsum)
         #

Deine Excel habe ich gelesen, kann aber nicht genau erkennen was/wo es nicht ganz passt. Kannst du noch einen Hinweis geben was du genau meinst ?
Proxmox+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

knxler

Also deine Berechnung entspricht meiner.
Ich habe dein Verfahren in meine Excelliste eingegeben -> selbes Ergebnis.
Ich vermute mal das es Rundungsfehler sind. Eventuell ist es von Vorteil mit großen Werten zu rechnen.
Also erst Multiplizieren und Summe bilden und dann Zuletzt durch die  Anzahl der Sekunden teilen.
Da beim rechnen mit kleinen Werten ein Rundungsfehler entstehen kann. Ist mir mal in einem C-Programm auf einem uC aufgefallen.
Mir ist nicht klar mit welcher Genauigkeit Perl rechnet.


DS_Starter


2018.02.08 21:02:34.559 2: DbRep Rep.LogDB1 - Row: Time: 600, Value: -1, Summe: -1.48538011695906
2018.02.08 21:02:34.560 2: DbRep Rep.LogDB1 - Row: Time: 601, Value: -1, Summe: -1.49242344337798
2018.02.08 21:02:34.561 2: DbRep Rep.LogDB1 - Row: Time: 601, Value: -1, Summe: -1.4994667697969
2018.02.08 21:02:34.561 2: DbRep Rep.LogDB1 - Row: Time: 601, Value: -1, Summe: -1.50651009621582
2018.02.08 21:02:34.562 2: DbRep Rep.LogDB1 - Row: Time: 600, Value: -1, Summe: -1.51354170328962
2018.02.08 21:02:34.563 2: DbRep Rep.LogDB1 - Row: Time: 601, Value: -1, Summe: -1.52058502970854
2018.02.08 21:02:34.563 2: DbRep Rep.LogDB1 - Row: Time: 601, Value: -1, Summe: -1.52762835612746
2018.02.08 21:02:34.564 2: DbRep Rep.LogDB1 - Row: Time: 601, Value: -1, Summe: -1.53467168254638
2018.02.08 21:02:34.564 2: DbRep Rep.LogDB1 - Row: Time: 600, Value: -1, Summe: -1.54170328962018
2018.02.08 21:02:34.565 2: DbRep Rep.LogDB1 - Row: Time: 601, Value: -1, Summe: -1.5487466160391
2018.02.08 21:02:34.566 2: DbRep Rep.LogDB1 - Row: Time: 601, Value: -1, Summe: -1.55578994245802
2018.02.08 21:02:34.566 2: DbRep Rep.LogDB1 - Row: Time: 200, Value: -1, Summe: -1.55813381148262
2018.02.08 21:02:34.567 2: DbRep Rep.LogDB1 - Row: Time: 601, Value: -1, Summe: -1.56517713790153
2018.02.08 21:02:34.568 2: DbRep Rep.LogDB1 - Row: Time: 600, Value: -1, Summe: -1.57220874497533
2018.02.08 21:02:34.568 2: DbRep Rep.LogDB1 - Row: Time: 601, Value: -1, Summe: -1.57925207139425
2018.02.08 21:02:34.569 2: DbRep Rep.LogDB1 - Row: Time: 601, Value: -1, Summe: -1.58629539781317
2018.02.08 21:02:34.570 2: DbRep Rep.LogDB1 - Row: Time: 600, Value: -1, Summe: -1.59332700488697
2018.02.08 21:02:34.570 2: DbRep Rep.LogDB1 - Row: Time: 601, Value: -1, Summe: -1.60037033130589
2018.02.08 21:02:34.571 2: DbRep Rep.LogDB1 - Row: Time: 601, Value: -1, Summe: -1.60741365772481
2018.02.08 21:02:34.571 2: DbRep Rep.LogDB1 - Row: Time: 600, Value: -1, Summe: -1.6144452647986
2018.02.08 21:02:34.572 2: DbRep Rep.LogDB1 - Row: Time: 601, Value: -1, Summe: -1.62148859121752
2018.02.08 21:02:34.573 2: DbRep Rep.LogDB1 - Row: Time: 601, Value: -1, Summe: -1.62853191763644
2018.02.08 21:02:34.573 2: DbRep Rep.LogDB1 - Row: Time: 600, Value: -1, Summe: -1.63556352471024
2018.02.08 21:02:34.574 2: DbRep Rep.LogDB1 - Row: Time: 601, Value: -1, Summe: -1.64260685112916
2018.02.08 21:02:34.575 2: DbRep Rep.LogDB1 - Row: Time: 601, Value: -1, Summe: -1.64965017754808
2018.02.08 21:02:34.575 2: DbRep Rep.LogDB1 - Row: Time: 600, Value: -1, Summe: -1.65668178462188


Die Berechnung erfolgt bis 14 Stellen hinter dem Komma. Erst später im Reading wird gerundet.
Ich habe die Average Funktionen auch noch auf das Verfahren wie bei fetchrows umgestellt und neu als 7.9.0 hochgeladen.

Grüße
Heiko
Proxmox+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

knxler

Hallo Heiko,

ich glaube, dass ich einen Grund gefunden habe. Die Mittelwertbildung hat Probleme mit meinen über eine Routine hinzugefügten Werte.
Ich habe den Log angehängt.

Gruß

DS_Starter

Ja stimmt, weil der String <<addlog mit enthalten ist, ist es kein numerischer Feldwert.
Du müsstest in VALUE nur den Wert als solchen eintragen. Im addlog von DbLog mache ich es so, dass ich addlog als EVENT eintrage. Dann sieht man das in der DB.

LG
Proxmox+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

knxler

Hallo noch mal,

ich werde mich am Wochenende mal um meine Routine kümmern und mich dann melden.
Habe ich die Möglichkeit mit deinem Tool die Daten entsprechend abzuändern?
Wenn nein, dann werde ich es mal per SQL probieren.
Erst einmal vielen Dank für deine Bemühungen.

Bis dann Martin

DS_Starter

Hallo Martin,

sowas kannst du mit DbRep auch nur mit "set ... sqlCmd" machen. Also einem eigenen Statement.
Man kann zwar Devies und Readings umbenennen, aber Values verändern geht noch nicht. Sollte ich aber mal mit vorsehen. Möglicherweise kann man das ganz gut gebrauchen.

Grüße
Heiko
Proxmox+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 Martin,

Den Versionsstand 7.9.0 habe ich noch in der commandref nachgezogen und auch noch einen Filter in die Average-Berchnung eingebaut der nichtnumerische Zeichen aus dem VALUE eliminiert. Das sollte nun auch bei deinen Daten ohne Abänderung so funktionieren.
Den Stand würde ich dann auch einchecken.

Grüße
Heiko
Proxmox+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 Martin, @all,

die weiterentwickelte Version 7.10.0 enthält ein neues SET command "changeValue".

Damit ist es nun möglich die Werte der Readings (Spalte VALUE) zu ändern. Die Attribute device, reading sowie die Attribute zur Zeiteingrenzung (time.*) werden berücksichtigt. Dadurch können zu ändernde Werte eines Readings selektiv eingegrenzt werden.

Syntax:

set name changeValue "alter Wert","neuer Wert"

Die Werte alt/neu können Leerzeichen enthalten. Die Quotes sind Bestandteil der Syntax und wesentlich.

@Martin, damit kannst du deine addlog-Datensätze umarbeiten wenn du möchtest.

LG,
Heiko
Proxmox+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

knxler

Hallo Heiko,

es gibt immer noch einen kleinen Unterschied zwischen dem Mittelwert von deinem Tool und wenn ich den Wert mit Excel berechne. Kannst du mal die einzelnen berechneten Werte im Log-Level 5 ausgeben, dann werde ich einmal die Einzelwerte mit denen in meiner Excelliste vergleichen.

Zu deinem changeValue, so wie ich das verstehe, muss ich jeden einzelnen Wert auslesen und dann Step by Step ändern. Ober habe ich das falsch verstanden?

Gruß Martin

DS_Starter

#642
Halo Martin,

die V7.10.0 habe ich mit verbose 5 an der Stelle stark erweitert.

ZitatZu deinem changeValue, so wie ich das verstehe, muss ich jeden einzelnen Wert auslesen und dann Step by Step ändern. Ober habe ich das falsch verstanden?

Ja, d.h. falsch verstanden. Du setzt das Attr device auf das relevante Device und lässt changeValue wie beschrieben laufen. Dann wird in der ganzen DB der Wert des Readings, welcher auf den angegebenen "alter Wert" matcht, auf "neuer Wert" geändert sofern der Datensatz auch das gesetzte Device enthält.
Du kannst auch noch das Reading angeben. Aber sowohl device als auch reading dienen nur der Eingrenzung beim Select.

Grüße
Heiko
Proxmox+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

knxler

Hallo Heiko,

kannst du auch noch den Dividenden ausgeben? Ich glaube du benutzt einen anderen Dividenden.

Martin

DS_Starter

gemacht.

Zur Erläuterung:  Es wird die Summenzeit verwendet, die sich aus der Differenz des Timestamp des letzten und des ersten Datensatzes ergibt, d.h. nicht unbedingt einen Tag = 86400 Sekunden. Die Summe aller Differenzzeiten zw. den Datensätzen ist gleich der Summenzeit.

Grüße
Heiko
Proxmox+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