Hallo.
Wie kann ich Zahlen grösser 1000 nciht ionslogfile schreiben lassen? ignoreRegexp evt. ?
Immer erstmal einmal in die CommandRef gucken / suchen, ob es da nicht was passendes gibt... ::)
DbLogValueFn
attr <device> DbLogValueFn {}
Wird DbLog genutzt, wird in allen Devices das Attribut DbLogValueFn propagiert. Es kann über einen Perl-Ausdruck auf die Variablen $TIMESTAMP, $READING, $VALUE (Wert des Readings) und $UNIT (Einheit des Readingswert) zugegriffen werden und diese verändern, d.h. die veränderten Werte werden geloggt.
Außerdem hat man Lesezugriff auf $DEVICE (den Namen des Quellgeräts), $EVENT, $LASTTIMESTAMP und $LASTVALUE zur Bewertung in Ihrem Ausdruck.
Die Variablen $LASTTIMESTAMP und $LASTVALUE enthalten Zeit und Wert des zuletzt protokollierten Datensatzes von $DEVICE / $READING.
Soll $TIMESTAMP verändert werden, muss die Form "yyyy-mm-dd hh:mm:ss" eingehalten werden, ansonsten wird der geänderte $timestamp nicht übernommen. Zusätzlich kann durch Setzen der Variable "$IGNORE=1" der Datensatz vom Logging ausgeschlossen werden.
Die devicespezifische Funktion in "DbLogValueFn" wird vor der eventuell im DbLog-Device vorhandenen Funktion im Attribut "valueFn" auf den Datensatz angewendet.
Beispiel
attr SMA_Energymeter DbLogValueFn
{
if ($READING eq "Bezug_WirkP_Kosten_Diff"){
$UNIT="Diff-W";
}
if ($READING =~ /Einspeisung_Wirkleistung_Zaehler/ && $VALUE < 2){
$IGNORE=1;
}
}
attr <DEVICE> DbLogValueFn { $IGNORE = 1 if ($VALUE > 1000);}
attr acceptedRange hat geholfen bis jetzt.
kannte ich nicht
hauptsache es hat dir geholfen :-)