2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-02-01 01:09:47 +00:00

winmatic Fixes, some minor, FW download begin

git-svn-id: https://svn.fhem.de/fhem/trunk@5181 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
martinp876 2014-03-09 18:21:18 +00:00
parent fc4b0b965e
commit a2da530b43
2 changed files with 135 additions and 67 deletions

View File

@ -725,6 +725,10 @@ sub CUL_HM_Parse($$) {#########################################################
ref($iohash) ne 'HASH' || ref($iohash) ne 'HASH' ||
$t ne 'A' || $t ne 'A' ||
length($msg)<20); length($msg)<20);
if ($modules{CUL_HM}{helper}{updating}){
CUL_HM_FWupdateSteps($msg);
return "";
}
$p = "" if(!defined($p)); $p = "" if(!defined($p));
my @mI = unpack '(A2)*',$p; # split message info to bytes my @mI = unpack '(A2)*',$p; # split message info to bytes
return "" if($msgStat && $msgStat eq 'NACK');# lowlevel error return "" if($msgStat && $msgStat eq 'NACK');# lowlevel error
@ -1064,6 +1068,9 @@ sub CUL_HM_Parse($$) {#########################################################
push @evtEt,[$dHash,1,"measured-temp:$actTemp"]; push @evtEt,[$dHash,1,"measured-temp:$actTemp"];
push @evtEt,[$dHash,1,"desired-temp:$setTemp"]; push @evtEt,[$dHash,1,"desired-temp:$setTemp"];
push @evtEt,[$dHash,1,"actuator:$vp %"]; push @evtEt,[$dHash,1,"actuator:$vp %"];
my $wHash = $modules{CUL_HM}{defptr}{$src."01"};
push @evtEt,[$wHash,1,"measured-temp:$actTemp"] if ($wHash);
} }
elsif($mTp eq "59" && $p =~ m/^(..)/) {#inform team about new value elsif($mTp eq "59" && $p =~ m/^(..)/) {#inform team about new value
my $setTemp = int(hex($1)/4)/2; my $setTemp = int(hex($1)/4)/2;
@ -1703,7 +1710,7 @@ sub CUL_HM_Parse($$) {#########################################################
elsif(!@evtEt){push @evtEt,[$shash,1,"3SSunknownMsg:$p"];} elsif(!@evtEt){push @evtEt,[$shash,1,"3SSunknownMsg:$p"];}
} }
elsif($st eq "winMatic") { ################################################# elsif($st eq "winMatic") { #################################################
my($sType,$chn,$lvl,$stat) = ($1,$2,$3,$4) if ($p =~ m/^(..)(..)(..)(..)/); my($sType,$chn,$lvl,$stat) = @mI;
if(($mTp eq "10" && $sType eq "06") || if(($mTp eq "10" && $sType eq "06") ||
($mTp eq "02" && $sType eq "01")){ ($mTp eq "02" && $sType eq "01")){
$shash = $modules{CUL_HM}{defptr}{"$src$chn"} $shash = $modules{CUL_HM}{defptr}{"$src$chn"}
@ -1713,25 +1720,25 @@ sub CUL_HM_Parse($$) {#########################################################
if ($chn eq "01"){ if ($chn eq "01"){
my %err = (0=>"no",1=>"TurnError",2=>"TiltError"); my %err = (0=>"no",1=>"TurnError",2=>"TiltError");
my %dir = (0=>"no",1=>"up",2=>"down",3=>"undefined"); my %dir = (0=>"no",1=>"up",2=>"down",3=>"undefined");
push @evtEt,[$shash,1,"motorError:".$err{(hex($stat)>>1)&0x02}]; push @evtEt,[$shash,1,"motorError:".$err{(hex($stat)>>1)&0x03}];
push @evtEt,[$shash,1,"direction:".$dir{(hex($stat)>>4)&0x02}]; push @evtEt,[$shash,1,"direction:" .$dir{(hex($stat)>>4)&0x03}];
} }
else{ #should be akku else{ #should be akku
my %statF = (0=>"trickleCharge",1=>"charge",2=>"dischange",3=>"unknown"); my %statF = (0=>"trickleCharge",1=>"charge",2=>"dischange",3=>"unknown");
push @evtEt,[$shash,1,"charge:".$statF{(hex($stat)>>4)&0x02}]; push @evtEt,[$shash,1,"charge:".$statF{(hex($stat)>>4)&0x03}];
} }
} }
if ($p =~ m/^0287(..)89(..)8B(..)/) { # if ($p =~ m/^0287(..)89(..)8B(..)/) {
my ($air, undef, $course) = ($1, $2, $3); # my ($air, $course) = ($1, $3);
push @evtEt,[$shash,1,"airing:".($air eq "FF" ? "inactiv" : CUL_HM_decodeTime8($air))]; # push @evtEt,[$shash,1,"airing:".($air eq "FF" ? "inactiv" : CUL_HM_decodeTime8($air))];
push @evtEt,[$shash,1,"course:".($course eq "FF" ? "tilt" : "close")]; # push @evtEt,[$shash,1,"course:".($course eq "FF" ? "tilt" : "close")];
} # }
elsif($p =~ m/^0201(..)03(..)04(..)05(..)07(..)09(..)0B(..)0D(..)/) { # elsif($p =~ m/^0201(..)03(..)04(..)05(..)07(..)09(..)0B(..)0D(..)/) {
my ($flg1, $flg2, $flg3, $flg4, $flg5, $flg6, $flg7, $flg8) = # my ($flg1, $flg2, $flg3, $flg4, $flg5, $flg6, $flg7, $flg8) =
($1, $2, $3, $4, $5, $6, $7, $8); # ($1, $2, $3, $4, $5, $6, $7, $8);
push @evtEt,[$shash,1,"airing:".($flg5 eq "FF" ? "inactiv" : CUL_HM_decodeTime8($flg5))]; # push @evtEt,[$shash,1,"airing:".($flg5 eq "FF" ? "inactiv" : CUL_HM_decodeTime8($flg5))];
push @evtEt,[$shash,1,"contact:tesed"]; # push @evtEt,[$shash,1,"contact:tesed"];
} # }
} }
elsif($st eq "keyMatic") { ################################################# elsif($st eq "keyMatic") { #################################################
#Info Level: mTp=0x10 p(..)(..)(..)(..) subty=06, chn, state,err (3bit) #Info Level: mTp=0x10 p(..)(..)(..)(..) subty=06, chn, state,err (3bit)
@ -2031,6 +2038,8 @@ sub CUL_HM_parseCommon(@){#####################################################
delete $shash->{cmdStack}; delete $shash->{cmdStack};
delete $shash->{helper}{prt}{rspWait}; delete $shash->{helper}{prt}{rspWait};
delete $shash->{helper}{prt}{rspWaitSec}; delete $shash->{helper}{prt}{rspWaitSec};
delete $shash->{READINGS}{"RegL_00:"};
delete $shash->{READINGS}{".RegL_00:"};
AssignIoPort($shash,$ioHash->{NAME}) AssignIoPort($shash,$ioHash->{NAME})
if (!$modules{CUL_HM}{helper}{hmManualOper}); if (!$modules{CUL_HM}{helper}{hmManualOper});
@ -3645,10 +3654,11 @@ sub CUL_HM_Set($@) {#+++++++++++++++++ set command+++++++++++++++++++++++++++++
} }
} }
elsif($cmd eq "fwUpdate") { ################################################# elsif($cmd eq "fwUpdate") { #################################################
return "implementation pending";
return "no filename given" if (!$a[2]); return "no filename given" if (!$a[2]);
return "only thru CUL " if (!$hash->{IODev}->{TYPE} return "only thru CUL " if (!$hash->{IODev}->{TYPE}
||($hash->{IODev}->{TYPE} ne "CUL")); ||($hash->{IODev}->{TYPE} ne "CUL"));
# todo General add version cehck of CUL # todo General add version check of CUL
my $fName = $a[2]; my $fName = $a[2];
my $pos = 0; my $pos = 0;
my @imA; # image array: image[block][msg] my @imA; # image array: image[block][msg]
@ -3667,15 +3677,19 @@ sub CUL_HM_Set($@) {#+++++++++++++++++ set command+++++++++++++++++++++++++++++
} }
close(aUpdtF); close(aUpdtF);
# --- we are prepared start update--- # --- we are prepared start update---
InternalTimer(gettimeofday()+100,"CUL_HM_FWupdateEnd","updateTmr:$name",0); InternalTimer(gettimeofday()+5,"CUL_HM_FWupdateEnd","fail:notInBootLoader",0);
$modules{CUL_HM}{helper}{updating} = 1; $modules{CUL_HM}{helper}{updating} = 1;
$modules{CUL_HM}{helper}{updatingName} = $name; $modules{CUL_HM}{helper}{updatingName} = $name;
$modules{CUL_HM}{helper}{updateData} = \@imA; $modules{CUL_HM}{helper}{updateData} = \@imA;
$modules{CUL_HM}{helper}{updateStep} = 0; $modules{CUL_HM}{helper}{updateStep} = 0;
$modules{CUL_HM}{helper}{updateDst} = $dst; $modules{CUL_HM}{helper}{updateDst} = $dst;
$modules{CUL_HM}{helper}{updateId} = $id; $modules{CUL_HM}{helper}{updateId} = $id;
$modules{CUL_HM}{helper}{updateNbr} = 10;
my $msg; my $msg;
$msg = "++3011$id${dst}CA"; Log 1,"General enter Boot: $msg"; # CUL_HM_PushCmdStack($hash, $msg); Log3 $name,3,"CUL_HM fwUpdate started for $name";
CUL_HM_SndCmd($hash, sprintf("%02X",$modules{CUL_HM}{helper}{updateNbr})
."3011$id${dst}CA");
InternalTimer(gettimeofday()+0.3,"CUL_HM_FWupdateSim",$dst.$id."00",0);#General simulation
} }
elsif($cmd eq "postEvent") { ################################################ elsif($cmd eq "postEvent") { ################################################
my (undef,undef,$cond) = @a; my (undef,undef,$cond) = @a;
@ -4290,7 +4304,7 @@ sub CUL_HM_responseSetup($$) {#store all we need to handle the response
# response setup - do not repeat, set counter to 250 # response setup - do not repeat, set counter to 250
CUL_HM_respWaitSu ($hash,"cmd:=$cmd","mNo:=$mNo","reSent:=$rss","wakeup:=1"); CUL_HM_respWaitSu ($hash,"cmd:=$cmd","mNo:=$mNo","reSent:=$rss","wakeup:=1");
} }
else{ elsif($mTp !~ m /C./){
CUL_HM_respWaitSu ($hash,"cmd:=$cmd","mNo:=$mNo","reSent:=$rss"); CUL_HM_respWaitSu ($hash,"cmd:=$cmd","mNo:=$mNo","reSent:=$rss");
} }
@ -4594,48 +4608,89 @@ sub CUL_HM_respPendToutProlong($) {#used when device sends part responses
RemoveInternalTimer("respPend:$hash->{DEF}"); RemoveInternalTimer("respPend:$hash->{DEF}");
InternalTimer(gettimeofday()+2, "CUL_HM_respPendTout", "respPend:$hash->{DEF}", 0); InternalTimer(gettimeofday()+2, "CUL_HM_respPendTout", "respPend:$hash->{DEF}", 0);
} }
sub CUL_HM_FWupdateSteps($){#steps for FW update sub CUL_HM_FWupdateSteps($){#steps for FW update
my $mIn = shift;
my $step = $modules{CUL_HM}{helper}{updateStep}; my $step = $modules{CUL_HM}{helper}{updateStep};
my $hash = $defs{$modules{CUL_HM}{helper}{updatingName}}; my $name = $modules{CUL_HM}{helper}{updatingName};
my $hash = $defs{$name};
my $dst = $modules{CUL_HM}{helper}{updateDst}; my $dst = $modules{CUL_HM}{helper}{updateDst};
my $id = $modules{CUL_HM}{helper}{updateId}; my $id = $modules{CUL_HM}{helper}{updateId};
my $msg; my $mNo = $modules{CUL_HM}{helper}{updateNbr};
my $mNoA = sprintf("%02X",$mNo);
return if ($mIn !~ m/$mNoA..02$dst${id}00/);
Log 1,"General loop fwUpdate $mNoA------------";
if ($step == 0){#check bootloader entered - now chnage speed if ($step == 0){#check bootloader entered - now chnage speed
$msg = "++00CB$id${dst}105B11F81547"; Log 1,"General ch baud: $msg"; # CUL_HM_PushCmdStack($hash, $msg); Log3 $name,4,"CUL_HM fwUpdate switch speed";
Log 1,"General switch speed"; # IOWrite($hash, "","AR\n"); $mNo = (++$mNo)%256; $mNoA = sprintf("%02X",$mNo);
$msg = "++++20CB$id${dst}105B11F81547";Log 1,"General chk baud: $msg"; # CUL_HM_PushCmdStack($hash, $msg); CUL_HM_SndCmd($hash,"${mNoA}00CB$id${dst}105B11F81547");
CUL_HM_FWupdateSpeed($name,100);
select(undef, undef, undef, (0.1));
$mNo = (++$mNo)%256; $mNoA = sprintf("%02X",$mNo);
CUL_HM_SndCmd($hash,"${mNoA}20CB$id${dst}105B11F81547");
$modules{CUL_HM}{helper}{updateStep}++; $modules{CUL_HM}{helper}{updateStep}++;
$modules{CUL_HM}{helper}{updateNbr} = $mNo;
InternalTimer(gettimeofday()+0.3,"CUL_HM_FWupdateSim","${dst}${id}00",0);#General simulation
RemoveInternalTimer("fail:notInBootLoader");
InternalTimer(gettimeofday()+5,"CUL_HM_FWupdateEnd","fail:SpeedChangeFailed",0);
} }
else{# check response - start programming else{# check response - start programming
my $blocks = scalar(@{$modules{CUL_HM}{helper}{updateData}}); my $blocks = scalar(@{$modules{CUL_HM}{helper}{updateData}});
if ($blocks == $step){ RemoveInternalTimer("fail:SpeedChangeFailed");
Log 1,"General we are done#########"; RemoveInternalTimer("fail:Block".($step-1));
# IOWrite($hash, "","Ar\n"); # switch CUL baud to 10 if ($blocks < $step){#last block
CUL_HM_FWupdateEnd("updateTmr:".$modules{CUL_HM}{helper}{updatingName}); CUL_HM_FWupdateSpeed($name,10);
return ; CUL_HM_FWupdateEnd("done");
Log3 $name,4,"CUL_HM fwUpdate completed";
} }
else{ else{# programming continue
my $bl = ${$modules{CUL_HM}{helper}{updateData}}[$step-1]; my $bl = ${$modules{CUL_HM}{helper}{updateData}}[$step-1];
my $no = scalar(@{$bl}); my $no = scalar(@{$bl});
Log 1,"General next block - length:$no :$msg"; Log3 $name,4,"CUL_HM fwUpdate write block $step of $blocks: $no messages";
foreach my $msgP (@{$bl}){ foreach my $msgP (@{$bl}){
$msg = "++".((--$no)?"00":"20")."CA$id$dst".$msgP; $mNo = (++$mNo)%256; $mNoA = sprintf("%02X",$mNo);
Log 1,"General updatemessage$no: $msg";# CUL_HM_PushCmdStack($hash, $msg); CUL_HM_SndCmd($hash, $mNoA.((--$no)?"00":"20")."CA$id$dst".$msgP);
select(undef, undef, undef, (0.1));
} }
$modules{CUL_HM}{helper}{updateStep}++; $modules{CUL_HM}{helper}{updateStep}++;
$modules{CUL_HM}{helper}{updateNbr} = $mNo;
InternalTimer(gettimeofday()+0.3,"CUL_HM_FWupdateSim","${dst}${id}00",0);#General simulation
InternalTimer(gettimeofday()+5,"CUL_HM_FWupdateEnd","fail:Block$step",0);
} }
} }
} }
sub CUL_HM_FWupdateEnd($){#end FW update sub CUL_HM_FWupdateEnd($){#end FW update
my $tmr = shift; my $in = shift;
RemoveInternalTimer($tmr); # could be called by finish CUL_HM_UpdtReadSingle($defs{$modules{CUL_HM}{helper}{updatingName}},
"fwUpdate",$in,1);
CUL_HM_FWupdateSpeed($modules{CUL_HM}{helper}{updatingName},10);
delete $defs{$modules{CUL_HM}{helper}{updatingName}}->{cmdStack};
delete $modules{CUL_HM}{helper}{updating}; delete $modules{CUL_HM}{helper}{updating};
delete $modules{CUL_HM}{helper}{updatingName}; delete $modules{CUL_HM}{helper}{updatingName};
delete $modules{CUL_HM}{helper}{updateData}; delete $modules{CUL_HM}{helper}{updateData};
delete $modules{CUL_HM}{helper}{updateStep}; delete $modules{CUL_HM}{helper}{updateStep};
delete $modules{CUL_HM}{helper}{updateDst}; delete $modules{CUL_HM}{helper}{updateDst};
delete $modules{CUL_HM}{helper}{updateId}; delete $modules{CUL_HM}{helper}{updateId};
delete $modules{CUL_HM}{helper}{updateNbr};
} }
sub CUL_HM_FWupdateSpeed($$){#set IO speed
my ($name,$speed) = @_;
my $hash = $defs{$name};
if ($hash->{IODev}->{TYPE} ne "CUL"){
my $msg = sprintf("G%02X",$speed);
IOWrite($hash, "",$msg);
}
else{
IOWrite($hash, "",($speed == 100)?"AR\n":"Ar\n");
}
}
sub CUL_HM_FWupdateSim($){#end FW Simulation
my $msg = shift;
my $ioName = $defs{$modules{CUL_HM}{helper}{updatingName}}->{IODev}->{NAME};
# CUL_HM_Parse($defs{$ioName},"A00118002$msg");
}
sub CUL_HM_eventP($$) {#handle protocol events sub CUL_HM_eventP($$) {#handle protocol events
# Current Events are Rcv,NACK,IOerr,Resend,ResendFail,Snd # Current Events are Rcv,NACK,IOerr,Resend,ResendFail,Snd
@ -4734,12 +4789,14 @@ sub CUL_HM_ID2PeerList ($$$) {
$peerNames .= CUL_HM_peerChName($pId,$dId,"").","; $peerNames .= CUL_HM_peerChName($pId,$dId,"").",";
} }
$attr{$name}{peerIDs} = $peerIDs; # make it public $attr{$name}{peerIDs} = $peerIDs; # make it public
my $dHash = CUL_HM_getDeviceHash($hash);
my $st = AttrVal($dHash->{NAME},"subType","");
my $md = AttrVal($dHash->{NAME},"model","");
my $chn = InternalVal($name,"chanNo","");
if ($peerNames){ if ($peerNames){
$peerNames =~ s/_chn:01//g; # channel 01 is part of device $peerNames =~ s/_chn:01//g; # channel 01 is part of device
CUL_HM_UpdtReadSingle($hash,"peerList",$peerNames,0); CUL_HM_UpdtReadSingle($hash,"peerList",$peerNames,0);
$hash->{peerList} = $peerNames; $hash->{peerList} = $peerNames;
my $dHash = CUL_HM_getDeviceHash($hash);
my $st = AttrVal($dHash->{NAME},"subType","");
if ($st eq "virtual"){ if ($st eq "virtual"){
#if any of the peers is an SD we are team master #if any of the peers is an SD we are team master
my ($tMstr,$tcSim,$thSim) = (0,0,0); my ($tMstr,$tcSim,$thSim) = (0,0,0);
@ -4775,10 +4832,18 @@ sub CUL_HM_ID2PeerList ($$$) {
delete $hash->{helper}{fkt}; delete $hash->{helper}{fkt};
} }
} }
elsif( ($md =~ m/HM-CC-RT-DN/ && $chn=~ m/(02|05)/)
||($md eq "HM-TC-IT-WM-W-EU" && $chn=~ m/(07)/)){
CUL_HM_UpdtReadSingle($hash,"state","peered");
}
} }
else{ else{
delete $hash->{READINGS}{peerList}; delete $hash->{READINGS}{peerList};
delete $hash->{peerList}; delete $hash->{peerList};
if (($md =~ m/HM-CC-RT-DN/ && $chn=~ m/(02|03|05|06)/)
||($md eq "HM-TC-IT-WM-W-EU" && $chn=~ m/(03|06|07)/)){
CUL_HM_UpdtReadSingle($hash,"state","unpeered");
}
} }
} }
sub CUL_HM_peerChId($$$) {# in:<IDorName> <deviceID> <ioID>, out:channelID sub CUL_HM_peerChId($$$) {# in:<IDorName> <deviceID> <ioID>, out:channelID
@ -5875,7 +5940,7 @@ sub CUL_HM_qEntity($$){ # add to queue
.",".substr(CUL_HM_name2Id($name),6,2)); .",".substr(CUL_HM_name2Id($name),6,2));
} }
$q .= "Wu" if (CUL_HM_getRxType($defs{$name}) & 0x1C);#normal or wakeup q? $q .= "Wu" if (!(CUL_HM_getRxType($defs{$name}) & 0x03));#normal or wakeup q?
$q = $modules{CUL_HM}{helper}{$q}; $q = $modules{CUL_HM}{helper}{$q};
@{$q} = CUL_HM_noDup(@{$q},$devN); @{$q} = CUL_HM_noDup(@{$q},$devN);

View File

@ -498,7 +498,7 @@ my $K_actDetID = '000000'; # id of actionDetector
#SC - different literals #SC - different literals
msgScPosA =>{a=> 32.6,s=>0.2,l=>1,min=>0 ,max=>2 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"Message for position A",lit=>{noMsg=>0,closed=>1,open=>2}}, msgScPosA =>{a=> 32.6,s=>0.2,l=>1,min=>0 ,max=>2 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"Message for position A",lit=>{noMsg=>0,closed=>1,open=>2}},
msgScPosB =>{a=> 32.4,s=>0.2,l=>1,min=>0 ,max=>2 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"Message for position B",lit=>{noMsg=>0,closed=>1,open=>2}}, msgScPosB =>{a=> 32.4,s=>0.2,l=>1,min=>0 ,max=>2 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"Message for position B",lit=>{noMsg=>0,closed=>1,open=>2}},
# keymatic/winmatic secific register # keymatic/winmatic specific register
holdTime =>{a=> 20 ,s=>1, l=>1,min=>0 ,max=>8.16 ,c=>'' ,f=>31.25 ,u=>'s' ,d=>0,t=>"Holdtime for door opening"}, holdTime =>{a=> 20 ,s=>1, l=>1,min=>0 ,max=>8.16 ,c=>'' ,f=>31.25 ,u=>'s' ,d=>0,t=>"Holdtime for door opening"},
holdPWM =>{a=> 21 ,s=>1, l=>1,min=>0 ,max=>255 ,c=>'' ,f=>'' ,u=>'' ,d=>0,t=>"Holdtime pulse wide modulation"}, holdPWM =>{a=> 21 ,s=>1, l=>1,min=>0 ,max=>255 ,c=>'' ,f=>'' ,u=>'' ,d=>0,t=>"Holdtime pulse wide modulation"},
setupDir =>{a=> 22 ,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"Rotation direction for locking",lit=>{right=>0,left=>1}}, setupDir =>{a=> 22 ,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"Rotation direction for locking",lit=>{right=>0,left=>1}},
@ -739,7 +739,7 @@ my $K_actDetID = '000000'; # id of actionDetector
,ActionType =>1,OnTimeMode =>1,OffTimeMode =>1 ,ActionType =>1,OnTimeMode =>1,OffTimeMode =>1
,lgMultiExec =>1 ,lgMultiExec =>1
}, },
winMatic =>{ signal =>1,signalTone =>1,keypressSignal =>1}, winMatic =>{ intKeyVisib =>1,signal =>1,signalTone =>1,keypressSignal =>1},
keyMatic =>{ signal =>1,signalTone =>1,keypressSignal =>1 keyMatic =>{ signal =>1,signalTone =>1,keypressSignal =>1
,holdTime =>1,holdPWM =>1,setupDir =>1,setupPosition =>1 ,holdTime =>1,holdPWM =>1,setupDir =>1,setupPosition =>1
,angelOpen =>1,angelMax =>1,angelLocked =>1 ,angelOpen =>1,angelMax =>1,angelLocked =>1
@ -1057,6 +1057,7 @@ $culHmRegChan{"ROTO_ZEL-STG-RM-FWT03"}= $culHmRegChan{"HM-CC-TC03"};
%culHmGlobalGets = ( %culHmGlobalGets = (
param => "<param>", param => "<param>",
reg => "<addr> ... <list> <peer>", reg => "<addr> ... <list> <peer>",
regVal => "<addr> ... <list> <peer>",
regList => "", regList => "",
cmdList => "", cmdList => "",
saveConfig => "<filename> ...", saveConfig => "<filename> ...",
@ -1198,11 +1199,11 @@ $culHmSubTypeSets{motionDetector} = $culHmSubTypeSets{threeStateSensor};
"HM-CC-TC" =>{ burstXmit =>""}, "HM-CC-TC" =>{ burstXmit =>""},
"HM-CC-RT-DN" =>{ burstXmit =>"" "HM-CC-RT-DN" =>{ burstXmit =>""
,inhibit =>"[on|off]"}, ,inhibit =>"[on|off]"},
"HM-TC-IT-WM-W-EU" =>{ inhibit =>"[on|off]"},
"HM-SEC-SD" =>{ statusRequest =>""}, "HM-SEC-SD" =>{ statusRequest =>""},
); );
# clones- - - - - - - - - - - - - - - - - # clones- - - - - - - - - - - - - - - - -
$culHmModelSets{"HM-CC-RT-DN-BoM"} = $culHmModelSets{"HM-CC-RT-DN"}; $culHmModelSets{"HM-CC-RT-DN-BoM"} = $culHmModelSets{"HM-CC-RT-DN"};
$culHmModelSets{"HM-TC-IT-WM-W-EU"} = $culHmModelSets{"HM-CC-RT-DN"};
$culHmModelSets{"HM-RC-19-B"} = $culHmModelSets{"HM-RC-19"}; $culHmModelSets{"HM-RC-19-B"} = $culHmModelSets{"HM-RC-19"};
$culHmModelSets{"HM-RC-19-SW"} = $culHmModelSets{"HM-RC-19"}; $culHmModelSets{"HM-RC-19-SW"} = $culHmModelSets{"HM-RC-19"};
@ -1244,7 +1245,9 @@ $culHmModelSets{"ROTO_ZEL-STG-RM-FWT"} = $culHmModelSets{"HM-CC-TC"};
,on =>"" ,on =>""
,off =>"" ,off =>""
,toggle =>""}, ,toggle =>""},
"HM-CC-RT-DN00" =>{ sysTime =>""}, "HM-CC-RT-DN00" =>{ sysTime =>""
,fwUpdate =>"<filename>"
},
"HM-CC-RT-DN04" =>{ controlMode =>"[auto|manu|boost|day|night]" "HM-CC-RT-DN04" =>{ controlMode =>"[auto|manu|boost|day|night]"
,controlManu =>"[on|off|5.0..30.0]" ,controlManu =>"[on|off|5.0..30.0]"
,controlParty =>"<temp> <startDate> <startTime> <enddate> <endTime>" ,controlParty =>"<temp> <startDate> <startTime> <enddate> <endTime>"