1
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-05-04 22:19:38 +00:00

10_CUL_HM:correct TC controlmode setting

git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@20292 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
martinp876 2019-10-03 08:35:49 +00:00
parent 5bca32ac7d
commit c810425919

View File

@ -4714,7 +4714,6 @@ sub CUL_HM_Set($@) {#+++++++++++++++++ set command+++++++++++++++++++++++++++++
} }
my (undef,undef,$regName,$data,$peerChnIn) = @a; my (undef,undef,$regName,$data,$peerChnIn) = @a;
$state = ""; $state = "";
my @regArr = CUL_HM_getRegN($st,$md,($roleD?"00":""),($roleC?$chn:"")); my @regArr = CUL_HM_getRegN($st,$md,($roleD?"00":""),($roleC?$chn:""));
@ -4776,7 +4775,7 @@ sub CUL_HM_Set($@) {#+++++++++++++++++ set command+++++++++++++++++++++++++++++
my ($lChn,$peerId,$peerChn) = ($chn,"000000","00"); my ($lChn,$peerId,$peerChn) = ($chn,"000000","00");
# if (($list == 3) ||($list == 4) # peer is necessary for list 3/4 # if (($list == 3) ||($list == 4) # peer is necessary for list 3/4
if ($reg->{p} eq 'y' # peer is necessary if ($reg->{p} eq 'y' # peer is necessary
||($peerChnIn)) {# and if requested by user ||(defined $peerChnIn and $peerChnIn)) {# and if requested by user
return "Peer not specified" if ($peerChnIn eq ""); return "Peer not specified" if ($peerChnIn eq "");
$peerId = CUL_HM_peerChId($peerChnIn,$dst); $peerId = CUL_HM_peerChId($peerChnIn,$dst);
($peerId,$peerChn) = unpack 'A6A2',$peerId.'01'; ($peerId,$peerChn) = unpack 'A6A2',$peerId.'01';
@ -4795,9 +4794,9 @@ sub CUL_HM_Set($@) {#+++++++++++++++++ set command+++++++++++++++++++++++++++++
my $addrData; my $addrData;
if ($dLen < 8){# fractional byte see whether we have stored the register if ($dLen < 8){# fractional byte see whether we have stored the register
#read full 8 bit!!! #read full 8 bit!!!
my $rName = CUL_HM_id2Name($dst.$lChn); my $cName = CUL_HM_id2Name($dst.$lChn);
$rName =~ s/_chn-\d\d$//; $cName =~ s/_chn-\d\d$//;
my $curVal = CUL_HM_getRegFromStore($rName,$addr,$list,$peerId.$peerChn); my $curVal = CUL_HM_getRegFromStore($cName,$addr,$list,$peerId.$peerChn);
if ($curVal !~ m/^(set_|)(\d+)$/){ if ($curVal !~ m/^(set_|)(\d+)$/){
return "peer required for $regName" if ($curVal =~ m/peer/); return "peer required for $regName" if ($curVal =~ m/peer/);
return "cannot calculate value. Please issue set $name getConfig first - $curVal"; return "cannot calculate value. Please issue set $name getConfig first - $curVal";
@ -8189,27 +8188,27 @@ sub CUL_HM_DumpProtocol($$@) {
sub CUL_HM_getRegFromStore($$$$@) {#read a register from backup data sub CUL_HM_getRegFromStore($$$$@) {#read a register from backup data
my($name,$regName,$list,$peerId,$regLN)=@_; my($name,$regName,$list,$peerId,$regLN)=@_;
my $hash = $defs{$name}; my $hash = $defs{$name};
my ($size,$pos,$conv,$factor,$unit) = (8,0,"",1,""); # default my ($size,$pos,$conv,$factor,$unit,$peerRq) = (8,0,"",1,"","n"); # default
my $addr = $regName; my $addr = $regName;
my $reg = $culHmRegDefine->{$regName}; my $reg = $culHmRegDefine->{$regName};
if ($reg) { # get the register's information if ($reg) { # get the register's information
$addr = $reg->{a}; $addr = $reg->{a};
$pos = ($addr*10)%10; $pos = ($addr*10)%10;
$addr = int($addr); $addr = int($addr);
$list = $reg->{l}; $size = $reg->{s};
$size = $reg->{s}; $size = int($size)*8 + ($size*10)%10;
$size = int($size)*8 + ($size*10)%10; $list = $reg->{l};
$conv = $reg->{c}; #unconvert formula $conv = $reg->{c}; #unconvert formula
$factor = $reg->{f}; $factor = $reg->{f};
$unit = ($reg->{u}?" ".$reg->{u}:""); $peerRq = $reg->{p};
$unit = ($reg->{u} ? " ".$reg->{u} : "");
} }
else{ else{
return "invalid:regname or address" return "invalid:regname or address" if($addr < 1 ||$addr > 255);
if($addr<1 ||$addr>255); $peerRq = hex($peerId) != 0 ? "y":"n";
} }
return "invalid:no peer for this register" if((hex($peerId) != 0 && $peerRq eq "n" )
return "invalid:no peer for this register" if(($reg->{p} eq "n" && hex($peerId) != 0) ||(hex($peerId) == 0 && $peerRq eq "y"));
||($reg->{p} eq "y" && hex($peerId) == 0));
my $dst = substr(CUL_HM_name2Id($name),0,6); my $dst = substr(CUL_HM_name2Id($name),0,6);
if(!$regLN){ if(!$regLN){
$regLN = ($hash->{helper}{expert}{raw}?"":".") $regLN = ($hash->{helper}{expert}{raw}?"":".")
@ -8256,7 +8255,7 @@ sub CUL_HM_getRegFromStore($$$$@) {#read a register from backup data
$data = ($data>>$pos) & (0xffffffff>>(32-$size)); $data = ($data>>$pos) & (0xffffffff>>(32-$size));
if (!$conv){ ;# do nothing if (!$conv){ ;# do nothing
} elsif($conv eq "lit" ){$data = defined $reg->{litInv}{$data}?$reg->{litInv}{$data}:"undef lit:$data"; } elsif($conv eq "lit" ){$data = defined $reg->{litInv}{$data} ? $reg->{litInv}{$data} : "undef lit:$data";
} elsif($conv eq "fltCvT" ){$data = CUL_HM_CvTflt($data); } elsif($conv eq "fltCvT" ){$data = CUL_HM_CvTflt($data);
} elsif($conv eq "fltCvT60"){$data = CUL_HM_CvTflt60($data); } elsif($conv eq "fltCvT60"){$data = CUL_HM_CvTflt60($data);
} elsif($conv eq "min2time"){$data = CUL_HM_min2time($data); } elsif($conv eq "min2time"){$data = CUL_HM_min2time($data);