2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-13 05:06:35 +00:00

CUL_HM:low-battery detection RT,

git-svn-id: https://svn.fhem.de/fhem/trunk@8137 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
martinp876 2015-03-02 19:15:59 +00:00
parent 0d15c94bef
commit df27046f47
2 changed files with 102 additions and 72 deletions

@ -386,7 +386,7 @@ sub CUL_HM_updateConfig($){
if ($md =~ m/HM-CC-RT-DN/) {$webCmd.=":burstXmit";} if ($md =~ m/HM-CC-RT-DN/) {$webCmd.=":burstXmit";}
} }
elsif($st eq "blindActuator"){ elsif($st eq "blindActuator"){
if ($hash->{helper}{role}{chn}){$webCmd="statusRequest:toggle:on:off:up:down:stop";} if ($hash->{helper}{role}{chn}){$webCmd="statusRequest:toggleDir:on:off:up:down:stop";}
else{ $webCmd="statusRequest:getConfig:clear msgEvents";} else{ $webCmd="statusRequest:getConfig:clear msgEvents";}
} }
elsif($st eq "dimmer" ){ elsif($st eq "dimmer" ){
@ -1323,11 +1323,11 @@ sub CUL_HM_Parse($$) {#########################################################
else{ else{
$chn = $mI[1]; $chn = $mI[1];
$setTemp = ($setTemp ); $setTemp = ($setTemp );
$lBat = $err&0x80?"low":"ok"; # prior to changes of $err!
$err = ($err >> 1); $err = ($err >> 1);
$shash = $modules{CUL_HM}{defptr}{"$src$chn"} if($modules{CUL_HM}{defptr}{"$src$chn"}); $shash = $modules{CUL_HM}{defptr}{"$src$chn"} if($modules{CUL_HM}{defptr}{"$src$chn"});
$actTemp = ReadingsVal($name,"measured-temp",""); $actTemp = ReadingsVal($name,"measured-temp","");
$vp = ReadingsVal($name,"actuator",""); $vp = ReadingsVal($name,"actuator","");
$lBat = $err&0x80?"low":"ok";
} }
delete $devH->{helper}{getBatState}; delete $devH->{helper}{getBatState};
$setTemp =(($setTemp ) & 0x3f )/2; $setTemp =(($setTemp ) & 0x3f )/2;
@ -1763,11 +1763,11 @@ sub CUL_HM_Parse($$) {#########################################################
} }
} }
if ($st ne "switch"){ if ($st ne "switch"){
my $dir = $err & 0x30; my $dir = ($err >> 4) & 3;
if ($dir == 0x10){push @evtEt,[$shash,1,"$eventName:up:$vs" ];} my %dirName = ( 0=>"stop" ,1=>"up" ,2=>"down" ,3=>"err" );
elsif($dir == 0x20){push @evtEt,[$shash,1,"$eventName:down:$vs"];} push @evtEt,[$shash,1,"$eventName:$dirName{$dir}:$vs" ];
elsif($dir == 0x00){push @evtEt,[$shash,1,"$eventName:stop:$vs"];} $shash->{helper}{dir}{rct} = $shash->{helper}{dir}{cur} if($shash->{helper}{dir}{cur} ne $dirName{$dir});
elsif($dir == 0x30){push @evtEt,[$shash,1,"$eventName:err:$vs" ];} $shash->{helper}{dir}{cur} = $dirName{$dir};
} }
if (!$rSUpdt){#dont touch if necessary for dimmer if (!$rSUpdt){#dont touch if necessary for dimmer
if(($err&0x70) == 0x10 || ($err&0x70) == 0x20){ if(($err&0x70) == 0x10 || ($err&0x70) == 0x20){
@ -3753,6 +3753,32 @@ sub CUL_HM_Set($@) {#+++++++++++++++++ set command+++++++++++++++++++++++++++++
CUL_HM_PushCmdStack($hash,$hash->{helper}{dlvlCmd}); CUL_HM_PushCmdStack($hash,$hash->{helper}{dlvlCmd});
$hash = $chnHash; # report to channel if defined $hash = $chnHash; # report to channel if defined
} }
elsif($cmd eq "toggleDir") { ################################################
if ($hash->{helper}{dir}{cur} && $hash->{helper}{dir}{cur} ne "err"){
my $old = $hash->{helper}{dir}{cur};
$hash->{helper}{dir}{cur} = $hash->{helper}{dir}{cur} eq "stop" ?(($hash->{helper}{dir}{rct}
&& $hash->{helper}{dir}{rct} eq "up")?"down"
:"up")
:"stop";
$hash->{helper}{dir}{rct} = $old;
}
else{
$hash->{helper}{dir}{rct} = "stop";
$hash->{helper}{dir}{cur} = "up";
}
if ($hash->{helper}{dir}{cur} eq "up" ){
$hash->{helper}{dlvl} = "C8";
$hash->{helper}{dlvlCmd} = "++$flag"."11$id$dst"."02$chn".'C80000';
CUL_HM_PushCmdStack($hash,$hash->{helper}{dlvlCmd});
}elsif ($hash->{helper}{dir}{cur} eq "down"){
$hash->{helper}{dlvl} = "00";
$hash->{helper}{dlvlCmd} = "++$flag"."11$id$dst"."02$chn".'000000';
CUL_HM_PushCmdStack($hash,$hash->{helper}{dlvlCmd});
}else {
delete $hash->{helper}{dlvl};
CUL_HM_PushCmdStack($hash,'++'.$flag.'11'.$id.$dst.'03'.$chn);
}
}
elsif($cmd =~ m/^(on-for-timer|on-till)$/) { ################################ elsif($cmd =~ m/^(on-for-timer|on-till)$/) { ################################
my (undef,undef,$duration,$ramp) = @a; #date prepared extention to entdate my (undef,undef,$duration,$ramp) = @a; #date prepared extention to entdate
if ($cmd eq "on-till"){ if ($cmd eq "on-till"){
@ -8072,6 +8098,7 @@ sub CUL_HM_tempListTmpl(@) { ##################################################
<li><B><a href="#CUL_HMoff">off</a></B></li> <li><B><a href="#CUL_HMoff">off</a></B></li>
<li><B><a href="#CUL_HMpress">press &lt;[short|long]&gt;&lt;[on|off]&gt;</a></B></li> <li><B><a href="#CUL_HMpress">press &lt;[short|long]&gt;&lt;[on|off]&gt;</a></B></li>
<li><B><a href="#CUL_HMtoggle">toggle</a></B></li> <li><B><a href="#CUL_HMtoggle">toggle</a></B></li>
<li><B>toggleDir</B><a name="CUL_HMtoggleDir"></a> - toggled drive direction between up/stop/down/stop</li>
<li><B><a href="#CUL_HMonForTimer">on-for-timer &lt;sec&gt;</a></B> - Dimmer only! <br></li> <li><B><a href="#CUL_HMonForTimer">on-for-timer &lt;sec&gt;</a></B> - Dimmer only! <br></li>
<li><B><a href="#CUL_HMonTill">on-till &lt;time&gt;</a></B> - Dimmer only! <br></li> <li><B><a href="#CUL_HMonTill">on-till &lt;time&gt;</a></B> - Dimmer only! <br></li>
<li><B>stop</B> - stop motion (blind) or dim ramp</li> <li><B>stop</B> - stop motion (blind) or dim ramp</li>
@ -9384,6 +9411,8 @@ sub CUL_HM_tempListTmpl(@) { ##################################################
<li><B><a href="#CUL_HMoff">off</a></B></li> <li><B><a href="#CUL_HMoff">off</a></B></li>
<li><B><a href="#CUL_HMpress">press &lt;[short|long]&gt;&lt;[on|off]&gt;</a></B></li> <li><B><a href="#CUL_HMpress">press &lt;[short|long]&gt;&lt;[on|off]&gt;</a></B></li>
<li><B><a href="#CUL_HMtoggle">toggle</a></B></li> <li><B><a href="#CUL_HMtoggle">toggle</a></B></li>
<li><B>toggleDir</B><a name="CUL_HMtoggleDir"></a> - toggelt die fahrtrichtung des Rollo-Aktors.
Es wird umgeschaltet zwischen auf/stop/ab/stop</li>
<li><B><a href="#CUL_HMonForTimer">on-for-timer &lt;sec&gt;</a></B> - Nur Dimmer! <br></li> <li><B><a href="#CUL_HMonForTimer">on-for-timer &lt;sec&gt;</a></B> - Nur Dimmer! <br></li>
<li><B><a href="#CUL_HMonTill">on-till &lt;time&gt;</a></B> - Nur Dimmer! <br></li> <li><B><a href="#CUL_HMonTill">on-till &lt;time&gt;</a></B> - Nur Dimmer! <br></li>
<li><B>stop</B> - Stopt Bewegung (Rollo) oder Dimmerrampe</li> <li><B>stop</B> - Stopt Bewegung (Rollo) oder Dimmerrampe</li>

@ -1419,6 +1419,7 @@ $culHmSubTypeDevSets{blindActuator} = $culHmSubTypeDevSets{switch};
blindActuator =>{ on =>"" blindActuator =>{ on =>""
,off =>"" ,off =>""
,toggle =>"" ,toggle =>""
,toggleDir =>""
,pct =>"[<value>] ... [<ontime>]" ,pct =>"[<value>] ... [<ontime>]"
,stop =>"" ,stop =>""
,press =>"[long|short] [on|off|<peer>] [<repCount(long only)>] [<repDelay>] ..." ,press =>"[long|short] [on|off|<peer>] [<repCount(long only)>] [<repDelay>] ..."