Powermeter Werte ausdünnen mit DbRep und darstellen mit Grafana

Begonnen von persching, 27 Dezember 2019, 20:12:49

Vorheriges Thema - Nächstes Thema

persching

Hallo,
ich speichere die Daten meiner Kaffeemaschine mit einem Homematic Powermeter und visualisiere das mit Grafana. Dieses Powermeter führt zu reichlich viel Einträgen in der Datenbank, die ich natürlich nicht dauerhaft halten möchte. Gerne würde ich einfach nur den Durchschnittsverbrauch behalten. Aber meiner Meinung nach funktioniert das nicht wie gewünscht. Hier das Ergebnis einer Woche ohne Durchschnittswerte:

https://ibb.co/vLVWpcp

Danach hab ich folgendes ausgeführt:

Internals:
   DATABASE   fhem
   DEF        logdb
   FUUID      5e063ece-f33f-b0f8-a4ab-35bd6299ab5429d9
   FVERSION   93_DbRep.pm:v8.30.3-s20610/2019-11-28
   LASTCMD    reduceLogNbl average
   MODEL      Client
   NAME       DbRep_BuiltAvgTimeWeight
   NOTIFYDEV  global,DbRep_BuiltAvgTimeWeight
   NR         945
   NTFY_ORDER 50-DbRep_BuiltAvgTimeWeight
   ROLE       Client
   STATE      reduceLog of fhem finished
   TYPE       DbRep
   UTF8       0
   HELPER:
     DBLOGDEVICE logdb
     GRANTS     USAGE,ALL PRIVILEGES
     IDRETRIES  3
     MINTS      2019-11-27 00:00:01
     PACKAGE    main
     VERSION    8.30.3
     CV:
       aggregation no
       aggsec     1
       destr      2019-12-20
       dsstr      2019-11-27
       epoch_seconds_end 1576867420.69304
       mestr      12
       msstr      11
       testr      19:43:40
       tsstr      00:00:01
       wdadd      432000
       yestr      2019
       ysstr      2019
     DBREPCOL:
       COLSET     1
       DEVICE     64
       EVENT      512
       READING    64
       TYPE       64
       UNIT       32
       VALUE      128
     REDUCELOG:
       DbRep_BuiltAvgTimeWeight
       reduceLogNbl
       average
   Helper:
     DBLOG:
       reduceLogState:
         logdb:
           TIME       1577472222.20276
           VALUE      reduceLog finished. Rows processed: 402, deleted: 375, updated: 6
       state:
         logdb:
           TIME       1577467598.17556
           VALUE      initialized
   OLDREADINGS:
   READINGS:
     2019-12-27 19:43:42   background_processing_time 0.47
     2019-12-27 19:43:42   reduceLogState  reduceLog finished. Rows processed: 402, deleted: 375, updated: 6
     2019-12-27 19:43:42   state           reduceLog of fhem finished
Attributes:
   DbLogExclude .*
   DbLogInclude number_rows_deleted,reduceLogState
   averageCalcForm avgTimeWeightMean
   executeBeforeProc set logdb commitCache
   optimizeTablesBeforeDump 1
   reading    power
   room       System->Logs
   timeOlderThan d:7


Und das führt dann zu so einem Ergebnis:

https://ibb.co/hZrj58z

Meiner Meinung nach müssten die Striche immer einfach runter bis auf 0 gehen, dann wäre es ja auch ok. Kann man DbRep so beeinflussen, dass nur Werte > 0 W beachtet werden? Am Besten wäre es noch, wenn der erste und der letzte 0W-Wert in der DB bleiben würde, die dazwischen können gelöscht werden. Somit würde grafana ja die Durchschnittswerte richtig berechnen.

DS_Starter

#1
Hallo persching,

ich denke reduceLog ist für dein Ziel nicht das richtige Mittel. Es heißt übrigens nur reduceLog , nicht reduceLogNbl obwohl es nicht zum Fehler führt.

Wenn du nur einen Anfangs- und Endwert behalten willst, kannst du das Kommando delSeqDoublets verwenden. Wenn du das Attribut seqDoubletsVariance hinreichend hoch einstellst, bleibt jeweils nur der erste und letzte Werte der zu berücksichtigenden Periode (aggregation = day,week,...) in der DB.

Alternativ könntest du dir auch mit averageValue writeToDB einen Durchschnittswert für die relevante Periode berechnen und in die DB zurückschreiben. Da dieser berechnete Wert mit einem anderen  Readingnamen in der DB gespeichert wird, kannst du mit einem anderen DbRep-Device danach deine ganzen Ausgangswerte aus der DB löschen. Das neue Reading nimmst du dann als Grundlage zur Anzeige.

Lies dir mal die Comref zu beiden Befehlen durch. Denke es ist das was zu nutzen könntest.

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

persching

Hallo Heiko,
danke für die Info. Ich werde mir dann wohl mal das mit dem averageValue writeToDB ansehen und versuchen das zu implementieren. :)