Enocean: eltakoRoll

This commit is contained in:
Marc Hoppe
2012-02-07 22:56:21 +01:00
parent 4536c9f754
commit 77106140e7

View File

@@ -1,5 +1,5 @@
############################################## ##############################################
# $Id$ # $Id: 10_EnOcean.pm 1130 2011-12-14 07:57:59Z rudolfkoenig $
package main; package main;
use strict; use strict;
@@ -165,7 +165,7 @@ EnOcean_Set($@)
} elsif($st eq "eltakoDimmer") { } elsif($st eq "eltakoDimmer") {
my $sendDimCmd=0; my $sendDimCmd=0;
my $time=AttrVal($name, "dimTime", 0); my $time=AttrVal($name, "time", 0);
my $onoff=1; my $onoff=1;
my $dimVal=100; my $dimVal=100;
$dimVal=$hash->{VALUE} if(defined $hash->{VALUE}); $dimVal=$hash->{VALUE} if(defined $hash->{VALUE});
@@ -177,7 +177,7 @@ EnOcean_Set($@)
IOWrite($hash, "000A0001", $data); # len:000a optlen:00 pakettype:1(radio) IOWrite($hash, "000A0001", $data); # len:000a optlen:00 pakettype:1(radio)
} elsif($cmd eq "dimto") { } elsif($cmd eq "dimto") {
return "Usage: $cmd percent" if(@a<2); return "Usage: $cmd percent" if(@a<2 or $a[1]>100);
# for eltako relative (0-100) (but not compliant to EEP because DB0.2 is 0) # for eltako relative (0-100) (but not compliant to EEP because DB0.2 is 0)
$dimVal=$a[1]; $dimVal=$a[1];
shift(@a); shift(@a);
@@ -221,22 +221,43 @@ EnOcean_Set($@)
########################### ###########################
} elsif($st eq "eltakoRoll") { } elsif($st eq "eltakoRoll") {
if($cmd eq "teach") {
my $data=sprintf("A5FFF80D80%s00", $hash->{DEF});
Log $ll2, "eltakoRollCtrl.Teach: " . $data;
IOWrite($hash, "000A0001", $data); # len:000a optlen:00 pakettype:1(radio)
} else {
my %eltakoRollCtrlCommands = ( down=>0x02, up=>0x01, stop=>0x00 );
my $usage = "Usage: (" . join("|", sort keys %eltakoRollCtrlCommands) . ")";
my $rollcmd= $eltakoRollCtrlCommands{$cmd};
return $usage if(!defined($rollcmd));
my $time=AttrVal($name, "time", 0);
# EEP: A5/3F/7F Universal ???
my $idSrc=EnOcean_GetMyDeviceId($hash);
my $data=sprintf("A5%02X%02X%02X%02X%s00", 0, $time, $rollcmd, 0x08, $idSrc);
IOWrite($hash, "000A0001", $data);
Log $ll2, "eltakoRoll.$cmd" . $data;
}
###########################
} elsif($st eq "eltakoRollCtrl") {
if($cmd eq "teach") { if($cmd eq "teach") {
my $data=sprintf("A5FFF80D80%s00", $hash->{DEF}); my $data=sprintf("A5FFF80D80%s00", $hash->{DEF});
Log $ll2, "eltakoRollCtrl.Teach: " . $data; Log $ll2, "eltakoRollCtrl.Teach: " . $data;
IOWrite($hash, "000A0001", $data); # len:000a optlen:00 pakettype:1(radio) IOWrite($hash, "000A0001", $data); # len:000a optlen:00 pakettype:1(radio)
} else { } else {
my %eltakoRollCtrlCommands = ( down=>0x02, up=>0x01, stop=>0x00 ); my %eltakoRollCtrlCommands = ( down=>0x02, up=>0x01, stop=>0x00 );
my $usage = "Usage: (" . join("|", sort keys %eltakoRollCtrlCommands) . ") [time 0-255 sek]"; my $usage = "Usage: (" . join("|", sort keys %eltakoRollCtrlCommands) . ") [time 0-255 sek]";
my $rollcmd= $eltakoRollCtrlCommands{$cmd}; my $rollcmd= $eltakoRollCtrlCommands{$cmd};
return $usage if( (!defined($rollcmd)) or (@a<1) ); return $usage if( (!defined($rollcmd)) or (@a<1) );
my $time=0; my $time=0;
if(defined($a[1])) { $time=$a[1]; shift(@a); } # time if(defined($a[1])) { $time=$a[1]; } # time
shift(@a);
# EEP: A5/3F/7F Universal ??? # EEP: A5/3F/7F Universal ???
my $idSrc=EnOcean_GetMyDeviceId($hash); my $data=sprintf("A5%02X%02X%02X%02X%s00", 0, $time, $rollcmd, 0x08, $hash->{DEF});
my $data=sprintf("A5%02X%02X%02X%02X%s00", 0, $time, $rollcmd, 0x08, $idSrc);
IOWrite($hash, "000A0001", $data); IOWrite($hash, "000A0001", $data);
Log $ll2, "eltakoRoll.$cmd" . $data; Log $ll2, "eltakoRollCtrl.$cmd" . $data;
} }
########################### ###########################