From 9a421775fb32712e1d27e9a09dcde288fd33ed3f Mon Sep 17 00:00:00 2001 From: martinp876 <> Date: Thu, 26 May 2016 08:01:33 +0000 Subject: [PATCH] HMInfo:cleanup unused shadowregs git-svn-id: https://svn.fhem.de/fhem/trunk@11522 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/10_CUL_HM.pm | 26 +++++++++++++++++++++++--- fhem/FHEM/98_HMinfo.pm | 4 +++- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/fhem/FHEM/10_CUL_HM.pm b/fhem/FHEM/10_CUL_HM.pm index bbce77595..4d42a2ddc 100755 --- a/fhem/FHEM/10_CUL_HM.pm +++ b/fhem/FHEM/10_CUL_HM.pm @@ -1281,8 +1281,8 @@ sub CUL_HM_Parse($$) {######################################################### my $ack = $mh{devH}->{helper}{rpt}{ack};#shorthand my $i=0; $mh{devH}->{helper}{rpt}{ts} = gettimeofday(); - CUL_HM_SndCmd($mh{$ack}[$i++],$mh{$ack}[$i++] - .(defined $mh{devH}->{helper}{aesAuthBytes} + CUL_HM_SndCmd(${$ack}[$i++],${$ack}[$i++] + .($mh{devH}->{helper}{aesAuthBytes} ?$mh{devH}->{helper}{aesAuthBytes} :"") ) while ($i<@{$ack}); @@ -7227,7 +7227,6 @@ sub CUL_HM_getRegFromStore($$$$@) {#read a register from backup data my $rRL = ($hash->{READINGS}{$regLN}) #realRegList ?$hash->{READINGS}{$regLN}{VAL} :""; - my $data=0; my $convFlg = "";# confirmation flag - indicates data not confirmed by device for (my $size2go = $size;$size2go>0;$size2go -=8){ @@ -8708,6 +8707,27 @@ sub CUL_HM_configUpdate($) {# mark entities with changed data CUL_HM_noDup(@{$modules{CUL_HM}{helper}{confUpdt}},$name); } +sub CUL_HM_cleanShadowReg($){ + # remove shadow-regs if those are identical to readings or + # the reading does not exist. + # return dirty "1" if some shadowregs still remain active + my ($name) = @_; + my $hash = $defs{$name}; + my $dirty = 0; + foreach my $rLn (keys %{$hash->{helper}{shadowReg}}){ + my $rLnP = ($hash->{helper}{expert}{raw}?"":".").$rLn; + if ( !$hash->{READINGS}{$rLnP} + || $hash->{READINGS}{$rLnP}{VAL} eq $hash->{helper}{shadowReg}{$rLn}){ + delete $hash->{helper}{shadowReg}{$rLn}; + } + else{ + $dirty = 1; + } + } + return $dirty; +} + + #+++++++++++++++++ templates ++++++++++++++++++++++++++++++++++++++++++++++++++ sub CUL_HM_tempListTmpl(@) { ################################################## # $name is comma separated list of names diff --git a/fhem/FHEM/98_HMinfo.pm b/fhem/FHEM/98_HMinfo.pm index 3db522791..1d870856a 100644 --- a/fhem/FHEM/98_HMinfo.pm +++ b/fhem/FHEM/98_HMinfo.pm @@ -223,7 +223,9 @@ sub HMinfo_status($){########################################################## $nbrE++; $nbrC++ if ($ehash->{helper}{role}{chn}); $nbrV++ if ($ehash->{helper}{role}{vrt}); - push @shdwNames,$eName if (keys %{$ehash->{helper}{shadowReg}}); + push @shdwNames,$eName if (CUL_HM_cleanShadowReg($eName)); # are shadowRegs active? + + foreach my $read (grep {$ehash->{READINGS}{$_}} @info){ #---- count critical readings my $val = $ehash->{READINGS}{$read}{VAL}; $sum{$read}{$val} =0 if (!$sum{$read}{$val});