mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-03 16:56:54 +00:00
ElTako Dimmer by Marc.
git-svn-id: https://svn.fhem.de/fhem/trunk@1154 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
16f4000367
commit
2e14178410
@ -30,6 +30,7 @@
|
|||||||
- feature: shutdown parameter restart added
|
- feature: shutdown parameter restart added
|
||||||
- feature: usb scan/create command added (part of autocreate).
|
- feature: usb scan/create command added (part of autocreate).
|
||||||
- feature: SaveAs added to FHEMWEB Edit-Files
|
- feature: SaveAs added to FHEMWEB Edit-Files
|
||||||
|
- feature: EnOcean ElTako dimmer by Marc.
|
||||||
|
|
||||||
|
|
||||||
- 2011-07-08 (5.1)
|
- 2011-07-08 (5.1)
|
||||||
|
@ -66,8 +66,8 @@ EnOcean_Initialize($)
|
|||||||
$hash->{SetFn} = "EnOcean_Set";
|
$hash->{SetFn} = "EnOcean_Set";
|
||||||
$hash->{AttrList} = "IODev do_not_notify:1,0 ignore:0,1 " .
|
$hash->{AttrList} = "IODev do_not_notify:1,0 ignore:0,1 " .
|
||||||
"showtime:1,0 loglevel:0,1,2,3,4,5,6 model " .
|
"showtime:1,0 loglevel:0,1,2,3,4,5,6 model " .
|
||||||
"subType:switch,contact,sensor,windowHandle,SR04,MD15 ".
|
"subType:switch,contact,sensor,windowHandle,SR04,MD15,".
|
||||||
"actualTemp";
|
"dimmer,dimmCtrl actualTemp";
|
||||||
|
|
||||||
for(my $i=0; $i<@ptm200btn;$i++) {
|
for(my $i=0; $i<@ptm200btn;$i++) {
|
||||||
$ptm200btn{$ptm200btn[$i]} = "$i:30";
|
$ptm200btn{$ptm200btn[$i]} = "$i:30";
|
||||||
@ -140,6 +140,31 @@ 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 "dimmCtrl") { # Tested for Eltako-Dimmer
|
||||||
|
if($cmd eq "teach") {
|
||||||
|
my $data=sprintf("A502000000%s00", $hash->{DEF});
|
||||||
|
Log $ll2, "dimmCtrl.Teach: " . $data;
|
||||||
|
IOWrite($hash, "000A0001", $data); # len:000a optlen:00 pakettype:1(radio)
|
||||||
|
|
||||||
|
} elsif($cmd eq "dimm") {
|
||||||
|
return "Usage: dimm percent [time 01-FF FF:slowest] [on/off]" if(@a<2);
|
||||||
|
my $time=0;
|
||||||
|
my $onoff=1;
|
||||||
|
# for eltako relative (0-100) (but not compliant to EEP because DB0.2 is 0)
|
||||||
|
my $dimVal=$a[1];
|
||||||
|
shift(@a);
|
||||||
|
if(defined($a[1])) { $time=$a[1]; shift(@a); }
|
||||||
|
if(defined($a[1])) { $onoff=($a[1] eq "off") ? 0 : 1; shift(@a); }
|
||||||
|
# EEP: A5/38/08 Central Command ->Typ 0x02: Dimming
|
||||||
|
my $data=sprintf("A502%02X%02X%02X%s00", $dimVal, $time, $onoff|0x08, $hash->{DEF});
|
||||||
|
IOWrite($hash, "000A0001", $data);
|
||||||
|
Log $ll2, "dimmCtrl.dimm: " . $data;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
return "Unknown argument $cmd, choose one of: teach, dimm"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
} else { # Simulate a PTM
|
} else { # Simulate a PTM
|
||||||
my ($c1,$c2) = split(",", $cmd, 2);
|
my ($c1,$c2) = split(",", $cmd, 2);
|
||||||
@ -319,6 +344,26 @@ EnOcean_Parse($$)
|
|||||||
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 "dimmer") {
|
||||||
|
# todo: create a more general solution for the central-command responses
|
||||||
|
|
||||||
|
# response command from (Eltako-)Actor ( Central-Command:A5/38/08 )
|
||||||
|
if($db_3 eq 0x01) { # switch
|
||||||
|
push @event, "3:state:" . (($db_0 & 0x01) ? "on": "off");
|
||||||
|
push @event, "3:time:" . ($db_2<<8 + $db_1);
|
||||||
|
push @event, "3:timeType:" . (($db_0 & 0x02) ? "delay": "duration");
|
||||||
|
|
||||||
|
} elsif($db_3 eq 0x02) { # dimm
|
||||||
|
push @event, "3:state:" . (($db_0 & 0x01) ? "on": "off");
|
||||||
|
push @event, "3:dimmValue:$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 {
|
||||||
push @event, "3:state:$db_3";
|
push @event, "3:state:$db_3";
|
||||||
push @event, "3:sensor1:$db_3";
|
push @event, "3:sensor1:$db_3";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user