10_CUL_HM: Bugfix regarding model aliasing. The alias-model (internal assigned, not force-model) was not used consequent

git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@20887 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
martinp876 2020-01-05 06:57:29 +00:00
parent 03b0d225b3
commit b4e49e8364

View File

@ -3815,7 +3815,7 @@ sub CUL_HM_Get($@) {#+++++++++++++++++ get command+++++++++++++++++++++++++++++
my $devName = InternalVal($name,"device",$name);
my $st = defined $defs{$devName}{helper}{mId} ? $culHmModel->{$defs{$devName}{helper}{mId}}{st} : AttrVal($devName, "subType", "");
my $md = defined $defs{$devName}{helper}{mId} ? $culHmModel->{$defs{$devName}{helper}{mId}}{name} : AttrVal($devName, "model" , "");
my $md = CUL_HM_getAliasModel($hash);
my $cmd = $a[1];
@ -4750,7 +4750,8 @@ sub CUL_HM_Set($@) {#+++++++++++++++++ set command+++++++++++++++++++++++++++++
my (undef,undef,$regName,$data,$peerChnIn) = @a;
$state = "";
my @regArr = CUL_HM_getRegN($st,$md,($roleD?"00":""),($roleC?$chn:""));
my $mdAl = CUL_HM_getAliasModel($hash);
my @regArr = CUL_HM_getRegN($st,$mdAl,($roleD?"00":""),($roleC?$chn:""));
return "$regName failed: supported register are ".join(" ",sort @regArr)
if (!grep /^$regName$/,@regArr );
@ -7906,6 +7907,13 @@ sub CUL_HM_getmIdFromModel($){ # enter model and receive the corresponding ID
}
return $mId;
}
sub CUL_HM_getAliasModel($){ #
my $hash = shift;
my $dHash = CUL_HM_getDeviceHash($hash);
return "" if(!defined $dHash || !defined $dHash->{helper}|| !defined $dHash->{helper}{mId});
return $culHmModel->{$dHash->{helper}{mId}}{name};
}
sub CUL_HM_getRxType($) { #in:hash(chn or dev) out:binary coded Rx type
# Will store result in device helper
my ($hash) = @_;
@ -8442,7 +8450,7 @@ sub CUL_HM_updtRegDisp($$$) {
$pReg = "R-".$pReg;
my $devName =CUL_HM_getDeviceHash($hash)->{NAME};# devName as protocol entity
my $st = $attr{$devName}{subType} ?$attr{$devName}{subType} :"";
my $md = $attr{$devName}{model} ?$attr{$devName}{model} :"";
my $md = CUL_HM_getAliasModel($hash);
my $chn = $hash->{DEF};
$chn = (length($chn) == 8)?substr($chn,6,2):"";
my @regArr = CUL_HM_getRegN($st,$md,$chn);
@ -8694,7 +8702,7 @@ sub CUL_HM_getRegInfo($) { #
my $hash = $defs{$name};
my $devHash = CUL_HM_getDeviceHash($hash);
my $st = AttrVal ($devHash->{NAME},"subType", "" );
my $md = AttrVal ($devHash->{NAME},"model" , "" );
my $md = CUL_HM_getAliasModel($hash);#AttrVal ($devHash->{NAME},"model" , "" );
my $roleD = $hash->{helper}{role}{dev};
my $roleC = $hash->{helper}{role}{chn};
my $chn = $roleD ? "00" : InternalVal($hash->{NAME} ,"chanNo" ,"00");
@ -8734,6 +8742,7 @@ sub CUL_HM_getRegN($$@){ # get list of register for a model
my @regArr = keys %{$culHmRegGeneral};
push @regArr, keys %{$culHmRegType->{$st}} if($culHmRegType->{$st});
push @regArr, keys %{$culHmRegModel->{$md}} if($culHmRegModel->{$md});
foreach (@chn){
push @regArr, keys %{$culHmRegChan->{$md.$_}} if($culHmRegChan->{$md.$_});
}