DBLoginclude Wertebereichsabhängig loggen

Begonnen von Hackstall, 25 November 2018, 11:51:23

Vorheriges Thema - Nächstes Thema

Hackstall

Hallo,

ich wähle für jedes Device per DBLoginclude den Parameter aus der auch geloggt werden soll.
Das klappt auch ganz gut jedoch suche ich noch nach einer Einschränkung die da lautet:

Wenn Parameter = 0 ist der > 3000 dann nicht loggen. kann ich so eine Einschränkung formulieren
zum Beispiel für desiredTemperature s.u.

attr EG.Ez.Heizungsthermostat DbLogExclude .*
attr EG.Ez.Heizungsthermostat DbLogInclude desiredTemperature,mode,temperature,valveposition,battery


Danke

DS_Starter

#1
So etwas geht mit dem Attribut valueFn im DbLog, z.B.:

attr <dblog> valueFn { if ($VALUE > 3000 ) {$IGNORE=1;} }

Du kannst natürlich weitere Bedingungen hinzufügen -> CommandRef.

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

Hackstall

Danke für die Antwort aber ich verstehe es nicht so richtig.

In meinem Beispiel sind die Reading die geloggt werden zbsp desiredTemperature,mode tc.

Die Bedingung die ich benötige ist für ein Reading welches in meinem Fall desiredTempeature ist.
Nur für dieses Reading würde ich gerne alle werte die > 0 sind in der Datenbank speichern.

In Ihrem Beispiel;
was ist dann für mich <dblog> und wie sage ich das $VALUE desiredTemperature meint.

Sorry aber ich bin nicht so ganz firm mit FHEM.

Danke Andreas

DS_Starter

#3
Naja, für deine konktreten Bedürfnisse musst du das Beispiel anpassen.
Für "desiredTemperature" nimmst du das Reading hinzu:


attr <dblog-Device> valueFn
{
   if ($READING eq "desiredTemperature" && $VALUE > 3000  ) {
     $IGNORE=1;
   }
}


Du kannst natürlich noch erweitern und reguläre Ausdrücke verwenden:


attr <dblog-Device> valueFn
{
   if ($READING =~ /temperature/i && $VALUE > 3000  ) {
        $IGNORE=1;
   }
}


Das obige Beispiel würde alle Readings mit "temperature" im Wortstamm (Groß/Klein ist egal) und einem Wert > 3000 NICHT loggen.
Weitere if's kannst du ebenfalls hinzufügen usw.

Weiteres Beispiel, vielleicht einfacher:


attr <dblog-Device> valueFn
{
   if ($READING =~ /^(desiredTemperature|mode)$/ && $VALUE > 3000  ) {
        $IGNORE=1;
   }
}


Und <dblog> meint immer dein DbLog-Device mit dem du loggst.
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