From c41c9d05954fdea8639af0d9de08f88c3361c2fc Mon Sep 17 00:00:00 2001 From: rudolfkoenig <> Date: Sat, 23 Jan 2016 13:50:40 +0000 Subject: [PATCH] 10_ZWave.pm: change parseHook order, add veto possibility (Forum #38587) git-svn-id: https://svn.fhem.de/fhem/trunk@10608 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/10_ZWave.pm | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/fhem/FHEM/10_ZWave.pm b/fhem/FHEM/10_ZWave.pm index 7b210bb74..333953927 100755 --- a/fhem/FHEM/10_ZWave.pm +++ b/fhem/FHEM/10_ZWave.pm @@ -2189,6 +2189,7 @@ ZWave_associationRequest($$) return if($grp >= $nGrp); $zwave_parseHook{"$hash->{nodeIdHex}:..85"} = \&ZWave_associationRequest; ZWave_Set($hash, $hash->{NAME}, "associationRequest", $grp+1); + return undef; # No veto for further parsing } @@ -3358,26 +3359,28 @@ ZWave_Parse($$@) next; } - my $matched = 0; - foreach my $k (keys %{$ptr}) { - if($arg =~ m/^$k/) { - my $val = $ptr->{$k}; - my @val = ($val); - @val = eval $val if(index($val, '$') >= 0); - push @event, @val if(defined($val[0])); - $matched++; - } - } - + my $hookVeto = 0; foreach my $h (keys %zwave_parseHook) { if("$id:$arg" =~ m/$h/) { my $fn = $zwave_parseHook{$h}; delete $zwave_parseHook{$h}; - $fn->($hash, $arg); + $hookVeto++ if($fn->($hash, $arg)); } } - push @event, "UNPARSED:$className $arg" if(!$matched); + if(!$hookVeto) { + my $matched = 0; + foreach my $k (keys %{$ptr}) { + if($arg =~ m/^$k/) { + my $val = $ptr->{$k}; + my @val = ($val); + @val = eval $val if(index($val, '$') >= 0); + push @event, @val if(defined($val[0])); + $matched++; + } + } + push @event, "UNPARSED:$className $arg" if(!$matched); + } } if($arg =~ m/^028407/) { # wakeup:notification