DBLog - Logging bestimmter Geräte nur in "current" Tabelle

Begonnen von PS915, 28 November 2021, 13:17:28

Vorheriges Thema - Nächstes Thema

PS915

Moin Moin!

Ich verwende DBLog mit einer MySQL Datenbank. Derzeit baue ich mir ein Dashboard mit Grafana auf.
Viele "Live"-Daten beziehe ich aus der Tabelle "current".

Zum Beispiel frage ich alle x Sekunden die Leistung meines Stromzählers ab und logge diese per DbLog. Natürlich läuft dabei meine "history" Tabelle unnötig schnell voll.

Daher suche ich einen Weg, bestimmte Geräte nur in die "current" Tabelle loggen zu lassen.

Soweit ich weiß, kann das DBLog aktuell nicht. Ideal wäre es, wenn es ein neues Attribut geben könnte, welches man auf dem betroffenen device setzen könnte aka: "DbLogCurrentOnly" = 1.

Vielleicht wird mein Wunsch ja von den Entwicklern erhört ::)





CoolTux

Also eigentlich kann DbLog das schon. Du musst nur das entsprechende Schema mit angeben. Ich habe einfach 2 verschiedene Schema dafür gemacht. Bei mir allerdings unter PostgreSQL
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

PS915

Du meinst bestimmt:
attr <device> dbSchema <schema>

Das kann ich ja nur im Device TYPE "DbLog" setzen (also im DBLogging Device). So wie ich es verstanden wird das damit global für alle Geräte gesteuert.

Ich möchte folgendes:
Normales DbLogging in current und history. Darüber hinaus möchte ich auf bestimmten Devices "nur" in current loggen.

CoolTux

Zitat von: PS915 am 28 November 2021, 13:42:37
Du meinst bestimmt:
attr <device> dbSchema <schema>

Das kann ich ja nur im Device TYPE "DbLog" setzen (also im DBLogging Device). So wie ich es verstanden wird das damit global für alle Geräte gesteuert.

Ich möchte folgendes:
Normales DbLogging in current und history. Darüber hinaus möchte ich auf bestimmten Devices "nur" in current loggen.

Was hindert Dich daran 2 dbLog Instanzen an zu legen?  ;)
Eines für current und eines für history. In current logst Du alles was Du nicht länger wie z.B. 30 Tage brauchst und in history alles was ewig bleiben soll. Und über die current lässt Du jeden Tag ein Job drüber laufen der alles älter 30 Tage löscht. Das kann DbLog von Hause aus.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

PS915

Ok, ich wusste nicht, dass ich zwei Instanzen von DbLog erstellen kann.

Trotzdem verstehe ich dann nicht, wie ich dann einem Device sagen kann, welches DbLog genutzt werden soll.
In den Devices habe ich ja nur "DBLogInclude" und DBLogExclude" zur Verfügung.  :o

DS_Starter

Zitat
Trotzdem verstehe ich dann nicht, wie ich dann einem Device sagen kann, welches DbLog genutzt werden soll.
In den Devices habe ich ja nur "DBLogInclude" und DBLogExclude" zur Verfügung. 

Dafür kannst du das Attr valueFn  in DbLog nutzen.
In dem DbLog wo du DEV nicht loggen willst, aber alles andere was du eingestellt hast, schreibst du:


attr <DbLog device> valueFn
{
  if ($DEVICE eq "DEV") {
      $IGNORE=1;
  }
}


Und in dem DbLog Device in dem du nur DEV loggen willst, ist es:


attr <DbLog device> valueFn
{
  if ($DEVICE ne "DEV") {
      $IGNORE=1;
  }
}
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

CoolTux

Du kannst auch das ganze include und exclude vergessen und stattdessen RegEX in der DbLog Definition angeben.

defmod logDbHistory DbLog ./fhemLogDb.conf .*:(temperature|dewpoint|humidity|lux|windstrength|rain|pressure|measured-temp|desired-temp|ValvePosition|energy|power).*

Loggt alle Events mit den angegebenen Readings
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net