diff --git a/fhem/FHEM/10_ZWave.pm b/fhem/FHEM/10_ZWave.pm index b8a0e16aa..3a7e1e3f8 100755 --- a/fhem/FHEM/10_ZWave.pm +++ b/fhem/FHEM/10_ZWave.pm @@ -623,19 +623,20 @@ ZWave_Initialize($) my @attrList = qw( IODev WNMI_delay - noWakeupForApplicationUpdate:1,0 classes do_not_notify:1,0 dummy:1,0 + eventForRaw extendedAlarmReadings:0,1,2 ignore:1,0 + ignoreDupMsg:1,0 + neighborListPos noExplorerFrames:1,0 - eventForRaw + noWakeupForApplicationUpdate:1,0 secure_classes showtime:1,0 vclasses zwaveRoute - neighborListPos ); use warnings 'qw'; $hash->{AttrList} = join(" ", @attrList)." ".$readingFnAttributes; @@ -4634,11 +4635,24 @@ ZWave_Parse($$@) } } - if($arg =~ m/^028407/) { # wakeup:notification + if($arg =~ m/^028407/) { # wakeup:notification (WUN) + if($hash->{ignoreDupMsg} && $hash->{wakeupAlive}) { # Ignore 2nd WUN + Log3 $name, 3, "$name: ignore duplicate WUN"; + return "" + } ZWave_wakeupTimer($baseHash, 1); ZWave_processSendStack($baseHash, "next"); } else { + if($hash->{ignoreDupMsg} && $callbackid ne "00") { + my $hp = hex($callbackid); + if($zwave_cbid2dev{$hp}) { + delete $zwave_cbid2dev{$hp}; + } else { + Log3 $name, 3, "$name: ignore duplicate answer $event[0]"; + return ""; + } + } ZWave_processSendStack($baseHash, "msg", $arg) if(!ZWave_isWakeUp($hash) || $hash->{wakeupAlive}); @@ -4717,6 +4731,14 @@ ZWave_Attr(@) InternalTimer(1, "ZWave_computeRoute", "TYPE=ZWave", 0); return undef; + } elsif($attrName eq "ignoreDupMsg") { + if($type eq "del") { + delete $hash->{ignoreDupMsg}; + } else { + $hash->{ignoreDupMsg} = (defined($param) ? $param : 1); + } + return undef; + } elsif($attrName eq "vclasses") { if($type eq "del") { $hash->{".vclasses"} = {}; @@ -5832,12 +5854,17 @@ s2Hex($)
  • ignore
  • +
  • ignoreDupMsg
    + Experimental: if set (to 1), ignore duplicate wakeup messages, or + multiple responses to a single get due to missing lowlevel ACK. +
  • neighborListPos
  • -
  • noExplorerFrames
    +
  • noExplorerFrames
    turn off the use of Explorer Frames
  • -
  • noWakeupForApplicationUpdate
    +
  • noWakeupForApplicationUpdate +
    some devices (notable the Aeotec Multisensor 6) are only awake after an APPLICATION UPDATE telegram for a very short time. If this attribute is set (recommended for the Aeotec Multisensor 6), the WakeUp-Stack is not