2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-22 08:11:44 +00:00

CUL_HM:update pctSlat

git-svn-id: https://svn.fhem.de/fhem/trunk@15399 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
martinp876 2017-11-05 17:42:40 +00:00
parent 148a869f33
commit 91897d8678

View File

@ -4734,40 +4734,45 @@ sub CUL_HM_Set($@) {#+++++++++++++++++ set command+++++++++++++++++++++++++++++
CUL_HM_UpdtReadSingle($hash,"level",$state,1); CUL_HM_UpdtReadSingle($hash,"level",$state,1);
} }
elsif($cmd =~ m/^(pctSlat|pctLvlSlat)$/) { ################################## elsif($cmd =~ m/^(pctSlat|pctLvlSlat)$/) { ##################################
# pctSlat =>"[0-100]|old|noChng"
# pctLvlSlat =>"-value-|old|noChng -slatValue-|old|noChng"
my ($lvl,$slat,$plvl,$pslat); my ($lvl,$slat,$plvl,$pslat);
return "param missing " if (!defined $a[2]);
if ($cmd eq "pctSlat"){
$slat = $a[2];
$lvl = "noChng";
}
else{#"pctLvlSlat"
$slat = defined $a[3] ? $a[3] : "noChng";
$lvl = $a[2];
}
#--- calc slat---- #--- calc slat----
$slat = $cmd eq "pctSlat" ? $a[2]
: (defined $a[3] ? $a[3]
: "noChng");
if ($slat eq "old") {$pslat = "C9"} if ($slat eq "old") {$pslat = "C9"}
elsif ($slat eq "noChng"){$pslat = "CA"} elsif ($slat eq "noChng"){$pslat = "CA"}
else{ $slat =~ s/(\d*\.?\d*).*/$1/; else{ $slat =~ s/(\d*\.?\d*).*/$1/;
return "Value $a[2] not allowed for slat" if ($slat > 100); return "Value $a[2] not allowed for slat" if ($slat > 100);
$pslat = sprintf("%02X",$slat*2); $pslat = sprintf("%02X",$slat*2);
CUL_HM_UpdtReadSingle($hash,"levelSlat","set_".$slat,1);
} }
#--- calc level---- #--- calc level----
$lvl = $cmd eq "pctLvlSlat" ? $a[2] :"noChng";
my $lvlInv = (AttrVal($name, "param", "") =~ m/levelInverse/) ? 1 : 0;
my($lvlMin,$lvlMax) = split",",AttrVal($name, "levelRange", "0,100");
$lvl = $lvlMin + $lvl*($lvlMax-$lvlMin)/100; # relativ to range
$lvl = ($lvl > $lvlMax) ? $lvlMax
: (($lvl <= $lvlMin)?0:$lvl);
if ($lvl eq "old") {$plvl = "C9"} if ($lvl eq "old") {$plvl = "C9"}
elsif ($lvl eq "noChng"){$plvl = "CA"} elsif ($lvl eq "noChng"){$plvl = "CA"}
else{ $lvl =~ s/(\d*\.?\d*).*/$1/; else{
$plvl = sprintf("%02X",(($lvlInv) ? 100-$lvl : $lvl)*2); my $lvlInv = (AttrVal($name, "param", "") =~ m/levelInverse/) ? 1 : 0;
my($lvlMin,$lvlMax) = split",",AttrVal($name, "levelRange", "0,100");
$lvl = $lvlMin + $lvl*($lvlMax-$lvlMin)/100; # relativ to range
$lvl = ($lvl > $lvlMax) ? $lvlMax
: (($lvl <= $lvlMin)?0:$lvl);
$lvl =~ s/(\d*\.?\d*).*/$1/;
$plvl = sprintf("%02X",(($lvlInv) ? 100-$lvl : $lvl)*2);
CUL_HM_UpdtReadSingle($hash,"level","set_".$lvl,1);
$state = "set_".$lvl;
} }
#--- execute---- #--- execute----
CUL_HM_PushCmdStack($hash,"++$flag"."11$id$dst"."80${chn}$plvl$pslat"); CUL_HM_PushCmdStack($hash,"++$flag"."11$id$dst"."80${chn}$plvl$pslat");
CUL_HM_UpdtReadSingle($hash,"levelSlat","set_".$slat,1) if ($slat ne "noChng");
if ($lvl ne "noChng"){
CUL_HM_UpdtReadSingle($hash,"level","set_".$lvl,1);
$state = "set_".$lvl;
}
} }
elsif($cmd eq "stop") { ##################################################### elsif($cmd eq "stop") { #####################################################
@ -7817,10 +7822,10 @@ sub CUL_HM_chgExpLvl($){# update visibility and set internal values for expert
} }
CUL_HM_setTmplDisp($tHash); CUL_HM_setTmplDisp($tHash);
} }
sub CUL_HM_setTmplDisp($){ # remove register i outdated sub CUL_HM_setTmplDisp($){ # remove register if outdated
my $tHash = shift; my $tHash = shift;
delete $tHash->{READINGS}{$_} foreach (grep /^tmpl_/ ,keys %{$tHash->{READINGS}}); delete $tHash->{READINGS}{$_} foreach (grep /^tmpl_/ ,keys %{$tHash->{READINGS}});
if ($tHash->{helper}{expert}{tpl}){ if ($tHash->{helper}{expert}{tpl} && defined $HMConfig::culHmTpl){
foreach (keys %{$tHash->{helper}{tmpl}}){ foreach (keys %{$tHash->{helper}{tmpl}}){
my ($p,$t) = split(">",$_); my ($p,$t) = split(">",$_);