2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-02-08 05:15:10 +00:00

CUL_HM: update levelRange

git-svn-id: https://svn.fhem.de/fhem/trunk@11685 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
martinp876 2016-06-18 08:02:09 +00:00
parent ad4afb7c13
commit e1c04b6e7f
2 changed files with 18 additions and 10 deletions

View File

@ -1909,12 +1909,12 @@ sub CUL_HM_Parse($$) {#########################################################
$plc = 1 if ($pl && $plc <= 0); $plc = 1 if ($pl && $plc <= 0);
$vs = ($plc ne $vl)?"chn:$vs phys:$plc":$vs; $vs = ($plc ne $vl)?"chn:$vs phys:$plc":$vs;
push @evtEt,[$vh,1,"state:$vs"]; push @evtEt,[$vh,1,"state:$vs"];
push @evtEt,[$vh,1,"phyLevel:$plc"]; push @evtEt,[$vh,1,"phyLevel:$pl"];
} }
push @evtEt,[$mh{cHash},1,"phyLevel:$pl"]; #phys level,don't use relative adjustment
$pl = (($pl-$lvlMin)<=0 && $pl) $pl = (($pl-$lvlMin)<=0 && $pl)
? 1 ? ($pl?1:0)
: int((($pl-$lvlMin)*200)/($lvlMax - $lvlMin))/2; : int((($pl-$lvlMin)*200)/($lvlMax - $lvlMin))/2;
push @evtEt,[$mh{cHash},1,"phyLevel:$pl"]; #phys level
$physLvl = $pl; $physLvl = $pl;
} }
else{ #invalid PhysLevel else{ #invalid PhysLevel
@ -1924,16 +1924,22 @@ sub CUL_HM_Parse($$) {#########################################################
} }
} }
my $pVal = $val;# necessary for oper 'off', not logical off my $pVal = $val;# necessary for oper 'off', not logical off
$val = (($val-$lvlMin)<=0 && $val) Log 1,"General $val-$lvlMin";
? 1 $val = (($val-$lvlMin)<=0)
? ($val?1:0)
: int((($val-$lvlMin)*200)/($lvlMax - $lvlMin))/2; : int((($val-$lvlMin)*200)/($lvlMax - $lvlMin))/2;
Log 1,"General $val-$lvlMin";
# blind option: reverse Level Meaning 0 = open, 100 = closed # blind option: reverse Level Meaning 0 = open, 100 = closed
if (AttrVal($mh{cName}, "param", "") =~ m/levelInverse/){; if (AttrVal($mh{cName}, "param", "") =~ m/levelInverse/){;
$pVal = $val = 100-$val; $pVal = $val = 100-$val;
} }
$physLvl = ReadingsVal($mh{cName},"phyLevel",$val) if(!defined $physLvl){ #not updated? use old or ignore
if(!defined $physLvl); #not updated? use old or ignore $physLvl = ReadingsVal($mh{cName},"phyLevel",$val);
$physLvl = (($physLvl-$lvlMin)<=0 && $physLvl)
? ($physLvl?1:0)
: int((($physLvl-$lvlMin)*200)/($lvlMax - $lvlMin))/2;
}
my $vs = ($mh{cHash}->{helper}{lm} && $mh{cHash}->{helper}{lm}{$val}) my $vs = ($mh{cHash}->{helper}{lm} && $mh{cHash}->{helper}{lm}{$val})
?$mh{cHash}->{helper}{lm}{$val} ?$mh{cHash}->{helper}{lm}{$val}
@ -4441,15 +4447,14 @@ sub CUL_HM_Set($@) {#+++++++++++++++++ set command+++++++++++++++++++++++++++++
else{ else{
$lvl =~ s/(\d*\.?\d*).*/$1/; $lvl =~ s/(\d*\.?\d*).*/$1/;
if ($cmd eq "pct"){ if ($cmd eq "pct"){
$lvl = $lvlMin + $lvl*($lvlMax-$lvlMin)/100;
} }
else{#dim [<changeValue>] ... [ontime] [ramptime] else{#dim [<changeValue>] ... [ontime] [ramptime]
$lvl = 10 if (!defined $a[2]); #set default step $lvl = 10 if (!defined $a[2]); #set default step
$lvl = $lvl*($lvlMax-$lvlMin)/100;
$lvl = -1*$lvl if (($cmd eq "down" && !$lvlInv)|| $lvl = -1*$lvl if (($cmd eq "down" && !$lvlInv)||
($cmd ne "down" && $lvlInv)); ($cmd ne "down" && $lvlInv));
$lvl += CUL_HM_getChnLvl($name); $lvl += CUL_HM_getChnLvl($name);
} }
$lvl = $lvlMin + $lvl*($lvlMax-$lvlMin)/100; # relativ to range
$lvl = ($lvl > $lvlMax)?$lvlMax:(($lvl <= $lvlMin)?0:$lvl); $lvl = ($lvl > $lvlMax)?$lvlMax:(($lvl <= $lvlMin)?0:$lvl);
} }
if ($st eq "dimmer"){# at least blind cannot stand ramp time... if ($st eq "dimmer"){# at least blind cannot stand ramp time...

View File

@ -1877,6 +1877,7 @@ sub HMinfo_loadConfig($@) {####################################################
next if (!$rla[0]); next if (!$rla[0]);
my $rl = join",",@rla; my $rl = join",",@rla;
$reg =~ s/(RegL_0.):/$1\./;# conversion - : not allowed anymore. Update old versions $reg =~ s/(RegL_0.):/$1\./;# conversion - : not allowed anymore. Update old versions
$reg =~ s/_chn-00//; # special:
my $r2 = $reg; my $r2 = $reg;
$r2 =~ s/^\.//; $r2 =~ s/^\.//;
next if ($rl !~ m/$r2/); next if ($rl !~ m/$r2/);
@ -1899,6 +1900,7 @@ sub HMinfo_loadConfig($@) {####################################################
} }
} }
} }
close(rFile); close(rFile);
foreach my $eN (keys %changes){ foreach my $eN (keys %changes){
foreach my $reg (keys %{$changes{$eN}}){ foreach my $reg (keys %{$changes{$eN}}){
@ -1906,7 +1908,8 @@ sub HMinfo_loadConfig($@) {####################################################
$defs{$eN}{READINGS}{$reg}{TIME} = $changes{$eN}{$reg}{t}; $defs{$eN}{READINGS}{$reg}{TIME} = $changes{$eN}{$reg}{t};
my ($list,$pN) = ($1,$2) if ($reg =~ m/RegL_(..)\.(.*)/); my ($list,$pN) = ($1,$2) if ($reg =~ m/RegL_(..)\.(.*)/);
next if (!$list); next if (!$list);
my $pId = CUL_HM_peerChId($pN,substr($defs{$eN}{DEF},0,6)); my $pId = CUL_HM_name2Id($pN);# allow devices also as peer. Regfile is korrekt
# my $pId = CUL_HM_peerChId($pN,substr($defs{$eN}{DEF},0,6));#old - removed
CUL_HM_updtRegDisp($defs{$eN},$list,$pId); CUL_HM_updtRegDisp($defs{$eN},$list,$pId);
push @el,"$eN reg list:$reg"; push @el,"$eN reg list:$reg";
} }