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

ccu preparation

git-svn-id: https://svn.fhem.de/fhem/trunk@5678 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
martinp876 2014-04-27 16:40:09 +00:00
parent 1c0da3d1a6
commit e059af1a46
2 changed files with 76 additions and 32 deletions

View File

@ -19,6 +19,7 @@ my $culHmRegType =\%HMConfig::culHmRegType;
my $culHmRegModel =\%HMConfig::culHmRegModel; my $culHmRegModel =\%HMConfig::culHmRegModel;
my $culHmRegChan =\%HMConfig::culHmRegChan; my $culHmRegChan =\%HMConfig::culHmRegChan;
my $culHmGlobalGets =\%HMConfig::culHmGlobalGets; my $culHmGlobalGets =\%HMConfig::culHmGlobalGets;
my $culHmVrtGets =\%HMConfig::culHmVrtGets;
my $culHmSubTypeGets =\%HMConfig::culHmSubTypeGets; my $culHmSubTypeGets =\%HMConfig::culHmSubTypeGets;
my $culHmModelGets =\%HMConfig::culHmModelGets; my $culHmModelGets =\%HMConfig::culHmModelGets;
my $culHmGlobalSetsDevice =\%HMConfig::culHmGlobalSetsDevice; my $culHmGlobalSetsDevice =\%HMConfig::culHmGlobalSetsDevice;
@ -218,7 +219,7 @@ sub CUL_HM_updateConfig($){
$hash->{helper}{role}{vrt} = 1; $hash->{helper}{role}{vrt} = 1;
next; next;
} }
CUL_HM_ID2PeerList($name,"",1); # update peerList out of peerIDs CUL_HM_ID2PeerList($name,"",1); # update peerList out of peerIDs
my $chn = substr($id."00",6,2); my $chn = substr($id."00",6,2);
my $st = CUL_HM_Get($hash,$name,"param","subType"); my $st = CUL_HM_Get($hash,$name,"param","subType");
@ -317,7 +318,7 @@ sub CUL_HM_updateConfig($){
CUL_HM_ActAdd($id,$actCycle) if ($actCycle );#add 2 ActionDetect? CUL_HM_ActAdd($id,$actCycle) if ($actCycle );#add 2 ActionDetect?
# --- set default attrubutes if missing --- # --- set default attrubutes if missing ---
if ( $hash->{helper}{role}{dev} if ( $hash->{helper}{role}{dev}
&& AttrVal($name,"subType","") ne "virtual"){ && $st ne "virtual"){
$attr{$name}{expert} = AttrVal($name,"expert" ,"2_full"); $attr{$name}{expert} = AttrVal($name,"expert" ,"2_full");
$attr{$name}{autoReadReg}= AttrVal($name,"autoReadReg","4_reqStatus"); $attr{$name}{autoReadReg}= AttrVal($name,"autoReadReg","4_reqStatus");
} }
@ -338,11 +339,13 @@ sub CUL_HM_updateConfig($){
$webCmd = AttrVal($name,"webCmd",undef); $webCmd = AttrVal($name,"webCmd",undef);
if(!defined $webCmd){ if(!defined $webCmd){
if ($st eq "virtual" ){ if ($st eq "virtual" ){
if ($hash->{helper}{fkt} && $hash->{helper}{fkt} eq "sdLead") {$webCmd="teamCall:alarmOn:alarmOff";} if ($hash->{helper}{fkt} && $hash->{helper}{fkt} eq "sdLead") {$webCmd="teamCall:alarmOn:alarmOff";}
elsif($hash->{helper}{fkt} && $hash->{helper}{fkt} eq "vdCtrl") {$webCmd="valvePos";} elsif($hash->{helper}{fkt} && $hash->{helper}{fkt} eq "vdCtrl") {$webCmd="valvePos";}
elsif($hash->{helper}{fkt} && $hash->{helper}{fkt} eq "virtThSens"){$webCmd="virtTemp:virtHum";} elsif($hash->{helper}{fkt} && $hash->{helper}{fkt} eq "virtThSens"){$webCmd="virtTemp:virtHum";}
elsif($hash->{helper}{role}{chn}) {$webCmd="press short:press long";} elsif(!$hash->{helper}{role}{dev}) {$webCmd="press short:press long";}
else {$webCmd="virtual";} elsif($md =~ m/^virtual_/) {$webCmd="virtual";}
elsif($md eq "CCU-FHEM") {$webCmd="virtual:update";
CUL_HM_UpdtCentral($name);}
}elsif((!$hash->{helper}{role}{chn} && }elsif((!$hash->{helper}{role}{chn} &&
$md !~ m/(HM-CC-TC|ROTO_ZEL-STG-RM-FWT)/) $md !~ m/(HM-CC-TC|ROTO_ZEL-STG-RM-FWT)/)
@ -424,6 +427,7 @@ sub CUL_HM_Define($$) {##############################
delete $devHash->{helper}{role}{chn};#device no longer delete $devHash->{helper}{role}{chn};#device no longer
delete $devHash->{peerList}; delete $devHash->{peerList};
delete $devHash->{READINGS}{peerList}; delete $devHash->{READINGS}{peerList};
delete $attr{$devName}{peerIDs};
} }
} }
else{# define a device else{# define a device
@ -602,7 +606,7 @@ sub CUL_HM_Attr(@) {#################################
my $id = $hash->{DEF}; my $id = $hash->{DEF};
if ($id ne $K_actDetID && $attrVal){# if not action detector if ($id ne $K_actDetID && $attrVal){# if not action detector
my @ids = grep /......../,split(",",$attrVal); my @ids = grep /......../,split(",",$attrVal);
$attr{$name}{peerIDs} = join",",@ids; $attr{$name}{peerIDs} = join",",@ids if (@ids);
CUL_HM_ID2PeerList($name,"",1); # update peerList out of peerIDs CUL_HM_ID2PeerList($name,"",1); # update peerList out of peerIDs
} }
} }
@ -1390,7 +1394,7 @@ sub CUL_HM_Parse($$) {#########################################################
: int((($val-$lvlMin)/($lvlMax - $lvlMin))*200)/2; : int((($val-$lvlMin)/($lvlMax - $lvlMin))*200)/2;
# blind option: reverse Level Meaning 0 = open, 100 = closed # blind option: reverse Level Meaning 0 = open, 100 = closed
if ("levelInverse" eq AttrVal($name, "param", "")){ if ("levelInverse" eq AttrVal($name, "param", "")){;
$pVal = $val = 100-$val; $pVal = $val = 100-$val;
} }
$physLvl = ReadingsVal($name,"phyLevel",$val) $physLvl = ReadingsVal($name,"phyLevel",$val)
@ -1577,7 +1581,7 @@ sub CUL_HM_Parse($$) {#########################################################
push @evtEt,[$shash,1,"flags:". (($flag)?"none" :$flag )]; push @evtEt,[$shash,1,"flags:". (($flag)?"none" :$flag )];
} }
} }
elsif($st eq "virtual"){ #################################################### elsif($st eq "virtual" && $md =~ m/^virtual_/){ #############################
# possibly add code to count all acks that are paired. # possibly add code to count all acks that are paired.
if($mTp eq "02") {# this must be a reflection from what we sent, ignore if($mTp eq "02") {# this must be a reflection from what we sent, ignore
push @evtEt,[$shash,1,""]; push @evtEt,[$shash,1,""];
@ -1833,7 +1837,8 @@ sub CUL_HM_Parse($$) {#########################################################
#------------ parse if FHEM or virtual actor is destination --------------- #------------ parse if FHEM or virtual actor is destination ---------------
if(AttrVal($dname, "subType", "none") eq "virtual"){# see if need for answer if( AttrVal($dname, "subType", "none") eq "virtual"
&& AttrVal($dname, "model", "none") =~ m/^virtual_/){# see if need for answer
my $sendAck = 0; my $sendAck = 0;
if($mTp =~ m/^4/ && @mI > 1) { #Push Button event if($mTp =~ m/^4/ && @mI > 1) { #Push Button event
my ($recChn,$trigNo) = (hex($mI[0]),hex($mI[1]));# button number/event count my ($recChn,$trigNo) = (hex($mI[0]),hex($mI[1]));# button number/event count
@ -1896,12 +1901,12 @@ sub CUL_HM_Parse($$) {#########################################################
if($mTp =~ m/^4./ && #Push Button event if($mTp =~ m/^4./ && #Push Button event
($mFlgH & 0x20)){ #response required Flag ($mFlgH & 0x20)){ #response required Flag
# fhem CUL shall ack a button press # fhem CUL shall ack a button press
# if($mFlgH & 0x02){ if ($md =~ m/HM-SEC-SC/){
push @ack,$shash,$mNo."8002".$dst.$src."0101".((hex($mI[0])&1)?"C8":"00")."00";
}
else{
push @ack,$shash,$mNo."8002$dst$src"."00"; push @ack,$shash,$mNo."8002$dst$src"."00";
# } }
# else{
# push @ack,$shash,$mNo."8002".$dst.$src."0101".((hex($mI[0])&1)?"C8":"00")."00";
# }
Log3 $name,5,"CUL_HM $name prep ACK for $mI[0]"; Log3 $name,5,"CUL_HM $name prep ACK for $mI[0]";
} }
} }
@ -2478,16 +2483,19 @@ sub CUL_HM_Get($@) {#+++++++++++++++++ get command+++++++++++++++++++++++++++++
my $fkt = $hash->{helper}{fkt}?$hash->{helper}{fkt}:""; my $fkt = $hash->{helper}{fkt}?$hash->{helper}{fkt}:"";
my $h = undef; my $h = undef;
$h = $culHmGlobalGets->{$cmd}; $h = $culHmGlobalGets->{$cmd} if(!$roleV);
$h = $culHmVrtGets->{$cmd} if($roleV);
$h = $culHmSubTypeGets->{$st}{$cmd} if(!defined($h) && $culHmSubTypeGets->{$st}); $h = $culHmSubTypeGets->{$st}{$cmd} if(!defined($h) && $culHmSubTypeGets->{$st});
$h = $culHmModelGets->{$md}{$cmd} if(!defined($h) && $culHmModelGets->{$md}); $h = $culHmModelGets->{$md}{$cmd} if(!defined($h) && $culHmModelGets->{$md});
my @h; my @h;
@h = split(" ", $h) if($h); @h = split(" ", $h) if($h);
if(!defined($h)) { if(!defined($h)) {
my @arr = keys %{$culHmGlobalGets}; my @arr;
push @arr, keys %{$culHmGlobalGets} if(!$roleV);
push @arr, keys %{$culHmVrtGets} if($roleV);
push @arr, keys %{$culHmSubTypeGets->{$st}} if($culHmSubTypeGets->{$st}); push @arr, keys %{$culHmSubTypeGets->{$st}} if($culHmSubTypeGets->{$st});
push @arr, keys %{$culHmModelGets->{$md}} if($culHmModelGets->{$md}); push @arr, keys %{$culHmModelGets->{$md}} if($culHmModelGets->{$md});
my $usg = "Unknown argument $cmd, choose one of ".join(" ",sort @arr); my $usg = "Unknown argument $cmd, choose one of ".join(" ",sort @arr);
return $usg; return $usg;
@ -2737,7 +2745,7 @@ sub CUL_HM_Set($@) {#+++++++++++++++++ set command+++++++++++++++++++++++++++++
} }
my $usg = "Unknown argument $cmd, choose one of ".join(" ",sort @arr1); my $usg = "Unknown argument $cmd, choose one of ".join(" ",sort @arr1);
$usg =~ s/ pct/ pct:slider,0,1,100/; $usg =~ s/ pct/ pct:slider,0,1,100/;
$usg =~ s/ virtual/ virtual:slider,1,1,40/; $usg =~ s/ virtual/ virtual:slider,1,1,50/;
return $usg; return $usg;
} }
@ -3678,15 +3686,17 @@ sub CUL_HM_Set($@) {#+++++++++++++++++ set command+++++++++++++++++++++++++++++
CUL_HM_PushCmdStack($hash, $msg); CUL_HM_PushCmdStack($hash, $msg);
CUL_HM_parseSDteam("41",$dst,$dst,"01".$p); CUL_HM_parseSDteam("41",$dst,$dst,"01".$p);
} }
elsif($cmd eq "virtual") { ################################################## elsif($cmd eq "virtual") { ##################################################
$state = ""; $state = "";
my (undef,undef,$maxBtnNo) = @a; my (undef,undef,$maxBtnNo) = @a;
return "please give a number between 1 and 255" return "please give a number between 1 and 50"
if ($maxBtnNo < 1 ||$maxBtnNo > 255);# arbitrary - 255 should be max if ($maxBtnNo < 1 ||$maxBtnNo > 50);# arbitrary - 255 should be max
return $name." already defines as ".$attr{$name}{subType} return $name." already defines as ".$attr{$name}{subType}
if ($attr{$name}{subType} && $attr{$name}{subType} ne "virtual"); if ($attr{$name}{subType} && $attr{$name}{subType} ne "virtual");
$attr{$name}{subType} = "virtual"; $attr{$name}{subType} = "virtual";
$attr{$name}{model} = "virtual_".$maxBtnNo; $attr{$name}{model} = "virtual_".$maxBtnNo
if (!$attr{$name}{model} ||$attr{$name}{model} =~ m/^virtual_/);
my $devId = $hash->{DEF}; my $devId = $hash->{DEF};
for (my $btn=1;$btn <= $maxBtnNo;$btn++){ for (my $btn=1;$btn <= $maxBtnNo;$btn++){
my $chnName = $name."_Btn".$btn; my $chnName = $name."_Btn".$btn;
@ -3700,7 +3710,13 @@ sub CUL_HM_Set($@) {#+++++++++++++++++ set command+++++++++++++++++++++++++++++
CommandDelete(undef,$hash->{$channel}) CommandDelete(undef,$hash->{$channel})
if (hex($chNo) > $maxBtnNo); if (hex($chNo) > $maxBtnNo);
} }
CUL_HM_UpdtCentral($name) if ($md eq "CCU_FHEM");
} }
elsif($cmd eq "update") { ##################################################
$state = "";
CUL_HM_UpdtCentral($name);
}
elsif($cmd eq "press") { #################################################### elsif($cmd eq "press") { ####################################################
my $mode = 0; my $mode = 0;
if ($a[2]){ if ($a[2]){
@ -4975,11 +4991,11 @@ sub CUL_HM_protState($$){
sub CUL_HM_ID2PeerList ($$$) { sub CUL_HM_ID2PeerList ($$$) {
my($name,$peerID,$set) = @_; my($name,$peerID,$set) = @_;
my $peerIDs = AttrVal($name,"peerIDs",""); my $peerIDs = AttrVal($name,"peerIDs","");
return if (!$peerID && !$peerIDs);
my $hash = $defs{$name}; my $hash = $defs{$name};
$peerIDs =~ s/$peerID//g; #avoid duplicate, support unset $peerIDs =~ s/$peerID//g; #avoid duplicate, support unset
$peerID =~ s/^000000../00000000/; #correct end detector $peerID =~ s/^000000../00000000/; #correct end detector
$peerIDs.= $peerID."," if($set); $peerIDs.= $peerID."," if($set);
my %tmpHash = map { $_ => 1 } split(",",$peerIDs);#remove duplicates my %tmpHash = map { $_ => 1 } split(",",$peerIDs);#remove duplicates
$peerIDs = ""; #clear list $peerIDs = ""; #clear list
my $peerNames = ""; #prepare names my $peerNames = ""; #prepare names
@ -6129,6 +6145,25 @@ sub CUL_HM_storeRssi(@){
if (AttrVal($name,"rssiLog",undef)); if (AttrVal($name,"rssiLog",undef));
return ; return ;
} }
sub CUL_HM_UpdtCentral($){
my $name = shift;
my $id = CUL_HM_name2Id($name);
my @myIos;
foreach (CUL_HM_noDup(grep !/^$/,map{AttrVal($_,"IODev","")}keys %defs)){
push @myIos,$_ if (CUL_HM_Id($defs{$_} eq $defs{$name}{DEF}));
}
$defs{$name}{assignedIOs} = join(",",@myIos);
foreach my $ccuBId (CUL_HM_noDup(grep /$id/ ,map{split ",",AttrVal($_,"peerIDs","")}keys %defs)){
my $btnS = substr($ccuBId,6,2);
my $btn = hex($btnS) + 0;
next if (!$btn);
CommandDefine(undef,$name."_Btn$btn CUL_HM $ccuBId")
if (!$modules{CUL_HM}{defptr}{$ccuBId});
foreach my $pn (grep !/^$/,map{$_ if (AttrVal($_,"peerIDs","") =~ m/$id$btnS/)}keys %defs){
CUL_HM_ID2PeerList ($name."_Btn$btn",CUL_HM_name2Id($pn),1);
}
}
}
sub CUL_HM_stateUpdatDly($$){#delayed queue of status-request sub CUL_HM_stateUpdatDly($$){#delayed queue of status-request
my ($name,$time) = @_; my ($name,$time) = @_;

View File

@ -18,6 +18,7 @@ use vars qw(%culHmRegType);
use vars qw(%culHmRegModel); use vars qw(%culHmRegModel);
use vars qw(%culHmRegChan); use vars qw(%culHmRegChan);
use vars qw(%culHmGlobalGets); use vars qw(%culHmGlobalGets);
use vars qw(%culHmVrtGets);
use vars qw(%culHmSubTypeGets); use vars qw(%culHmSubTypeGets);
use vars qw(%culHmModelGets); use vars qw(%culHmModelGets);
use vars qw(%culHmGlobalSetsDevice); use vars qw(%culHmGlobalSetsDevice);
@ -182,7 +183,7 @@ my $K_actDetID = '000000'; # id of actionDetector
"006D" => {name=>"HM-OU-LED16" ,st=>'outputUnit' ,cyc=>'' ,rxt=>'' ,lst=>'p' ,chn=>"Led:1:16",}, "006D" => {name=>"HM-OU-LED16" ,st=>'outputUnit' ,cyc=>'' ,rxt=>'' ,lst=>'p' ,chn=>"Led:1:16",},
"006E" => {name=>"HM-LC-Dim1L-CV-644" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:1,Sw1_V:2:3",}, "006E" => {name=>"HM-LC-Dim1L-CV-644" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:1,Sw1_V:2:3",},
"006F" => {name=>"HM-LC-Dim1L-Pl-644" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:1,Sw1_V:2:3",}, "006F" => {name=>"HM-LC-Dim1L-Pl-644" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:1,Sw1_V:2:3",},
"0070" => {name=>"HM-LC-Dim2L-SM" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:2,Sw1_V:3:4,Sw2_V:5:6",},# "0070" => {name=>"HM-LC-Dim2L-SM-644" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:2,Sw1_V:3:4,Sw2_V:5:6",},#
"0071" => {name=>"HM-LC-Dim1T-Pl-644" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:1,Sw1_V:2:3",}, "0071" => {name=>"HM-LC-Dim1T-Pl-644" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:1,Sw1_V:2:3",},
"0072" => {name=>"HM-LC-Dim1T-CV-644" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:1,Sw1_V:2:3",}, "0072" => {name=>"HM-LC-Dim1T-CV-644" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:1,Sw1_V:2:3",},
"0073" => {name=>"HM-LC-Dim1T-FM-644" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:1,Sw1_V:2:3",}, "0073" => {name=>"HM-LC-Dim1T-FM-644" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:1,Sw1_V:2:3",},
@ -270,6 +271,7 @@ my $K_actDetID = '000000'; # id of actionDetector
"00D2" => {name=>"HM-LC-Bl1-FM-2" ,st=>'blindActuator' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}, # radio-controlled blind actuator 1-channel (flush-mount) "00D2" => {name=>"HM-LC-Bl1-FM-2" ,st=>'blindActuator' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}, # radio-controlled blind actuator 1-channel (flush-mount)
"8001" => {name=>"PS-switch" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:4",}, "8001" => {name=>"PS-switch" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:4",},
"8002" => {name=>"PS-Th-Sens" ,st=>'THSensor' ,cyc=>'' ,rxt=>'' ,lst=>'1,4' ,chn=>"Sen:1:4",}, "8002" => {name=>"PS-Th-Sens" ,st=>'THSensor' ,cyc=>'' ,rxt=>'' ,lst=>'1,4' ,chn=>"Sen:1:4",},
"FFF0" => {name=>"CCU-FHEM" ,st=>'virtual' ,cyc=>'' ,rxt=>'' ,lst=>'' ,chn=>"Btn:1:50",},
# "HM-LGW-O-TW-W-EU" #Funk LAN Gateway # "HM-LGW-O-TW-W-EU" #Funk LAN Gateway
#################open:--------------------------- #################open:---------------------------
@ -420,7 +422,7 @@ my $K_actDetID = '000000'; # id of actionDetector
energyOpt =>{a=> 8.0,s=>1.0,l=>0,min=>0 ,max=>127 ,c=>'' ,f=>2 ,u=>'s' ,d=>1,t=>"energy Option: Duration of ilumination"}, energyOpt =>{a=> 8.0,s=>1.0,l=>0,min=>0 ,max=>127 ,c=>'' ,f=>2 ,u=>'s' ,d=>1,t=>"energy Option: Duration of ilumination"},
# sec_mdir # sec_mdir
cyclicInfoMsg =>{a=> 9.0,s=>1.0,l=>0,min=>0 ,max=>1 ,c=>'lit' ,f=>'' ,u=>'' ,d=>1,t=>"cyclic message" ,lit=>{off=>0,on=>200}}, cyclicInfoMsg =>{a=> 9.0,s=>1.0,l=>0,min=>0 ,max=>1 ,c=>'lit' ,f=>'' ,u=>'' ,d=>1,t=>"cyclic message" ,lit=>{off=>0,on=>200}},
sabotageMsg =>{a=> 16.0,s=>1.0,l=>0,min=>0 ,max=>1 ,c=>'lit' ,f=>'' ,u=>'' ,d=>1,t=>"enable sabotage message" ,lit=>{off=>0,on=>200}},# changed to 200 sabotageMsg =>{a=> 16.0,s=>1.0,l=>0,min=>0 ,max=>1 ,c=>'lit' ,f=>'' ,u=>'' ,d=>1,t=>"enable sabotage message" ,lit=>{off=>0,on=>1}},# sc needs 1 - others?
cyclicInfoMsgDis=>{a=> 17.0,s=>1.0,l=>0,min=>0 ,max=>255 ,c=>'' ,f=>'' ,u=>'' ,d=>1,t=>"cyclic message"}, cyclicInfoMsgDis=>{a=> 17.0,s=>1.0,l=>0,min=>0 ,max=>255 ,c=>'' ,f=>'' ,u=>'' ,d=>1,t=>"cyclic message"},
lowBatLimit =>{a=> 18.0,s=>1.0,l=>0,min=>10 ,max=>12 ,c=>'' ,f=>10 ,u=>'V' ,d=>1,t=>"low batterie limit, step .1V"}, lowBatLimit =>{a=> 18.0,s=>1.0,l=>0,min=>10 ,max=>12 ,c=>'' ,f=>10 ,u=>'V' ,d=>1,t=>"low batterie limit, step .1V"},
lowBatLimitBA =>{a=> 18.0,s=>1.0,l=>0,min=>5 ,max=>15 ,c=>'' ,f=>10 ,u=>'V' ,d=>0,t=>"low batterie limit, step .1V"}, lowBatLimitBA =>{a=> 18.0,s=>1.0,l=>0,min=>5 ,max=>15 ,c=>'' ,f=>10 ,u=>'V' ,d=>0,t=>"low batterie limit, step .1V"},
@ -896,10 +898,10 @@ $culHmRegModel{"KS888"} = $culHmRegModel{"HM-WDS100-C6-O"};
$culHmRegModel{"HM-SEC-SC-2"} = $culHmRegModel{"HM-SEC-SC"}; $culHmRegModel{"HM-SEC-SC-2"} = $culHmRegModel{"HM-SEC-SC"};
$culHmRegModel{"HM-LC-Dim1L-Pl-2"} = $culHmRegModel{"HM-LC-Dim1L-Pl"};#rf_d $culHmRegModel{"HM-LC-Dim1L-Pl-2"} = $culHmRegModel{"HM-LC-Dim1L-Pl"};#rf_d
$culHmRegModel{"HM-LC-Dim1L-CV"} = $culHmRegModel{"HM-LC-Dim1L-Pl"}; $culHmRegModel{"HM-LC-DIM1L-CV"} = $culHmRegModel{"HM-LC-Dim1L-Pl"};
$culHmRegModel{"Schueco-263-132"} = $culHmRegModel{"HM-LC-Dim1L-Pl"}; $culHmRegModel{"Schueco-263-132"} = $culHmRegModel{"HM-LC-Dim1L-Pl"};
$culHmRegModel{"HM-LC-Dim2L-CV"} = $culHmRegModel{"HM-LC-Dim1L-Pl"}; $culHmRegModel{"HM-LC-DIM2L-CV"} = $culHmRegModel{"HM-LC-Dim1L-Pl"};
$culHmRegModel{"HM-LC-Dim2L-SM"} = $culHmRegModel{"HM-LC-Dim1L-Pl"}; $culHmRegModel{"HM-LC-DIM2L-SM"} = $culHmRegModel{"HM-LC-Dim1L-Pl"};
$culHmRegModel{"HM-LC-Dim1L-Pl-644"} = $culHmRegModel{"HM-LC-Dim1L-CV-2"};#RF_DIM_1l_644 $culHmRegModel{"HM-LC-Dim1L-Pl-644"} = $culHmRegModel{"HM-LC-Dim1L-CV-2"};#RF_DIM_1l_644
$culHmRegModel{"HM-LC-Dim1L-CV-644"} = $culHmRegModel{"HM-LC-Dim1L-CV-2"}; $culHmRegModel{"HM-LC-Dim1L-CV-644"} = $culHmRegModel{"HM-LC-Dim1L-CV-2"};
@ -1234,6 +1236,11 @@ $culHmRegChan{"ROTO_ZEL-STG-RM-FWT03"}= $culHmRegChan{"HM-CC-TC03"};
cmdList => "", cmdList => "",
saveConfig => "<filename> ...", saveConfig => "<filename> ...",
); );
%culHmVrtGets = (
param => "<param>",
cmdList => "",
saveConfig => "<filename> ...",
);
%culHmSubTypeGets = ( %culHmSubTypeGets = (
none4Type =>{ "test"=>"" }, none4Type =>{ "test"=>"" },
); );
@ -1251,8 +1258,8 @@ $culHmRegChan{"ROTO_ZEL-STG-RM-FWT03"}= $culHmRegChan{"HM-CC-TC03"};
); );
%culHmGlobalSetsVrtDev = (# virtuals and devices without subtype %culHmGlobalSetsVrtDev = (# virtuals and devices without subtype
raw => "data ...", raw => "data ...",
virtual =>"<noButtons>", virtual => "<noButtons>",
clear => "[readings|register|rssi|msgEvents]", clear => "[readings|rssi|msgEvents]",
); );
%culHmGlobalSetsDevice = (# all devices but virtuals %culHmGlobalSetsDevice = (# all devices but virtuals
raw => "data ...", raw => "data ...",
@ -1463,6 +1470,8 @@ $culHmModelSets{"HM-Sen-Wa-Od"} = $culHmModelSets{"HM-SEC-SD"};
,press =>"[long|short] [<peer>] ..." ,press =>"[long|short] [<peer>] ..."
,inhibit =>"[on|off]" ,inhibit =>"[on|off]"
,statusRequest =>""}, ,statusRequest =>""},
"CCU-FHEM00" =>{ update =>""},
); );
# clones- - - - - - - - - - - - - - - - - # clones- - - - - - - - - - - - - - - - -
#$culHmChanSets{"HM-OU-CF-PL02"} = $culHmChanSets{"HM-OU-CF-PL01"}; #$culHmChanSets{"HM-OU-CF-PL02"} = $culHmChanSets{"HM-OU-CF-PL01"};