From 5215c31f2fb868905636b50f80611b494bbd0f50 Mon Sep 17 00:00:00 2001 From: martinp876 <> Date: Sat, 12 Apr 2014 18:34:17 +0000 Subject: [PATCH] loadConfig should use the last, not the first entry git-svn-id: https://svn.fhem.de/fhem/trunk@5512 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/10_CUL_HM.pm | 3 ++- fhem/FHEM/98_HMinfo.pm | 33 +++++++++++++++++++++++---------- 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/fhem/FHEM/10_CUL_HM.pm b/fhem/FHEM/10_CUL_HM.pm index 4e84789bc..9fcf93c5f 100755 --- a/fhem/FHEM/10_CUL_HM.pm +++ b/fhem/FHEM/10_CUL_HM.pm @@ -1905,7 +1905,8 @@ sub CUL_HM_Parse($$) {######################################################### (hex($mFlg)&0x20)){ #response required Flag my ($recChn) = (hex($1));# button number/event count # fhem CUL shall ack a button press - push @ack,$shash,$mNo."8002".$dst.$src."0101".(($recChn&1)?"C8":"00")."00"; +# push @ack,$shash,$mNo."8002".$dst.$src."0101".(($recChn&1)?"C8":"00")."00"; + push @ack,$shash,$mNo."8002$dst$src"."00"; Log3 $name,5,"CUL_HM $name prep ACK for $recChn"; } } diff --git a/fhem/FHEM/98_HMinfo.pm b/fhem/FHEM/98_HMinfo.pm index 5a4641f00..2d37174e0 100644 --- a/fhem/FHEM/98_HMinfo.pm +++ b/fhem/FHEM/98_HMinfo.pm @@ -1314,11 +1314,13 @@ sub HMinfo_loadConfig($@) {#################################################### my @el = (); my @elincmpl = (); my @entryNF = (); + my %changes; + my @rUpdate; while(){ chomp; my $line = $_; next if ( $line !~ m/set .* (peerBulk|regBulk) .*/ - && $line !~ m/attr .*/); + && $line !~ m/setreading .*/); my ($cmd1,$eN,$cmd,$param) = split(" ",$line,4); next if ($eN !~ m/$filter/); if (!$eN || !$defs{$eN}){ @@ -1326,6 +1328,7 @@ sub HMinfo_loadConfig($@) {#################################################### next; } if ($cmd1 eq "setreading"){ + $changes{$eN}{$cmd}=$param if (!$defs{$eN}{READINGS}{$cmd}); $defs{$eN}{READINGS}{$cmd}{VAL} = $param; $defs{$eN}{READINGS}{$cmd}{TIME} = "from archive"; } @@ -1342,26 +1345,36 @@ sub HMinfo_loadConfig($@) {#################################################### } } elsif($cmd eq "regBulk"){ + next if($param !~ m/RegL_0[0-9]:/); + my $exp = CUL_HM_getAttrInt($eN,"expert"); $param =~ s/\.RegL/RegL/; $param =~ s/RegL/\.RegL/ if ($exp != 2); my ($reg,$data) = split(" ",$param,2); - + my $rl = join",",CUL_HM_reglUsed($eN); + my $r2 = $reg; + $r2 =~ s/^\.//; + + next if ($rl !~ m/$r2/); + if ($data !~ m/00:00/){ push @elincmpl,"$eN reg list:$reg"; next; } - if (!$defs{$eN}{READINGS}{$reg}){ - my ($list,$pN) = ($1,$2) if ($reg =~ m/RegL_(..):(.*)/); - my $pId = CUL_HM_peerChId($pN,substr($defs{$eN}{DEF},0,6)); - $defs{$eN}{READINGS}{$reg}{VAL} = $data; - $defs{$eN}{READINGS}{$reg}{TIME} = "from archive"; - CUL_HM_updtRegDisp($defs{$eN},$list,$pId); - push @el,"$eN reg list:$reg"; - } + $changes{$eN}{$reg}=$data if (!$defs{$eN}{READINGS}{$reg}); } } close(aSave); + foreach my $eN (keys %changes){ + foreach my $reg (keys %{$changes{$eN}}){ + $defs{$eN}{READINGS}{$reg}{VAL} = $changes{$eN}{$reg}; + $defs{$eN}{READINGS}{$reg}{TIME} = "from archive"; + my ($list,$pN) = ($1,$2) if ($reg =~ m/RegL_(..):(.*)/); + my $pId = CUL_HM_peerChId($pN,substr($defs{$eN}{DEF},0,6)); + CUL_HM_updtRegDisp($defs{$eN},$list,$pId); + push @el,"$eN reg list:$reg"; + } + } $ret .= "\nadded data:\n " .join("\n ",@el) if (scalar@el); $ret .= "\nfile data incomplete:\n ".join("\n ",@elincmpl) if (scalar@elincmpl); $ret .= "\nentries not defind:\n " .join("\n ",@entryNF) if (scalar@entryNF);