2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-03 16:56:54 +00:00

CUL_HM:improve event handling for Register updates

git-svn-id: https://svn.fhem.de/fhem/trunk@22174 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
martinp876 2020-06-13 06:57:25 +00:00
parent a8f030247d
commit 09390a1ae3

View File

@ -4152,7 +4152,7 @@ sub CUL_HM_TemplateModify(){
sub CUL_HM_getTemplateModify(){ sub CUL_HM_getTemplateModify(){
return (defined $modules{CUL_HM}{helper}{tmplTimestamp} ? $modules{CUL_HM}{helper}{tmplTimestamp} : 'no'); return (defined $modules{CUL_HM}{helper}{tmplTimestamp} ? $modules{CUL_HM}{helper}{tmplTimestamp} : 'no');
} }
sub CUL_HM_SetList($) {#+++++++++++++++++ get command basic list+++++++++++++++++++++++++++++ sub CUL_HM_SetList($) {#+++++++++++++++++ get command basic list+++++++++++++++
my($name)=@_; my($name)=@_;
my $hash = $defs{$name}; my $hash = $defs{$name};
my $roleC = $hash->{helper}{role}{chn} ? 1 : 0; #entity may act in multiple roles my $roleC = $hash->{helper}{role}{chn} ? 1 : 0; #entity may act in multiple roles
@ -8501,6 +8501,7 @@ sub CUL_HM_updtRegDisp($$$) {
: ""; : "";
$pReg =~ s/:/-/; $pReg =~ s/:/-/;
$pReg = "R-".$pReg; $pReg = "R-".$pReg;
# $pReg =~ s/_chn-..//;
my $devName =CUL_HM_getDeviceHash($hash)->{NAME};# devName as protocol entity my $devName =CUL_HM_getDeviceHash($hash)->{NAME};# devName as protocol entity
my $st = $attr{$devName}{subType} ?$attr{$devName}{subType} :""; my $st = $attr{$devName}{subType} ?$attr{$devName}{subType} :"";
my $md = CUL_HM_getAliasModel($hash); my $md = CUL_HM_getAliasModel($hash);
@ -8554,7 +8555,6 @@ sub CUL_HM_rmOldRegs($){ # remove register i outdated
my $name = shift; my $name = shift;
my $hash = $defs{$name}; my $hash = $defs{$name};
return if (!$hash->{peerList});# so far only peer-regs are removed return if (!$hash->{peerList});# so far only peer-regs are removed
my @pList = split",",$hash->{peerList};
my @rpList; my @rpList;
foreach(grep /^R-(.*)-/,keys %{$hash->{READINGS}}){ foreach(grep /^R-(.*)-/,keys %{$hash->{READINGS}}){
push @rpList,$1 if ($_ =~ m/^R-(.*)-/); push @rpList,$1 if ($_ =~ m/^R-(.*)-/);
@ -8562,8 +8562,10 @@ sub CUL_HM_rmOldRegs($){ # remove register i outdated
@rpList = CUL_HM_noDup(@rpList); @rpList = CUL_HM_noDup(@rpList);
return if (!@rpList); return if (!@rpList);
foreach my $peer(@rpList){ foreach my $peer(@rpList){
$peer =~ s/_chn-..$//;
next if($hash->{peerList} =~ m/\b$peer\b/); next if($hash->{peerList} =~ m/\b$peer\b/);
delete $hash->{READINGS}{$_} foreach (grep /^R-$peer-/,keys %{$hash->{READINGS}}) delete $hash->{READINGS}{$_} foreach (grep /^R-${peer}-/,keys %{$hash->{READINGS}});
delete $hash->{READINGS}{$_} foreach (grep /^R-${peer}_chn-..-/,keys %{$hash->{READINGS}});
} }
} }
sub CUL_HM_refreshRegs($){ # renew all register readings from Regl_ sub CUL_HM_refreshRegs($){ # renew all register readings from Regl_