diff --git a/fhem/FHEM/10_CUL_HM.pm b/fhem/FHEM/10_CUL_HM.pm index 8506a1ae1..3d001b22d 100755 --- a/fhem/FHEM/10_CUL_HM.pm +++ b/fhem/FHEM/10_CUL_HM.pm @@ -454,15 +454,17 @@ sub CUL_HM_Parse($$) {############################## my $msgX = "No:$mNo - t:$mTp s:$src d:$dst ".($p?$p:""); if($shash->{lastMsg} && $shash->{lastMsg} eq $msgX) { #duplicate -lost 'ack'? - if($shash->{helper}{rpt} && #was responded - $shash->{helper}{rpt}{IO} eq $ioName && #from same IO - $shash->{helper}{rpt}{msg} eq $msg && #not from repeater - $shash->{helper}{rpt}{ts} < gettimeofday()-0.5){#todo: hack since HMLAN sends duplicate status messages + if( $shash->{helper}{rpt} #was responded + && $shash->{helper}{rpt}{IO} eq $ioName #from same IO + && $shash->{helper}{rpt}{flg} eq substr($msg,5,1) #not from repeater +# && $shash->{helper}{rpt}{ts} < gettimeofday()-0.5 #todo: hack since HMLAN sends duplicate status messages + ){ my $ack = $shash->{helper}{rpt}{ack};#shorthand my $i=0; CUL_HM_SndCmd(${$ack}[$i++],${$ack}[$i++]) while ($i<@{$ack}); $shash->{helper}{rpt}{ts} = gettimeofday(); Log GetLogLevel($name,4), "CUL_HM $name dup: repeat ack, dont process"; + Log 1,"General ############ duplicate"; } else{ Log GetLogLevel($name,4), "CUL_HM $name dup: dont process"; @@ -1272,7 +1274,7 @@ sub CUL_HM_Parse($$) {############################## if (@ack) {# send acks and store for repeat my $sRptHash = $modules{CUL_HM}{defptr}{$src}{helper}{rpt}; $sRptHash->{IO} = $ioName; - $sRptHash->{msg} = $msg; + $sRptHash->{flg} = substr($msg,5,1); $sRptHash->{ack} = \@ack; $sRptHash->{ts} = gettimeofday(); my $i=0; diff --git a/fhem/FHEM/98_HMinfo.pm b/fhem/FHEM/98_HMinfo.pm index 3e8526f49..d22768627 100644 --- a/fhem/FHEM/98_HMinfo.pm +++ b/fhem/FHEM/98_HMinfo.pm @@ -530,42 +530,40 @@ sub HMinfo_post($) {########################################################### even though the commands are more a get funktion they are implemented as set to allow simple web interface usage