diff --git a/fhem/FHEM/92_FileLog.pm b/fhem/FHEM/92_FileLog.pm index 13509ad32..a81c97aa4 100644 --- a/fhem/FHEM/92_FileLog.pm +++ b/fhem/FHEM/92_FileLog.pm @@ -42,6 +42,7 @@ FileLog_Initialize($) # logtype is used by the frontend no warnings 'qw'; my @attrList = qw( + acceptedRange addLog addStateEvent:0,1 archiveCompress @@ -304,6 +305,7 @@ FileLog_Log($$) my $written = 0; my $fmt = AttrVal($ln, "outputFormat", undef); my $emi = $log->{".filelog-event-min-interval"}; + my $ar = $log->{".acceptedRange"}; my $al = $log->{".addLog"}; for (my $i = 0; $i < $max; $i++) { @@ -324,10 +326,24 @@ FileLog_Log($$) } } } + if($al && $al->{$n} && $s =~ m/^([^:]+):/) { my $ale = $al->{$n}{$1}; $ale->{LAST} = time_str2num($t) if($ale); } + + if($ar) { + my $doSkip=0; + my @sa = split(" ", $s); + for my $col (keys %{$ar}) { + next if($col > int(@sa)); + my $val = $sa[$col]; + next if(!looks_like_number($val)); + $doSkip = 1 if($val < $ar->{$col}{min} || $val > $ar->{$col}{max}); + } + next if($doSkip); + } + $t =~ s/ /_/; # Makes it easier to parse with gnuplot if(!$switched) { @@ -374,6 +390,20 @@ FileLog_Attr(@) return; } + if($a[2] eq "acceptedRange") { + if($a[0] eq "del") { + delete($defs{$a[1]}{".acceptedRange"}); + return; + } + + my %ar; # colX:min:max + my $in = $a[3]; + $in =~ s/\b(\d+):([0-9.-]+):([0-9.-]+)\b/ + $ar{$1}{min}=$2; $ar{$1}{max}=$3; ""/ge; + return "Bad argument $in" if($in !~ m/^ *$/); + $defs{$a[1]}{".acceptedRange"} = \%ar; + } + if($a[0] eq "set" && $a[2] eq "ignoreRegexp") { return "Missing argument for ignoreRegexp" if(!defined($a[3])); eval { "HALLO" =~ m/$a[3]/ }; @@ -1289,12 +1319,12 @@ FileLog_regexpFn($$) =item summary_DE schreibt Events in eine Logdatei =begin html - +

FileLog