reduceLog (RepDb)

Begonnen von birdy, 20 Juni 2025, 21:20:59

Vorheriges Thema - Nächstes Thema

birdy

Nach dem ich kürzlich auf DbLog umgestellt habe, muss ich mich nun um die Datenpflege kümmern. Die Funktion reduceLog scheint das zu sein wonach ich gesucht habe. Dazu die folgenden Fragen.


  • Welche gültigen Werte gibt es für den Parameter average=In der Hilfe habe ich Hinweise auf hour und day gefunden.
    Sind auch andere Werte wie z.B. Minuten oder Wochen gültig.

  • Ist es auch möglich auf 5, 10, 15, Minuten Einheiten zu reduzieren?

  • Um nur ein bestimmtes Device zu reduzieren habe ich es wie folgt versucht.
set myDbRep reduceLog 11 average=hour INCLUDE=ShellyEM3:power_0
Wenn ich mir das Log ansehe scheint das definierte Device nicht erkannt worden zu sein.  -> %
Habe ich da etwas falsch gemcht oder verstanden?

2025.06.20 19:44:06 5: DbRep myDbRep - BlockingCall with PID "64621" started
2025.06.20 19:44:06 4: DbRep myDbRep - Database Model: POSTGRESQL
2025.06.20 19:44:06 4: DbRep myDbRep - Database connect - user: fhem, UTF-8 option set: no
2025.06.20 19:44:06 5: DbRep myDbRep - Devices for operation -
included (1): %
included with wildcard: 
excluded (0): 
excluded with wildcard:
FHEM  @Debian bullseye @Proxmox VE 8.4.1
GMKtec mit AMD Ryzen 7 5700U
CUL 433(a-culfw), CUL 868(SlowRF), Max-Cube CUN geflash, HM-CFG-USB-2 (HMALND)

DS_Starter

Hallo birdy,

ZitatWelche gültigen Werte gibt es für den Parameter average=In der Hilfe habe ich Hinweise auf hour und day gefunden.
Sind auch andere Werte wie z.B. Minuten oder Wochen gültig.
Nein, es gibt nur average=day und average=hour.


ZitatIst es auch möglich auf 5, 10, 15, Minuten Einheiten zu reduzieren?
Nein, siehe oben.

ZitatUm nur ein bestimmtes Device zu reduzieren habe ich es wie folgt versucht.

Code Auswählen
set myDbRep reduceLog 11 average=hour INCLUDE=ShellyEM3:power_0

Wenn ich mir das Log ansehe scheint das definierte Device nicht erkannt worden zu sein.  -> %
Das scheint ein Bug zu sein den ich mir anschauen muß.
Alternativ setze dir einstweilen die Attr device/reading entsprechend.

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

birdy

Hallo Heiko

Vielen Dank für die schnelle Antwort.
Schade gibt es diese Möglich nicht. Ich hätte mir gewünscht Daten, je älter sie sind, umso mehr zu komprimieren/aggregieren. Da ich eine Solche Funktion benötige (zumindest bilde ich mir das ein) werde ich mir eine Lösung zusammenstellen die dann gleich für meine Bedürfnisse massgeschneidert ist.
(Mein Smart Meter z.B. liefert seine Readings via MQQT im 5 Sekunden Takt. Die die möchte ich über verschiede Stufen aggregieren, biss ich sie dann nach Jahren vollständig lösche.)
Danke und Gruss
birdy
FHEM  @Debian bullseye @Proxmox VE 8.4.1
GMKtec mit AMD Ryzen 7 5700U
CUL 433(a-culfw), CUL 868(SlowRF), Max-Cube CUN geflash, HM-CFG-USB-2 (HMALND)

DS_Starter

Wenn du dir dazu Gedanken machst und eine Lösung für weitere Aggregationen ausarbeitest, kann ich die durchaus in DbRep überführen wenn es sich einfügen lässt. Ich selbst komme aktuell nicht dazu.

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

rabehd

Ich sehe dafür keinen Bedarf. Wenn es SQL kann, dann kann man es ja auch mit sqlcmd machen.
Wenn es SQL nicht kann, dann wird es auch nichts.
Auch funktionierende Lösungen kann man hinterfragen.

DS_Starter

Moin,

ich konnte den Fehler finden und beheben.

Es war ein Fehler im Filter-Regex der sich durch das letzte Zeichen des INCLUDE

 INCLUDE=ShellyEM3:power_0

gezeigt hat.

Der Fix ist eingecheckt aber die V8.53.18 ebenfalls in meinem contrib verfügbar wer sie vorab laden und den Fix anwenden möchte.

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

birdy

Zitat von: DS_Starter am 20 Juni 2025, 23:04:59Wenn du dir dazu Gedanken machst und eine Lösung für weitere Aggregationen ausarbeitest, kann ich die durchaus in DbRep überführen wenn es sich einfügen lässt. Ich selbst komme aktuell nicht dazu.

LG,
Heiko
Hallo Heiko
Dazu eine kurze Rückmeldung von meiner Seite.

Ich zweifle ob das etwas für DbRep sein könnte. Ich mache es für mich wie folgt.
Ich habe mir in der 99_myUtils.pm eine Sub gebaut, die ich täglich via AT Befehl aufrufe. Mit ein paar Parametern damit ich flexibel bin.

Vorgängig stelle aber sicher, dass in der DB für das zu aggregierende Zeitfenster und das gewünschte Device nur sinnvoll aggregierbare Werte vorhanden sind. Es macht keinen Sinn Stati wie open/close zu aggregieren

In der SUB habe ich ein paar SQL Befehle platziert. Zuerst mach ich mir mit DBI eine eigene DB Verbindung. Dann ermittle ich für das gewünschte Device alle vorhanden Readings. Im nächsten Schritt bilde ich für die Readings des gewünschten Device und den gewünschten Zeitabschnitt via AVG Funktion einen Durchschnittswert. Die Resultate schreibe ich in ein Worktabelle. Sobald ich alle gewünschten Durchschnittswerte abgespeichert habe, werden die Originalwerte in der History gelöscht. Danach noch Work wieder zurück in Historytabelle übertragen. Am Schluss lösche ich noch alle Einträge aus Work, fertig.


Gruss, birdy
FHEM  @Debian bullseye @Proxmox VE 8.4.1
GMKtec mit AMD Ryzen 7 5700U
CUL 433(a-culfw), CUL 868(SlowRF), Max-Cube CUN geflash, HM-CFG-USB-2 (HMALND)