DBRep reducelog auf 3 Werten pro Stunde (min,max und average)

Begonnen von thbo, 07 Oktober 2023, 11:38:27

Vorheriges Thema - Nächstes Thema

thbo

Hallo zusammen,

ich haben mein FHEM nun schon etwas länger am laufen, auf einem Raspi. Ich nutze FHEM hauptsächlich zum Datenloggen von Temperatur/Luftfeuchte und schaltbaren Steckdosen mit "Verbrauchsermittelung".
Ich würde mich als Anfänger in FHEM bezeichnen, weil ich ausser dem Loggin und Anzeige der Daten nicht viel gemacht habe.

Die Datenbank liegt auf einem NAS mit MariaDB5. Die History-Tabelle umfasst mittlerweile 54 Mio Einträge.Das möchte ich reduzieren.
DBRep und reducelog scheint da die richtige Wahl zu sein. Allerdings hätte ich gerne eine Reduktion auf 3 Werten pro Stunde/Tag, min,max und average. Ist sowas möglich mittels reducelog? Und wenn ja, wie lautet der Befehl dafür?

MfG
thbo

DS_Starter

reduceLog kann zwar auf min,max und average reduzieren, aber nicht als UND Verknüpfung. Man muß sich also entscheiden ob man min ODER max ODER average möchte.

Ein gangbarer Weg wäre sequentiell die Befehle:

minValue writeToDB
maxValue writeToDB
averageValue writeToDB

mit aggregation=hour bzw. day abzuarbeiten. Es würden dann neue Readings mit den entsprechenden Ergebissen in die DB geschrieben.
Ist alles berechnet, können alle Ausgangswerte aus der DB gelöscht werden (delEntries).
Ich würde dafür drei (evtl. sogar 6) DbRep-Devices anlegen, welche die entsprechenden Werte in den zwei Aggregationsebenen berechnen und in die DB schreiben.

Müsste man sich vorher ein paar Gedanken um den Gesamtprozess machen, aber möglich wäre es so m.M. nach.
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

rabehd

Ich verstehe nicht warum man mehr als ein DbRep-Devices braucht. Höchstens für die Übersichtlichkeit.

Im Nachgang kann/muss man wohl so vorgehen.
Dabei wäre zu überlegen ob man nicht gleich die gewünschte Werte erzeugt (Statistik-Modul) und in die DB schreibt.
Wenn noch aktuelle Werte geloggt werden, dann muss man nur noch veraltete Werte löschen.
Auch funktionierende Lösungen kann man hinterfragen.

DS_Starter

ZitatIch verstehe nicht warum man mehr als ein DbRep-Devices braucht. Höchstens für die Übersichtlichkeit.
Es macht sich einfacher wenn man z.B. die Abläufe parallelisieren möchte oder wenn man die Attribute, z.B. aggregation, nicht immer ändern möchte.
Es kommt auf die Gestaltung des Gesamtprozesses an. Muß jeder selbst für sich entscheiden.
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

thbo

Hallo Zusammen,

vielen Dank für die Antworten.

Also so wie ich mir das gedacht habe funktioniert es leider nicht.

Ich werde es wohl mit einem eigenen SQL-Tool versuchen.

Vielen Dank für die Antworten.

Mfg
thbo

DS_Starter

Wenn du dir ein eigenes SQL Statement zusammengebaut hast und funktioniert, kannst du dieses im DbRep über
 
  set ... sqlCmd

ausführen lassen. Ich nehme nützliche Statements auch gern entgegen und baue sie in "sqlSpecial" ein.
Dann hätte sie jeder Nutzer zur Verfügung.
Nur so als Hinweis.
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 zusammen, suche gerade auch nach einer einfachen und übersichtlichen Möglichkeit diverse Min, Max und Average Werte zu berechnen. Bei Average würde ich gleichzeit ausdünnen mit ReduceLog... aktuell muss ich scheinbar alles in eigene DbRep-Devices packen was das ganze ziemlich unübersichtlich macht.
Ich würde am liebsten eine Liste mit Device:Readings definieren für die dann Min, Max und Average Werte berechnet werden. Evtl. auch in drei Devices 1. für Min, 2. für Max und 3. für Average...

Gibt es eine solche Möglichkeit evtl. schon und ich sehe den Wald vor lauter Bäumen nicht mehr?

Danke vorab!

DS_Starter

Es gibt im DbLog vorbereitete Getter ReadingsAvgVal ReadingsMinVal ReadingsMaxVal. Wahrscheinlich tun sie das was du möchtest, zumindest was die Anzeige betrifft. Aber Achtung, die Befehle arbeiten blockierend!
Wenn das stört, muß man eine asynchrone Lösung über die nicht blockierende DbRep Befehle verwenden. Geht natürlich zu machen, allerdings muß man ein bisschen mehr Aufwand treiben. Eventuell hilft das Attr autoForward  im DbRep um Ergebnisse von mehreren nacheinander abgelaufenen Befehlen in z.B. einem Dummy zu konsolidieren. Damit hätte man eine Übersicht.

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

Tomk

Danke für deine Antwort! Ich habe noch ein wenig rumgespielt. Was ich nicht ganz verstehe: bei reduceLog kann ich mit Device und Reading mehrere readings in einem Schritt verarbeiten und beispielsweise einen average berechnen. Wenn ich min oder Max Werte ermitteln möchte muss ich ein eigene DbRep pro Reading anlegen.

DS_Starter

Du kannst bei min, max, avg im DbRep auch mehrere dev oder readings angeben, die werden jedoch zusammen behandelt und nicht einzeln. Hier werden die entsprechenden SQL Funktionen der DBMS verwendet. Dafür erstellt das Modul Readings welche man weiterverarbeien kann was bei reducelog nicht der Fall ist und du hast deutlich mehr Aggregationen zur Auswahl gegenùber reducelog.
Mehrere dbrep zu erstellen ist aber auch kein Thema. Einfach kopieren und anpassen.
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