2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-10 03:06:37 +00:00

91_eventTypes: better filtering (Forum #34549)

git-svn-id: https://svn.fhem.de/fhem/trunk@8136 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2015-03-02 19:09:18 +00:00
parent 2061a5e37a
commit 0d15c94bef

View File

@ -5,6 +5,7 @@ use IO::File;
use strict;
use warnings;
sub et_addEvt($$$;$);
#####################################
sub
@ -22,6 +23,38 @@ eventTypes_Initialize($)
}
sub
et_addEvt($$$;$)
{
my ($h, $name, $evt, $cnt) = @_;
return 0 if($evt =~ m/ CULHM (SND|RCV) /); # HM
return 0 if($evt =~ m/RAWMSG/); # HM
return 0 if($evt =~ m/^R-/); # HM register values
return 0 if($evt =~ m/ UNKNOWNCODE /);
return 0 if($evt =~ m/^\d+ global /); # update
return 0 if($evt =~ m/[<>]/); # HTML
return 0 if(length($evt) > 80); # Safety
$evt =~ s/: [0-9A-F]*$/: .*/; # PANSTAMP
$evt =~ s/\b-?\d*\.?\d+\b/.*/g; # Number to .*
$evt =~ s/\.\*.*\.\*/.*/g; # Multiple wildcards to one
$evt =~ s/set_\d+/set_.*/; # HM
$evt =~ s/^trigger: (.*_)\d+$/trigger: $1.*/; # HM
$evt =~ s/\.\* \(\d+K\)/.*/g; # HUE: Kelvin
my $r = 1;
if($cnt) {
$r = 0 if($h->{$name}{$evt});
$h->{$name}{$evt} += $cnt;
} else {
$h->{$name}{$evt}++;
}
return $r;
}
#####################################
sub
eventTypes_Define($$)
@ -36,19 +69,16 @@ eventTypes_Define($$)
my $f = ResolveDateWildcards($a[2], @t);
my ($err, @content) = FileRead($f);
my %h = ();
$modules{eventTypes}{ldata} = \%h;
foreach my $l (@content) {
next if(!defined($l));
next if($l =~ m/ CULHM (SND|RCV) /);
next if($l =~ m/RAWMSG/);
next if($l =~ m/ UNKNOWNCODE /);
next if($l =~ m/^\d+ global /);
my @a = split(" ", $l, 3);
if(@a != 3) {
my @l = split(" ", $l, 3);
if(@l != 3) {
Log3 undef, 2, "eventTypes: $f: bogus line $l";
next;
}
$modules{eventTypes}{ldata}{$a[1]}{$a[2]} = $a[0];
$cnt++;
$cnt += et_addEvt(\%h, $l[1], $l[2], $l[0]);
}
Log3 undef, 2, "eventTypes: loaded $cnt events from $f";
@ -73,18 +103,10 @@ eventTypes_Notify($$)
return if(!defined($n) || !defined($t) || $n eq "global");
my $ret = "";
my $h = $modules{eventTypes}{ldata};
foreach my $oe (@{$events}) {
$oe = "" if(!defined($oe));
$oe =~ s/\n.*//s;
next if($oe =~ m/ CULHM (SND|RCV) /); # ignore CUL_HM debugging
next if($oe =~ m/ UNKNOWNCODE /);
my $ne = $oe;
$ne =~ s/\b-?\d*\.?\d+\b/.*/g;
$ne =~ s/set_\d+/set_.*/; # another HM special :/
next if(!defined($ne) || $ne eq "");
Log3 $ln, 4, "$ln: $t $n $oe -> $ne";
$modules{eventTypes}{ldata}{$n}{$ne}++;
next if(!defined($oe) || $oe =~ m/^\s*$/);
et_addEvt($h, $n, $oe);
}
return undef;
}