diff --git a/fhem/FHEM/10_CUL_HM.pm b/fhem/FHEM/10_CUL_HM.pm index 243358bfe..337ffe094 100755 --- a/fhem/FHEM/10_CUL_HM.pm +++ b/fhem/FHEM/10_CUL_HM.pm @@ -2544,7 +2544,7 @@ sub CUL_HM_pushEvnts(){######################################################## sub CUL_HM_Get($@) {#+++++++++++++++++ get command+++++++++++++++++++++++++++++ my ($hash, @a) = @_; return "no value specified" if(@a < 2); - + return "" if(!$hash->{NAME}); my $name = $hash->{NAME}; my $devName = InternalVal($name,"device",$name); my $st = AttrVal($devName, "subType", ""); @@ -4866,6 +4866,7 @@ sub CUL_HM_respPendTout($) { elsif ($pHash->{rspWait}{reSent} > AttrVal($name,"msgRepeat",3)#too many ||(!($rxt & 0x9B))){#config cannot retry my $pendCmd = "MISSING ACK"; + if ($pHash->{rspWait}{Pending}){ $pendCmd = "RESPONSE TIMEOUT:".$pHash->{rspWait}{Pending}; CUL_HM_complConfig($name); @@ -4903,6 +4904,17 @@ sub CUL_HM_respPendTout($) { } else{# normal device resend if ($rxt & 0x02){# type = burst - need to set burst-Bit for retry + if ($pHash->{mmcA}){#fillback multi-message command + unshift @{$hash->{cmdStack}},$_ foreach (reverse@{$pHash->{mmcA}}); + delete $pHash->{mmcA}; + delete $pHash->{mmcS}; + + my $cmd = shift @{$hash->{cmdStack}}; + $cmd = sprintf("As%02X01%s", length($cmd)/2, substr($cmd,2)); + $pHash->{rspWait}{cmd} = $cmd; + CUL_HM_responseSetup($hash,$cmd); + } + my ($pre,$tp,$tail) = unpack 'A6A2A*',$pHash->{rspWait}{cmd}; $pHash->{rspWait}{cmd} = sprintf("%s%02X%s",$pre,(hex($tp)|0x10),$tail); } @@ -6255,8 +6267,12 @@ sub CUL_HM_storeRssi(@){ return if (!$val); if (AttrVal($peerName,"subType","") eq "virtual"){ my $h = InternalVal($name,"IODev","");#CUL_HM_name2IoName($peerName); + return if (!$h); $peerName = $h->{NAME}; } + else{ + return if (length($peerName)<3); + } my ($mVal,$mPn) = ($val,substr($peerName,3)); if ($defs{$name}{helper}{mRssi}{mNo} ne $mNo){# new message diff --git a/fhem/FHEM/98_HMinfo.pm b/fhem/FHEM/98_HMinfo.pm index 7a4423afc..f75a12129 100644 --- a/fhem/FHEM/98_HMinfo.pm +++ b/fhem/FHEM/98_HMinfo.pm @@ -705,7 +705,8 @@ sub HMinfo_getEntities(@) { ################################################### next if ($id eq "000000"); my $eHash = $modules{CUL_HM}{defptr}{$id}; my $eName = $eHash->{NAME}; - my $isChn = (length($id) != 6 || CUL_HM_Get($eHash,$eName,"param","channel_01") eq "undefined")?1:0; + next if ( !$eName || $eName !~ m/$re/); + my $isChn = $eHash->{helper}{chn}?1:0; my $eIg = CUL_HM_Get($eHash,$eName,"param","ignore"); $eIg = "" if ($eIg eq "undefined"); next if (!(($doDev && length($id) == 6) || @@ -717,7 +718,6 @@ sub HMinfo_getEntities(@) { ################################################### next if ( $noSen && $eSt =~ m/^(THSensor|remote|pushButton|threeStateSensor|sensor|motionDetector|swi)$/); next if ( $noAct && $eSt =~ m/^(switch|blindActuator|dimmer|thermostat|smokeDetector|KFM100|outputUnit)$/); - next if ( $eName !~ m/$re/); push @names,$eName; } return sort(@names);