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
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
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
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.