2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-01-31 12:49:34 +00:00

enhanced long button press detection. Pressing Phase can now be seperated from press-release-event and press-duration can be counted

updated commandref accordingly


git-svn-id: https://svn.fhem.de/fhem/trunk@1394 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
unimatrix27 2012-03-28 11:42:08 +00:00
parent 3936fb408e
commit c3f8301f6c
2 changed files with 24 additions and 10 deletions

View File

@ -194,7 +194,7 @@ CUL_HM_Parse($$)
my $cmdX = $cmd;
$cmdX =~ s/^A4/A0/;
$cmdX =~ s/^0B/0A/;
$cmdX =~ s/^84/A0/;
#$cmdX =~ s/^84/A0/;
my $msgX = "$len$msgcnt$cmdX$src$dst$p";
# $shash will be replaced for multichannel commands
@ -585,10 +585,19 @@ CUL_HM_Parse($$)
if($cmd =~ m/^..4./ && $p =~ m/^(..)(..)$/) {
my ($button, $bno) = (hex($1), hex($2));
if(!(exists($shash->{BNO})) || $shash->{BNO} ne $bno){
$shash->{BNO}=$bno;$shash->{BNOCNT}=1;
}else{
$shash->{BNOCNT}+=1;
}
my $btn = int((($button&0x3f)+1)/2);
my $state = ($button&1 ? "off" : "on") . ($button & 0x40 ? "Long" : "");
my $state;
if($button & 0x40){
$state = ($button&1 ? "off" : "on") . "Long" .($cmd=~m/^A04./ ? "Release" : "")." ".$shash->{BNOCNT};
}else{
$state = ($button&1 ? "off" : "on");
}
Log 1, $cmd;
push @event, "state:Btn$btn $state$target";
if($id eq $dst && $cmd ne "8002") { # Send Ack
CUL_HM_SendCmd($shash, "++8002".$id.$src."0101". # Send Ack.
@ -1004,8 +1013,9 @@ CUL_HM_Set($@)
} elsif($cmd eq "pct") { ##############################################
$a[1] = 100 if ($a[1] > 100);
if(@a == 2) {$tval="";$rval="0000";}
if(@a > 2) {
$tval="FFFF";
$rval="0140";
if(@a > 2 && $a[2] !=0) {
($tval,$ret) = CUL_HM_encodeTime16($a[2]);
Log 1, $ret if($ret);
}

View File

@ -3081,12 +3081,16 @@ A line ending with \ will be concatenated with the next one, so long lines
<li>remote/pushButton<br>
Btn$x on<br>
Btn$x off<br>
Btn$x onLong<br>
Btn$x offLong<br>
Btn$x onLong $counter<br>
Btn$x offLong $counter<br>
Btn$x onLongRelease $counter<br>
Btn$x offLongRelease $counter<br>
Btn$x on (to $dest)<br>
Btn$x off (to $dest)<br>
Btn$x onLong (to $dest)<br>
Btn$x offLong (to $dest)<br>
Btn$x onLong $counter (to $dest)<br>
Btn$x offLong $counter (to $dest)<br>
Btn$x onLongRelease $counter (to $dest)<br>
Btn$x offLongRelease $counter (to $dest)<br>
<li>motionDetector<br>
brightness:$b<br>
alive<br>