10_CUL_HM:repair peerSmart

git-svn-id: https://svn.fhem.de/fhem/trunk@22069 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
martinp876
2020-05-29 18:29:11 +00:00
parent 435abb771c
commit fa107e14f8

View File

@@ -634,7 +634,7 @@ sub CUL_HM_Undef($$) {###############################
if ($chn){# delete a channel
my $devHash = $defs{$devName};
delete $devHash->{"channel_$chn"} if ($devName);
$devHash->{helper}{role}{chn}=1 if($chn eq "01");# return chan 01 role
$devHash->{helper}{role}{chn} = 1 if($chn eq "01");# return chan 01 role
}
else{# delete a device
CommandDelete(undef,$hash->{$_}) foreach (grep(/^channel_/,keys %{$hash}));
@@ -3977,6 +3977,7 @@ sub CUL_HM_Get($@) {#+++++++++++++++++ get command+++++++++++++++++++++++++++++
$info .= join("\n",sort @arr);
$info .= "\n\n Sets ------\n";
$hash->{helper}{cmds}{TmplTs}=gettimeofday();# force re-arrange of template commands
$hash->{helper}{cmds}{cmdKey}="";
$info .= join("\n",map{if($_ !~ m/]../){(my $foo = $_) =~ s/\|/\n\t/g; $foo;}else{$_}} sort (CUL_HM_SetList($name)));
#my $a = CUL_HMTmplSetCmd($name)." ";
@@ -4189,7 +4190,12 @@ sub CUL_HM_SetList($) {#+++++++++++++++++ get command basic list++++++++++++++++
if( $culHmChanSets->{$md."xx"} && $roleC){foreach(keys %{$culHmChanSets->{$md."xx"}} ){push @arr1,"$_:".${$culHmChanSets->{$md."xx"}}{$_} }};
if( $culHmChanSets->{$md.$chn} && $roleC){foreach(keys %{$culHmChanSets->{$md.$chn}} ){push @arr1,"$_:".${$culHmChanSets->{$md.$chn}}{$_} }};
if( $culHmFunctSets->{$fkt} && $roleC){foreach(keys %{$culHmFunctSets->{$fkt}} ){push @arr1,"$_:".${$culHmFunctSets->{$fkt}}{$_} }};
my $pl = CUL_HM_getPeerOption($name);
$pl =~ s/,/|/g;
push @arr1,"peerSmart:[$pl]" if ($pl);
my @arr1cmd = CUL_HM_noDup(@arr1);
$hash->{helper}{cmds}{cmdList} = \@arr1cmd;
$hash->{helper}{cmds}{cmdKey} = $cmdKey;
}
@@ -4211,32 +4217,6 @@ sub CUL_HM_SetList($) {#+++++++++++++++++ get command basic list++++++++++++++++
}
return (@{$hash->{helper}{cmds}{cmdList}},@{$hash->{helper}{cmds}{TmplCmds}});
# foreach(@arr1){
# next if(!$_);
# my ($cmdS,$val) = split(":",$_,2);
# if (!$val){ # no agruments possible
# $_ = "$cmdS:noArg";
# }
# elsif($val !~ m/^\[.*\]$/ ||
# $val =~ m/\[.*\[/ ||
# $val =~ m/(\<|\>)]/
# ){
# $_ = $cmdS;
# }
# else{
# $val =~ s/(\[|\])//g;
# my @vArr = split('\|',$val);
# foreach (@vArr){
# if ($_ =~ m/(.*)\.\.(.*)/ ){
# my @list = map { ($_.".0", $_+0.5) } (($1+0)..($2+0));
# pop @list;
# $_ = join(",",@list);
# }
# }
# $_ = "$cmdS:".join(",",@vArr);
# }
# }
# @arr1 = ("--") if (!scalar @arr1);
}
sub CUL_HM_Set($@) {#+++++++++++++++++ set command+++++++++++++++++++++++++++++
my ($hash, @a) = @_;
@@ -4307,9 +4287,6 @@ sub CUL_HM_Set($@) {#+++++++++++++++++ set command+++++++++++++++++++++++++++++
}
@cmdArr = ("--") if (!scalar @cmdArr);
my $usg = "Unknown argument $cmd, choose one of ".join(" ",sort @cmdArr)." ";
my $pl = CUL_HM_getPeerOption($name);
$usg .= " peerSmart:$pl" if ($pl);
$usg =~ s/ pct/ pct:slider,0,1,100/;
$usg =~ s/ pctSlat/ pctSlat:slider,0,1,100/;
@@ -4825,6 +4802,7 @@ sub CUL_HM_Set($@) {#+++++++++++++++++ set command+++++++++++++++++++++++++++++
return "value:$data out of range $reg->{min} to $reg->{max} for Reg \""
.$regName."\""
if (!($conv =~ m/^(lit|hex|min2time)$/)&&
$data !~ m/^set_/ &&
($data < $reg->{min} ||$data > $reg->{max})); # none number
return"invalid value. use:". join(",",sort keys%{$reg->{lit}})
if ($conv eq 'lit' && !defined($reg->{lit}{$data}));
@@ -5994,7 +5972,7 @@ sub CUL_HM_Set($@) {#+++++++++++++++++ set command+++++++++++++++++++++++++++++
my ($pDev,$pCh) = unpack 'A6A2',CUL_HM_name2Id($peer,$devHash)."01";
return "button cannot be identified" if (!$pCh);
delete $hash->{helper}{dlvl};#stop desiredLevel supervision
my $msg = sprintf("3E%s%s%s%s%02X%02X",
my $msg = sprintf("3E%s%s%s%s%02X%02X%s",
$id,$dst,$pDev,$modeCode
,hex($pCh)+$mode
,$hash->{helper}{count}
@@ -8766,8 +8744,8 @@ sub CUL_HM_getRegInfo($) { #
my $devHash = CUL_HM_getDeviceHash($hash);
my $st = AttrVal ($devHash->{NAME},"subType", "" );
my $md = CUL_HM_getAliasModel($hash);#AttrVal ($devHash->{NAME},"model" , "" );
my $roleD = $hash->{helper}{role}{dev};
my $roleC = $hash->{helper}{role}{chn};
my $roleD = $hash->{helper}{role}{dev} ? 1 : 0;
my $roleC = $hash->{helper}{role}{chn} ? 1 : 0;
my $chn = $roleD ? "00" : InternalVal($hash->{NAME} ,"chanNo" ,"00");
my @regArr = CUL_HM_getRegN($st,$md,$chn);