...
This commit is contained in:
@@ -90,8 +90,9 @@ sub EnOcean_Attr($)
|
|||||||
if($a[2] eq "subType") {
|
if($a[2] eq "subType") {
|
||||||
Log $ll2, "EO_Attr subtype";
|
Log $ll2, "EO_Attr subtype";
|
||||||
|
|
||||||
if($a[3] eq "eltakoDimmer") {
|
if( $a[3] eq "eltakoDimmer"
|
||||||
Log $ll2, "EO_Attr subtype dimmer";
|
or $a[3] eq "eltakoSwitch") {
|
||||||
|
Log $ll2, "EO_Attr subtype dimmer/switch";
|
||||||
$attr{$name}{eventMap}="B0:on B1:off"
|
$attr{$name}{eventMap}="B0:on B1:off"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -163,6 +164,7 @@ EnOcean_Set($@)
|
|||||||
$hash->{READINGS}{$cmd}{TIME} = $tn;
|
$hash->{READINGS}{$cmd}{TIME} = $tn;
|
||||||
$hash->{READINGS}{$cmd}{VAL} = $arg;
|
$hash->{READINGS}{$cmd}{VAL} = $arg;
|
||||||
|
|
||||||
|
###########################
|
||||||
} elsif($st eq "eltakoDimmer") {
|
} elsif($st eq "eltakoDimmer") {
|
||||||
my $sendDimCmd=0;
|
my $sendDimCmd=0;
|
||||||
my $time=AttrVal($name, "time", 0);
|
my $time=AttrVal($name, "time", 0);
|
||||||
@@ -226,7 +228,7 @@ EnOcean_Set($@)
|
|||||||
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) . ")";
|
my $usage = "Usage: (" . join("|", sort keys %eltakoRollCtrlCommands) . ")";
|
||||||
my $rollcmd= $eltakoRollCtrlCommands{$cmd};
|
my $rollcmd= $eltakoRollCtrlCommands{$cmd};
|
||||||
return $usage if(!defined($rollcmd));
|
return $usage if(!defined($rollcmd));
|
||||||
@@ -238,29 +240,37 @@ EnOcean_Set($@)
|
|||||||
Log $ll2, "eltakoRoll.$cmd" . $data;
|
Log $ll2, "eltakoRoll.$cmd" . $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
|
} elsif($st eq "eltakoSwitch") {
|
||||||
|
my $sendCmd=0;
|
||||||
|
my $onoff=1;
|
||||||
|
|
||||||
} elsif($st eq "eltakoRollCtrl") {
|
|
||||||
if($cmd eq "teach") {
|
if($cmd eq "teach") {
|
||||||
my $data=sprintf("A5FFF80D80%s00", $hash->{DEF});
|
my $idSrc=EnOcean_GetMyDeviceId($hash);
|
||||||
Log $ll2, "eltakoRollCtrl.Teach: " . $data;
|
my $data=sprintf("A501000000%s00", $idSrc);
|
||||||
|
Log $ll2, "$st.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 {
|
} elsif($cmd eq "on" or $cmd eq "B0") {
|
||||||
my %eltakoRollCtrlCommands = ( down=>0x02, up=>0x01, stop=>0x00 );
|
$sendCmd=1;
|
||||||
my $usage = "Usage: (" . join("|", sort keys %eltakoRollCtrlCommands) . ") [time 0-255 sek]";
|
|
||||||
my $rollcmd= $eltakoRollCtrlCommands{$cmd};
|
|
||||||
return $usage if( (!defined($rollcmd)) or (@a<1) );
|
|
||||||
my $time=0;
|
|
||||||
if(defined($a[1])) { $time=$a[1]; } # time
|
|
||||||
shift(@a);
|
|
||||||
# EEP: A5/3F/7F Universal ???
|
|
||||||
my $data=sprintf("A5%02X%02X%02X%02X%s00", 0, $time, $rollcmd, 0x08, $hash->{DEF});
|
|
||||||
IOWrite($hash, "000A0001", $data);
|
|
||||||
Log $ll2, "eltakoRollCtrl.$cmd" . $data;
|
|
||||||
}
|
|
||||||
|
|
||||||
###########################
|
} elsif($cmd eq "off" or $cmd eq "B1") {
|
||||||
|
$onoff=0;
|
||||||
|
$sendCmd=1;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
return "Unknown argument $cmd, choose one of: teach, on ,off";
|
||||||
|
|
||||||
|
}
|
||||||
|
if($sendDimCmd) {
|
||||||
|
# EEP: A5/38/08 Central Command ->Typ 0x01: Switch
|
||||||
|
my $idSrc=EnOcean_GetMyDeviceId($hash);
|
||||||
|
my $data=sprintf("A5010000%02X%s00", $onoff|0x08, $idSrc);
|
||||||
|
IOWrite($hash, "000A0001", $data);
|
||||||
|
Log $ll2, "$st.$cmd: " . $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
###########################
|
||||||
} else { # Simulate a PTM
|
} else { # Simulate a PTM
|
||||||
my ($c1,$c2) = split(",", $cmd, 2);
|
my ($c1,$c2) = split(",", $cmd, 2);
|
||||||
return "Unknown argument $cmd, choose one of " .
|
return "Unknown argument $cmd, choose one of " .
|
||||||
@@ -291,6 +301,7 @@ EnOcean_Set($@)
|
|||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#############################
|
#############################
|
||||||
sub
|
sub
|
||||||
EnOcean_Parse($$)
|
EnOcean_Parse($$)
|
||||||
@@ -440,7 +451,7 @@ EnOcean_Parse($$)
|
|||||||
push @event, "3:actuatorStatus:".(($db_2 & 0x01) ? "obstructed" : "ok");
|
push @event, "3:actuatorStatus:".(($db_2 & 0x01) ? "obstructed" : "ok");
|
||||||
push @event, "3:measured-temp:". sprintf "%.1f", ($db_1*40/255);
|
push @event, "3:measured-temp:". sprintf "%.1f", ($db_1*40/255);
|
||||||
EnOcean_MD15Cmd($hash, $name, $db_1);
|
EnOcean_MD15Cmd($hash, $name, $db_1);
|
||||||
|
|
||||||
} elsif($st eq "PM101") {
|
} elsif($st eq "PM101") {
|
||||||
####################################
|
####################################
|
||||||
# Ratio Presence Sensor Eagle PM101, code by aicgazi
|
# Ratio Presence Sensor Eagle PM101, code by aicgazi
|
||||||
@@ -462,11 +473,6 @@ EnOcean_Parse($$)
|
|||||||
} elsif($db_3 eq 0x02) { # dimm
|
} elsif($db_3 eq 0x02) { # dimm
|
||||||
push @event, "3:state:" . (($db_0 & 0x01) ? "on": "off");
|
push @event, "3:state:" . (($db_0 & 0x01) ? "on": "off");
|
||||||
push @event, "3:value:$db_2";
|
push @event, "3:value:$db_2";
|
||||||
|
|
||||||
} elsif($db_3 eq 0x03) { # setpoint-switch, todo
|
|
||||||
} elsif($db_3 eq 0x04) { # basic setpoint, todo
|
|
||||||
} elsif($db_3 eq 0x05) { # control-variable, todo
|
|
||||||
} elsif($db_3 eq 0x06) { # fan-stage, todo
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user