2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-03 16:56:54 +00:00

dimmer changes by peterp

git-svn-id: https://svn.fhem.de/fhem/trunk@1620 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2012-06-16 07:22:37 +00:00
parent f995066c5b
commit 0dac5a502a

View File

@ -570,18 +570,19 @@ CUL_HM_Parse($$)
$st eq "dimmer" || $st eq "dimmer" ||
$st eq "blindActuator") { $st eq "blindActuator") {
if($p =~ m/^(0.)(..)(..).0/ if($p =~ m/^(0.)(..)(..)(..)/
&& $cmd ne "A010" && $cmd ne "A010"
&& $cmd ne "A002") { && $cmd ne "A002") {
my $msgType = $1; my $msgType = $1;
my $chn = $2; my $chn = $2;
my $add = $4; # By peterp
# Multi-channel device: Switch to the shadow source hash # Multi-channel device: Switch to the shadow source hash
if($chn ne "01" && $chn ne "00") { if($chn ne "01" && $chn ne "00") {
my $cSrc = "$src$chn"; my $cSrc = "$src$chn";
if($modules{CUL_HM}{defptr}{$cSrc}) { if($modules{CUL_HM}{defptr}{$cSrc}) {
$shash = $modules{CUL_HM}{defptr}{$cSrc}; $shash = $modules{CUL_HM}{defptr}{$cSrc};
$name = $shash->{NAME} $name = $shash->{NAME};
} }
} }
@ -592,6 +593,22 @@ CUL_HM_Parse($$)
$msg = "powerOn" if($msgType =~ m/06/ && ($chn eq "00" || $chn eq "01")); $msg = "powerOn" if($msgType =~ m/06/ && ($chn eq "00" || $chn eq "01"));
push @event, "$msg:$val$target"; push @event, "$msg:$val$target";
push @event, "state:$val"; push @event, "state:$val";
if($model eq "HM-LC-BL1-PB-FM") { # By peterp
push @event, "motor:opening" if(hex($add)&0x10);
push @event, "motor:closing" if(hex($add)&0x20);
} elsif($st eq "dimmer") {
push @event, "dim:up" if(hex($add)&0x10);
push @event, "dim:down" if(hex($add)&0x20);
push @event, "dim:stop" if(hex($add)&0x40);
}
if($id eq $dst && $cmd ne "8002") { # Send Ack
CUL_HM_SendCmd($shash, "++8002".$id.$src."00",1,0) # Send Ack. # By peterp
}
} }
} elsif($st eq "remote" || $st eq "pushButton") { ####################### } elsif($st eq "remote" || $st eq "pushButton") { #######################
@ -606,14 +623,16 @@ CUL_HM_Parse($$)
my $btn = int((($button&0x3f)+1)/2); my $btn = int((($button&0x3f)+1)/2);
my $state; my $state;
if($button & 0x40){ if($button & 0x40){
$state = ($button&1 ? "off" : "on") . "Long" .($cmd=~m/^A04./ ? "Release" : "")." ".$shash->{BNOCNT}; $state = ($button&1 ? "off" : "on") .
"Long" .($cmd=~m/^A04./ ? "Release" : "")." ".$shash->{BNOCNT};
}else{ }else{
$state = ($button&1 ? "off" : "on"); $state = ($button&1 ? "off" : "on");
} }
#Log 1, $cmd; #Log 1, $cmd;
push @event, "state:Btn$btn $state$target"; push @event, "state:Btn$btn $state$target";
push @event, "battery:". (($button & 0x80) ? "low" : "ok"); #By peterp
if($id eq $dst && $cmd ne "8002") { # Send Ack if($id eq $dst && $cmd ne "8002") { # Send Ack
CUL_HM_SendCmd($shash, "++8002".$id.$src."0101". # Send Ack. CUL_HM_SendCmd($shash, "++8002".$id.$src."0101".
($state =~ m/on/?"C8":"00")."00", 1, 0); ($state =~ m/on/?"C8":"00")."00", 1, 0);
} }
} }
@ -623,6 +642,7 @@ CUL_HM_Parse($$)
if($cmd =~ m/^..4./ && $p =~ m/^(..)(..)$/) { if($cmd =~ m/^..4./ && $p =~ m/^(..)(..)$/) {
my ($button, $bno) = (hex($1), hex($2)); my ($button, $bno) = (hex($1), hex($2));
push @event, "state:Btn$button toggle$target"; push @event, "state:Btn$button toggle$target";
push @event, "battery:". (($button & 0x80) ? "low" : "ok"); #By peterp
if($id eq $dst && $cmd ne "8002") { # Send Ack if($id eq $dst && $cmd ne "8002") { # Send Ack
CUL_HM_SendCmd($shash, "++8002".$id.$src."01010000",1,0) # Send Ack. CUL_HM_SendCmd($shash, "++8002".$id.$src."01010000",1,0) # Send Ack.
@ -1631,7 +1651,10 @@ my %culHmBits = (
"8002;p01=01" => { txt => "ACK_STATUS", params => { "8002;p01=01" => { txt => "ACK_STATUS", params => {
CHANNEL => "02,2", CHANNEL => "02,2",
STATUS => "04,2", STATUS => "04,2",
RSSI => "08,2", } }, DOWN => '06,02,$val=(hex($val)&0x20)?1:0',
UP => '06,02,$val=(hex($val)&0x10)?1:0',
LOWBAT => '06,02,$val=(hex($val)&0x80)?1:0',
RSSI => '08,02,$val=(-1)*(hex($val))', } },
"8002;p01=00" => { txt => "ACK" }, "8002;p01=00" => { txt => "ACK" },
"8002;p01=02" => { txt => "ACK2" }, # smokeDetector pairing only? "8002;p01=02" => { txt => "ACK2" }, # smokeDetector pairing only?
"8002;p01=80" => { txt => "NACK" }, "8002;p01=80" => { txt => "NACK" },