Hi,
Es gibt einen Thread, der sich damit beschäftigt, gewisse .. Events vom Filelog auszuschließen:
https://forum.fhem.de/index.php/topic,18400.msg122379.html#msg122379
Ich möchte zwei DEVICES vom Filelog ausschließen:
eines für einen PID ( heisst PID_FUBO)
eines für meine DS18B20 (heissen DS18B20_Vorlauftemperatur, DS18B20_Aussentemperatur)
eines für "den Rest".
Nun scheitere ich an der Regex für "Alle Events, ausser denen von den Devices, die PID.* oder DS18B20.* heissen.
Kann jemand helfen?
Habe bereits getestet, aber (?!DS18B20.*) funktioniert nicht.
Auch mit regexr.com habe ich nicht mal eine dort funktionierende Lösung gefunden..
Danke schonmal für eure Hilfe,
grüße,
Stephan
(?!DS18B20_|PID_).*
Hi,
DEF: ./log/EVTS-%m-%Y.log (?!DS18B20_|PID_).*
funktioniert leider nicht:
2017-11-20_13:54:33 DF_controlVL cmd_1
2017-11-20_13:54:33 PID_FUBO processing
2017-11-20_13:54:36 DS18B20_Vorlauf_Waermepumpe T: 24.187
2017-11-20_13:54:36 DS18B20_Vorlauf_Waermepumpe temperature: 24.187
2017-11-20_13:54:38 DS18B20_Aussentemperaturfuehler T: 4.187
2017-11-20_13:54:38 DS18B20_Aussentemperaturfuehler temperature: 4.187
hier noch ein list:
Internals:
CFGFN
DEF ./log/EVTS-%m-%Y.log (?!DS18B20_|PID_).*
NAME FileLog_EVTS
NR 497
NTFY_ORDER 50-FileLog_EVTS
REGEXP (?!DS18B20_|PID_).*
STATE active
TYPE FileLog
currentlogfile ./log/EVTS-11-2017.log
logfile ./log/EVTS-%m-%Y.log
READINGS:
2017-11-20 13:55:34 linesInTheFile 118
Attributes:
Grüße,
Stephan
Und damit?
^(?!DS18B20|PID).*
Hehe, RegEx Kniffeleien. Probier mal:
([^_]*(?<!DS18B20)(?<!PID)_)+[^_]*
So sollte die RegEx an jedem "_" schauen, ob davor kein DS18B20 und kein PID steht.
Zumindestens auf der Kommandozeile hat es geklappt:
perl -e 'my $s="2017-11-20_13:54:36 DS18B20_Vorlauf_Waermepumpe T: 24.187"; print $s=~/^([^_]*(?<!DS18B20)_)+[^_]*$/';
Und mir kein Treffer geliefert...
Hi,
funktioniert, lässt allerdings nur Devices mit _ im Namen durch...
define bumms dummy
set bumms 17
erscheint nicht im Log...
Ich habe notify und FileLog mit dem ignoreRegexp Attribut erweitert.
Geil, dann brauch ich nicht weiterbasteln ;D
Grüße,
Stephan
Hi,
noch eine kleine Frage/Gedankenanstoß:
Imho werden FileLogs oft zum SVG-plotten verwendet.
Wenn SVG ein Problem mit Zeilenumbrüchen hat, was hältst du dann davon, im FileLog direkt auf Zeilenumbrüche zu prüfen und diese ggf. durch Leerzeichen zu ersetzen?
Für den Fall, dass das nicht gewünscht sein könnte, hatte ich diesen Ansatz mit einem zusätzlichen Attribut:
my $SVGLog = AttrVal($ln,"SVGLog",0);
if($isSVGLog){
$t =~ s/\n/ /g;
$n =~ s/\n/ /g;
$s =~ s/\n/ /g;
}
Hey,
Was mir aufgefallen ist: könnte man die Vorbelegung von SET auf was ungefährliches ändern?
also von set FileLogXY absorb FileLogAB
auf set FileLog XY reopen
, z.b.?
Grüße,
Stephan
ZitatWas mir aufgefallen ist: könnte man die Vorbelegung von SET auf was ungefährliches ändern?
Ist leider zu viel Aufwand, weil diese Werte in FHEMWEB nochmal sortiert werden, und diese Routine wird auch fuer andere Listen verwendet. Habe aber die Argumente fuer reopen und clear entfernt :)
Zitat... was hältst du dann davon, im FileLog direkt auf Zeilenumbrüche zu prüfen und diese ggf. durch Leerzeichen zu ersetzen?
Ich habe das eingebaut, und bin etwas gespannt, wieviele Leute sich deswegen beschweren werden.
Leider wird FHEM bei weitem nicht nur so verwendet, wie ich das mir vorstelle.
super, danke!
Grüße,
Stephan