2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-10 09:16:53 +00:00

10_CUL_HM:mdir wm55 improve

git-svn-id: https://svn.fhem.de/fhem/trunk@8388 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
martinp876 2015-04-07 10:18:50 +00:00
parent 7fae1953ad
commit dafcff0d61
2 changed files with 248 additions and 245 deletions

View File

@ -230,8 +230,8 @@ sub CUL_HM_updateConfig($){
delete $attr{$name}{$_} delete $attr{$name}{$_}
foreach ( "autoReadReg","actCycle","actStatus","burstAccess","serialNr" foreach ( "autoReadReg","actCycle","actStatus","burstAccess","serialNr"
,"IODev","IOList","IOgrp","hmProtocolEvents","rssiLog"); ,"IODev","IOList","IOgrp","hmProtocolEvents","rssiLog");
$hash->{helper}{role}{vrt} = 1; #$hash->{helper}{role}{vrt} = 1;
$hash->{helper}{role}{dev} = 1; #$hash->{helper}{role}{dev} = 1;
next; next;
} }
CUL_HM_ID2PeerList($name,"",1); # update peerList out of peerIDs CUL_HM_ID2PeerList($name,"",1); # update peerList out of peerIDs
@ -3014,7 +3014,7 @@ sub CUL_HM_Get($@) {#+++++++++++++++++ get command+++++++++++++++++++++++++++++
my ($dst,$chn) = unpack 'A6A2',$hash->{DEF}.($roleC?'01':'00'); my ($dst,$chn) = unpack 'A6A2',$hash->{DEF}.($roleC?'01':'00');
my $h = undef; my $h = undef;
$h = $culHmGlobalGets->{$cmd} if(!$roleV); $h = $culHmGlobalGets->{$cmd} if(!$roleV &&($roleD || $roleC));
$h = $culHmVrtGets->{$cmd} if(!defined($h) && $roleV); $h = $culHmVrtGets->{$cmd} if(!defined($h) && $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});
@ -3023,10 +3023,10 @@ sub CUL_HM_Get($@) {#+++++++++++++++++ get command+++++++++++++++++++++++++++++
if(!defined($h)) { if(!defined($h)) {
my @arr = (); my @arr = ();
if(!$roleV) {foreach(keys %{$culHmGlobalGets} ){push @arr,"$_:".$culHmGlobalGets->{$_} }}; if(!$roleV &&($roleD || $roleC)){foreach(keys %{$culHmGlobalGets} ){push @arr,"$_:".$culHmGlobalGets->{$_} }};
if($roleV) {foreach(keys %{$culHmVrtGets} ){push @arr,"$_:".$culHmVrtGets->{$_} }}; if($roleV) {foreach(keys %{$culHmVrtGets} ){push @arr,"$_:".$culHmVrtGets->{$_} }};
if($culHmSubTypeGets->{$st}){foreach(keys %{$culHmSubTypeGets->{$st}}){push @arr,"$_:".${$culHmSubTypeGets->{$st}}{$_} }}; if($culHmSubTypeGets->{$st}) {foreach(keys %{$culHmSubTypeGets->{$st}}){push @arr,"$_:".${$culHmSubTypeGets->{$st}}{$_} }};
if($culHmModelGets->{$md}) {foreach(keys %{$culHmModelGets->{$md}} ){push @arr,"$_:".${$culHmModelGets->{$md}}{$_} }}; if($culHmModelGets->{$md}) {foreach(keys %{$culHmModelGets->{$md}} ){push @arr,"$_:".${$culHmModelGets->{$md}}{$_} }};
foreach(@arr){ foreach(@arr){
my ($cmd,$val) = split(":",$_,2); my ($cmd,$val) = split(":",$_,2);
@ -3281,7 +3281,7 @@ sub CUL_HM_Set($@) {#+++++++++++++++++ set command+++++++++++++++++++++++++++++
my $fkt = $hash->{helper}{fkt}?$hash->{helper}{fkt}:""; my $fkt = $hash->{helper}{fkt}?$hash->{helper}{fkt}:"";
my $h = undef; my $h = undef;
$h = $culHmGlobalSets->{$cmd} if( !$roleV); $h = $culHmGlobalSets->{$cmd} if( !$roleV &&($roleD || $roleC));
$h = $culHmGlobalSetsVrtDev->{$cmd} if(!defined($h) &&( $roleV || !$st) && $roleD); $h = $culHmGlobalSetsVrtDev->{$cmd} if(!defined($h) &&( $roleV || !$st) && $roleD);
$h = $culHmGlobalSetsDevice->{$cmd} if(!defined($h) && !$roleV && $roleD); $h = $culHmGlobalSetsDevice->{$cmd} if(!defined($h) && !$roleV && $roleD);
$h = $culHmSubTypeDevSets->{$st}{$cmd}if(!defined($h) && !$roleV && $roleD); $h = $culHmSubTypeDevSets->{$st}{$cmd}if(!defined($h) && !$roleV && $roleD);
@ -3299,13 +3299,13 @@ sub CUL_HM_Set($@) {#+++++++++++++++++ set command+++++++++++++++++++++++++++++
if(!defined($h) && defined($culHmSubTypeSets->{$st}{pct}) && $cmd =~ m/^\d+/) { if(!defined($h) && defined($culHmSubTypeSets->{$st}{pct}) && $cmd =~ m/^\d+/) {
splice @a, 1, 0,"pct";#insert the actual command splice @a, 1, 0,"pct";#insert the actual command
} }
elsif(!defined($h)) { elsif(!defined($h)) { ### unknown - return the commandlist
my @arr1 = (); my @arr1 = ();
if( $st ne "virtual") {foreach(keys %{$culHmGlobalSets} ){push @arr1,"$_:".$culHmGlobalSets->{$_} }}; if( !$roleV &&($roleD || $roleC) ){foreach(keys %{$culHmGlobalSets} ){push @arr1,"$_:".$culHmGlobalSets->{$_} }};
if(($st eq "virtual"||!$st) && $roleD){foreach(keys %{$culHmGlobalSetsVrtDev} ){push @arr1,"$_:".$culHmGlobalSetsVrtDev->{$_} }}; if(( $roleV||!$st) && $roleD){foreach(keys %{$culHmGlobalSetsVrtDev} ){push @arr1,"$_:".$culHmGlobalSetsVrtDev->{$_} }};
if( $st ne "virtual" && $roleD){foreach(keys %{$culHmGlobalSetsDevice} ){push @arr1,"$_:".$culHmGlobalSetsDevice->{$_} }}; if( !$roleV && $roleD){foreach(keys %{$culHmGlobalSetsDevice} ){push @arr1,"$_:".$culHmGlobalSetsDevice->{$_} }};
if( $st ne "virtual" && $roleD){foreach(keys %{$culHmSubTypeDevSets->{$st}}){push @arr1,"$_:".${$culHmSubTypeDevSets->{$st}}{$_}}}; if( !$roleV && $roleD){foreach(keys %{$culHmSubTypeDevSets->{$st}}){push @arr1,"$_:".${$culHmSubTypeDevSets->{$st}}{$_}}};
if( $st ne "virtual" && $roleC){foreach(keys %{$culHmGlobalSetsChn} ){push @arr1,"$_:".$culHmGlobalSetsChn->{$_} }}; if( !$roleV && $roleC){foreach(keys %{$culHmGlobalSetsChn} ){push @arr1,"$_:".$culHmGlobalSetsChn->{$_} }};
if( $culHmSubTypeSets->{$st} && $roleC){foreach(keys %{$culHmSubTypeSets->{$st}} ){push @arr1,"$_:".${$culHmSubTypeSets->{$st}}{$_} }}; if( $culHmSubTypeSets->{$st} && $roleC){foreach(keys %{$culHmSubTypeSets->{$st}} ){push @arr1,"$_:".${$culHmSubTypeSets->{$st}}{$_} }};
if( $culHmModelSets->{$md}) {foreach(keys %{$culHmModelSets->{$md}} ){push @arr1,"$_:".${$culHmModelSets->{$md}}{$_} }}; if( $culHmModelSets->{$md}) {foreach(keys %{$culHmModelSets->{$md}} ){push @arr1,"$_:".${$culHmModelSets->{$md}}{$_} }};
if( $culHmChanSets->{$md."00"} && $roleD){foreach(keys %{$culHmChanSets->{$md."00"}} ){push @arr1,"$_:".${$culHmChanSets->{$md."00"}}{$_} }}; if( $culHmChanSets->{$md."00"} && $roleD){foreach(keys %{$culHmChanSets->{$md."00"}} ){push @arr1,"$_:".${$culHmChanSets->{$md."00"}}{$_} }};
@ -8667,18 +8667,19 @@ sub CUL_HM_tempListTmpl(@) { ##################################################
restore will not delete any peered channels, it will just add peer channels.<br> restore will not delete any peered channels, it will just add peer channels.<br>
</li> </li>
<li><B>listDevice</B><br> <li><B>listDevice</B><br>
<li>when used with ccu it returns a list of Devices using the ccu service to assign an IO.<br> <ul>
</li> <li>when used with ccu it returns a list of Devices using the ccu service to assign an IO.<br>
<li>when used with ActionDetector user will get a comma separated list of entities being assigned to the action detector<br> </li>
get ActionDetector listDevice # returns all assigned entities<br> <li>when used with ActionDetector user will get a comma separated list of entities being assigned to the action detector<br>
get ActionDetector listDevice notActive# returns entities which habe not status alive<br> get ActionDetector listDevice # returns all assigned entities<br>
get ActionDetector listDevice alive # returns entities with status alive<br> get ActionDetector listDevice notActive# returns entities which habe not status alive<br>
get ActionDetector listDevice unknown # returns entities with status unknown<br> get ActionDetector listDevice alive # returns entities with status alive<br>
get ActionDetector listDevice dead # returns entities with status dead<br> get ActionDetector listDevice unknown # returns entities with status unknown<br>
</li> get ActionDetector listDevice dead # returns entities with status dead<br>
</li> </li>
<br> </ul>
</ul> </li>
</ul><br>
<a name="CUL_HMattr"></a><b>Attributes</b> <a name="CUL_HMattr"></a><b>Attributes</b>
<ul> <ul>
@ -8691,12 +8692,12 @@ sub CUL_HM_tempListTmpl(@) { ##################################################
<li><a name="CUL_HMaesCommReq">aesCommReq</a> <li><a name="CUL_HMaesCommReq">aesCommReq</a>
if set HMLAN/USB is forced to request AES signature before sending ACK to the device.<br> if set HMLAN/USB is forced to request AES signature before sending ACK to the device.<br>
This funktion strictly works with HMLAN/USB - it doesn't work for CUL type IOs.<br> This funktion strictly works with HMLAN/USB - it doesn't work for CUL type IOs.<br>
</li> </li>
<li><a name="#CUL_HMactAutoTry">actAutoTry</a> <li><a name="#CUL_HMactAutoTry">actAutoTry</a>
actAutoTry 0_off,1_on<br> actAutoTry 0_off,1_on<br>
setting this option enables Action Detector to send a statusrequest in case of a device is going to be marked dead. setting this option enables Action Detector to send a statusrequest in case of a device is going to be marked dead.
The attribut may be useful in case a device is being checked that does not send messages regularely - e.g. an ordinary switch. The attribut may be useful in case a device is being checked that does not send messages regularely - e.g. an ordinary switch.
</li> </li>
<li><a name="#CUL_HMactCycle">actCycle</a> <li><a name="#CUL_HMactCycle">actCycle</a>
actCycle &lt;[hhh:mm]|off&gt;<br> actCycle &lt;[hhh:mm]|off&gt;<br>
Supports 'alive' or better 'not alive' detection for devices. [hhh:mm] is the maximum silent time for the device. Supports 'alive' or better 'not alive' detection for devices. [hhh:mm] is the maximum silent time for the device.
@ -8713,7 +8714,7 @@ sub CUL_HM_tempListTmpl(@) { ##################################################
</ul> </ul>
The overall function can be viewed checking out the "ActionDetector" entity. The status of all entities is present in the READING section.<br> The overall function can be viewed checking out the "ActionDetector" entity. The status of all entities is present in the READING section.<br>
Note: This function can be enabled for devices with non-cyclic messages as well. It is up to the user to enter a reasonable cycletime. Note: This function can be enabled for devices with non-cyclic messages as well. It is up to the user to enter a reasonable cycletime.
</li> </li>
<li><a name="#CUL_HMautoReadReg">autoReadReg</a><br> <li><a name="#CUL_HMautoReadReg">autoReadReg</a><br>
'0' autoReadReg will be ignored.<br> '0' autoReadReg will be ignored.<br>
'1' will execute a getConfig for the device automatically after each reboot of FHEM. <br> '1' will execute a getConfig for the device automatically after each reboot of FHEM. <br>
@ -8727,14 +8728,14 @@ sub CUL_HM_tempListTmpl(@) { ##################################################
of the readings and the display will be delayed depending on the size of the database.<br> of the readings and the display will be delayed depending on the size of the database.<br>
Recommendations and constrains upon usage:<br> Recommendations and constrains upon usage:<br>
<ul> <ul>
use this attribute on the device or channel 01. Do not use it separate on each channel use this attribute on the device or channel 01. Do not use it separate on each channel
of a multi-channel device to avoid duplicate execution<br> of a multi-channel device to avoid duplicate execution<br>
usage on devices which only react to 'config' mode is not recommended since executen will usage on devices which only react to 'config' mode is not recommended since executen will
not start until config is triggered by the user<br> not start until config is triggered by the user<br>
usage on devices which support wakeup-mode is usefull. But consider that execution is delayed usage on devices which support wakeup-mode is usefull. But consider that execution is delayed
until the device "wakes up".<br> until the device "wakes up".<br>
</ul> </ul>
</li> </li>
<li><a name="#CUL_HMburstAccess">burstAccess</a><br> <li><a name="#CUL_HMburstAccess">burstAccess</a><br>
can be set for the device entity if the model allowes conditionalBurst. can be set for the device entity if the model allowes conditionalBurst.
The attribut will switch off burst operations (0_off) which causes less message load The attribut will switch off burst operations (0_off) which causes less message load
@ -9944,17 +9945,18 @@ sub CUL_HM_tempListTmpl(@) { ##################################################
"restore" l&ouml;scht keine verkn&uuml;pften Kan&auml;le, es f&uuml;gt nur neue Peers hinzu.<br> "restore" l&ouml;scht keine verkn&uuml;pften Kan&auml;le, es f&uuml;gt nur neue Peers hinzu.<br>
</li> </li>
<li><B>listDevice</B><br> <li><B>listDevice</B><br>
<li>bei einer CCU gibt es eine Liste der Devices, welche den ccu service zum zuweisen der IOs zurück<br> <ul>
</li> <li>bei einer CCU gibt es eine Liste der Devices, welche den ccu service zum zuweisen der IOs zurück<br>
<li>beim ActionDetector wird eine Komma geteilte Liste der Entities zurückgegeben<br> </li>
get ActionDetector listDevice # returns alle assigned entities<br> <li>beim ActionDetector wird eine Komma geteilte Liste der Entities zurückgegeben<br>
get ActionDetector listDevice notActive# returns entities ohne status alive<br> get ActionDetector listDevice # returns alle assigned entities<br>
get ActionDetector listDevice alive # returns entities mit status alive<br> get ActionDetector listDevice notActive# returns entities ohne status alive<br>
get ActionDetector listDevice unknown # returns entities mit status unknown<br> get ActionDetector listDevice alive # returns entities mit status alive<br>
get ActionDetector listDevice dead # returns entities mit status dead<br> get ActionDetector listDevice unknown # returns entities mit status unknown<br>
</li> get ActionDetector listDevice dead # returns entities mit status dead<br>
</li> </li>
</ul>
</li>
</ul><br> </ul><br>
<a name="CUL_HMattr"></a><b>Attribute</b> <a name="CUL_HMattr"></a><b>Attribute</b>
<ul> <ul>

View File

@ -302,9 +302,6 @@ my $K_actDetID = '000000'; # id of actionDetector
# "HM-LGW-O-TW-W-EU" #Funk LAN Gateway # "HM-LGW-O-TW-W-EU" #Funk LAN Gateway
#################open:--------------------------- #################open:---------------------------
# rf_s list 1 ist neu
# rf_s_644 list 1 ist neu
); );
##----------definitions for register settings----------------- ##----------definitions for register settings-----------------
@ -447,7 +444,7 @@ my $K_actDetID = '000000'; # id of actionDetector
signalTone =>{a=> 3.6,s=>0.2,l=>0,min=>0 ,max=>3 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"" ,lit=>{low=>0,mid=>1,high=>2,veryHigh=>3}}, signalTone =>{a=> 3.6,s=>0.2,l=>0,min=>0 ,max=>3 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"" ,lit=>{low=>0,mid=>1,high=>2,veryHigh=>3}},
brightness =>{a=> 4.0,s=>0.4,l=>0,min=>0 ,max=>15 ,c=>'' ,f=>'' ,u=>'' ,d=>1,t=>"Display brightness"}, brightness =>{a=> 4.0,s=>0.4,l=>0,min=>0 ,max=>15 ,c=>'' ,f=>'' ,u=>'' ,d=>1,t=>"Display brightness"},
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=>1 ,u=>'s' ,d=>1,t=>"energy Option: Duration of ilumination",lit=>{permanent=>0}},
# 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=>1,on_100=>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=>1,on_100=>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? 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?
@ -1340,24 +1337,24 @@ $culHmRegChan{"ROTO_ZEL-STG-RM-FWT03"}= $culHmRegChan{"HM-CC-TC03"};
##############################---get---######################################## ##############################---get---########################################
#define gets - try use same names as for set #define gets - try use same names as for set
%culHmGlobalGets = ( %culHmGlobalGets = (
param => "<param>", param => "<param>",
reg => "<addr> ... <list> <peer>", reg => "<addr> ... <list> <peer>",
regVal => "<addr> ... <list> <peer>", regVal => "<addr> ... <list> <peer>",
regList => "", regList => "",
cmdList => "", cmdList => "",
saveConfig => "<filename> ...", saveConfig => "<filename> ...",
); );
%culHmVrtGets = ( %culHmVrtGets = (
param => "<param>", param => "<param>",
cmdList => "", cmdList => "",
saveConfig => "<filename> ...", saveConfig => "<filename> ...",
); );
%culHmSubTypeGets = ( %culHmSubTypeGets = (
none4Type =>{ "test"=>"" }, none4Type =>{ "test"=>"" },
); );
%culHmModelGets = ( %culHmModelGets = (
"CCU-FHEM" =>{ "listDevice"=>"" }, "CCU-FHEM" =>{ "listDevice"=>"" },
"ActionDetector" =>{ "listDevice"=>"[all|alive|unknown|dead|notAlive] ..." }, ActionDetector =>{ "listDevice"=>"[all|alive|unknown|dead|notAlive] ..." },
); );
##############################---set---######################################## ##############################---set---########################################
@ -1380,86 +1377,83 @@ $culHmRegChan{"ROTO_ZEL-STG-RM-FWT03"}= $culHmRegChan{"HM-CC-TC03"};
); );
%culHmSubTypeDevSets = (# device of this subtype %culHmSubTypeDevSets = (# device of this subtype
switch =>{ getSerial => "" switch =>{ getSerial => ""
,pair => "" ,pair => ""
,getVersion => "" ,getVersion => ""
}, }
# remote =>{ }, ,winMatic =>{ statusRequest => ""}
# threeStateSensor =>{ statusRequest =>""}, ,keyMatic =>{ statusRequest => ""}
# THSensor =>{ statusRequest =>""}, at least OT/OT2 do not support this ,repeater =>{ statusRequest => ""
# virtual =>{ }, ,getSerial => ""
# smokeDetector =>{ statusRequest => ""},#not SCD }
winMatic =>{ statusRequest => ""}, ,outputUnit =>{ statusRequest => ""}
keyMatic =>{ statusRequest => ""},
repeater =>{ statusRequest => "",
getSerial => ""},
outputUnit =>{ statusRequest => ""},
); );
$culHmSubTypeDevSets{dimmer} = $culHmSubTypeDevSets{switch}; $culHmSubTypeDevSets{dimmer} = $culHmSubTypeDevSets{switch};
$culHmSubTypeDevSets{blindActuator} = $culHmSubTypeDevSets{switch}; $culHmSubTypeDevSets{blindActuator} = $culHmSubTypeDevSets{switch};
%culHmGlobalSetsChn = (# all channels but virtuals %culHmGlobalSetsChn = (# all channels but virtuals
sign => "[on|off]", sign => "[on|off]"
peerBulk => "<peer1,peer2,...> [set|unset]", ,peerBulk => "<peer1,peer2,...> [set|unset]"
); );
%culHmSubTypeSets = (# channels of this subtype %culHmSubTypeSets = (# channels of this subtype
switch =>{ "on-for-timer" =>"<ontime>" switch =>{ "on-for-timer" =>"<ontime>"
,"on-till" =>"<time>" ,"on-till" =>"<time>"
,on =>"" ,on =>""
,off =>"" ,off =>""
,toggle =>"" ,toggle =>""
,press =>"[long|short] [<peer>] [<repCount(long only)>] [<repDelay>] ..." ,press =>"[long|short] [<peer>] [<repCount(long only)>] [<repDelay>] ..."
,inhibit =>"[on|off]" ,inhibit =>"[on|off]"
,statusRequest =>"" ,statusRequest =>""
,peerIODev =>"[IO] <btn> [set|unset]... not for future use" ,peerIODev =>"[IO] <btn> [set|unset]... not for future use"
}, }
dimmer =>{ "on-for-timer" =>"<ontime> [<ramptime>]..." ,dimmer =>{ "on-for-timer" =>"<ontime> [<ramptime>]..."
,"on-till" =>"<time> [<ramptime>]..." ,"on-till" =>"<time> [<ramptime>]..."
,on =>"" ,on =>""
,off =>"" ,off =>""
,toggle =>"" ,toggle =>""
,pct =>"<value> ... [<ontime>] [<ramptime>]" ,pct =>"<value> ... [<ontime>] [<ramptime>]"
,stop =>"" ,stop =>""
,press =>"[long|short] [on|off|<peer>] [<repCount(long only)>] [<repDelay>] ..." ,press =>"[long|short] [on|off|<peer>] [<repCount(long only)>] [<repDelay>] ..."
,up =>"[<changeValue>] [<ontime>] [<ramptime>] ..." ,up =>"[<changeValue>] [<ontime>] [<ramptime>] ..."
,down =>"[<changeValue>] [<ontime>] [<ramptime>] ..." ,down =>"[<changeValue>] [<ontime>] [<ramptime>] ..."
,inhibit =>"[on|off]" ,inhibit =>"[on|off]"
,statusRequest =>"" ,statusRequest =>""
,peerIODev =>"[IO] <btn> [set|unset]... not for future use" ,peerIODev =>"[IO] <btn> [set|unset]... not for future use"
}, }
blindActuator =>{ on =>"" ,blindActuator =>{ on =>""
,off =>"" ,off =>""
,toggle =>"" ,toggle =>""
,toggleDir =>"" ,toggleDir =>""
,pct =>"[<value>] ... [<ontime>]" ,pct =>"[<value>] ... [<ontime>]"
,stop =>"" ,stop =>""
,press =>"[long|short] [on|off|<peer>] [<repCount(long only)>] [<repDelay>] ..." ,press =>"[long|short] [on|off|<peer>] [<repCount(long only)>] [<repDelay>] ..."
,up =>"[<changeValue>] [<ontime>] [<ramptime>] ..." ,up =>"[<changeValue>] [<ontime>] [<ramptime>] ..."
,down =>"[<changeValue>] [<ontime>] [<ramptime>] ..." ,down =>"[<changeValue>] [<ontime>] [<ramptime>] ..."
,inhibit =>"[on|off]" ,inhibit =>"[on|off]"
,statusRequest =>"" ,statusRequest =>""
,peerIODev =>"[IO] <btn> [set|unset]... not for future use" ,peerIODev =>"[IO] <btn> [set|unset]... not for future use"
}, }
remote =>{ peerChan =>"<btnNumber> <actChn> ... [single|dual|reverse] [set|unset] [actor|remote|both]"}, ,remote =>{ peerChan =>"<btnNumber> <actChn> ... [single|dual|reverse] [set|unset] [actor|remote|both]"}
threeStateSensor =>{ peerChan =>"<btnNumber> <actChn> ... single [set|unset] [actor|remote|both]" ,threeStateSensor =>{ peerChan =>"<btnNumber> <actChn> ... single [set|unset] [actor|remote|both]"}
# ,statusRequest =>"" ,THSensor =>{ peerChan =>"0 <actChn> ... single [set|unset] [actor|remote|both]"}
}, ,virtual =>{ peerChan =>"<btnNumber> <actChn> ... [single|dual|reverse] [set|unset] [actor|remote|both]"
THSensor =>{ peerChan =>"0 <actChn> ... single [set|unset] [actor|remote|both]"}, ,press =>"[long|short] [noBurst] [<repCount(long only)>] [<repDelay>] ..."
virtual =>{ peerChan =>"<btnNumber> <actChn> ... [single|dual|reverse] [set|unset] [actor|remote|both]" ,postEvent =>"<condition>"
,press =>"[long|short] [noBurst] [<repCount(long only)>] [<repDelay>] ..." }
,postEvent =>"<condition>"}, ,smokeDetector =>{ peerChan =>"<btnNumber> <actChn> ... single [set|unset] actor"}
smokeDetector =>{ peerChan =>"<btnNumber> <actChn> ... single [set|unset] actor"}, ,winMatic =>{ statusRequest =>""}
winMatic =>{ statusRequest =>""}, ,keyMatic =>{ lock =>""
keyMatic =>{ lock =>"" ,unlock =>"[<sec>] ..."
,unlock =>"[<sec>] ..." ,open =>"[<sec>] ..."
,open =>"[<sec>] ..." ,inhibit =>"[on|off]"
,inhibit =>"[on|off]" ,statusRequest =>""
,statusRequest =>""}, }
repeater =>{ setRepeat => "[no1..36] <sendName> <recName> [bdcast-yes|no]" ,repeater =>{ setRepeat => "[no1..36] <sendName> <recName> [bdcast-yes|no]"
,inhibit => "[on|off]" ,inhibit => "[on|off]"
,statusRequest =>""}, ,statusRequest =>""
outputUnit =>{ statusRequest =>""}, }
,outputUnit =>{ statusRequest =>""}
); );
# clones- - - - - - - - - - - - - - - - - # clones- - - - - - - - - - - - - - - - -
$culHmSubTypeSets{pushButton} = $culHmSubTypeSets{remote}; $culHmSubTypeSets{pushButton} = $culHmSubTypeSets{remote};
@ -1473,27 +1467,32 @@ $culHmSubTypeSets{powerMeter} = $culHmSubTypeSets{outputUnit};
$culHmSubTypeSets{motionDetector} = $culHmSubTypeSets{threeStateSensor}; $culHmSubTypeSets{motionDetector} = $culHmSubTypeSets{threeStateSensor};
%culHmModelSets = (# channels of this subtype------------- %culHmModelSets = (# channels of this subtype-------------
"HM-CC-VD" =>{ valvePos =>"[off|0.0..99.0]"}, "HM-CC-VD" =>{ valvePos =>"[off|0.0..99.0]"}
"HM-RC-19" =>{ service => "<count>" ,"HM-RC-19" =>{ service => "<count>"
,alarm => "<count>" ,alarm => "<count>"
,display => "<text> [comma|no] [unit] [off|1|2|3] [off|on|slow|fast] <symbol>"}, ,display => "<text> [comma|no] [unit] [off|1|2|3] [off|on|slow|fast] <symbol>"
"HM-PB-4DIS-WM" =>{ text => "<txt1> <txt2>..." }
#text => "<btn> [on|off] <txt1> <txt2>...", old style will not be offered anymore ,"HM-PB-4DIS-WM" =>{ text => "<txt1> <txt2>..."
}, #text => "<btn> [on|off] <txt1> <txt2>...", old style will not be offered anymore
"HM-OU-LED16" =>{ led => "[off|red|green|orange]" }
,ilum => "[0-15] [0-127]"}, ,"HM-OU-LED16" =>{ led => "[off|red|green|orange]"
"HM-OU-CFM-PL" =>{ "on-for-timer" =>"<sec>" ,ilum => "[0-15] [0-127]"
,"on-till" =>"<time>" }
,on =>"" ,"HM-OU-CFM-PL" =>{ "on-for-timer" =>"<sec>"
,off =>"" ,"on-till" =>"<time>"
,toggle =>"" ,on =>""
,press =>"[long|short] [<peer>] ..." ,off =>""
,inhibit =>"[on|off]"}, ,toggle =>""
"HM-CC-TC" =>{ burstXmit =>""}, ,press =>"[long|short] [<peer>] ..."
"HM-CC-RT-DN" =>{ burstXmit =>"" ,inhibit =>"[on|off]"
,inhibit =>"[on|off]"}, }
"HM-TC-IT-WM-W-EU" =>{ inhibit =>"[on|off]"}, ,"HM-CC-TC" =>{ burstXmit =>""}
"HM-SEC-SD" =>{ statusRequest =>""}, ,"HM-CC-RT-DN" =>{ burstXmit =>""
,inhibit =>"[on|off]"
}
,"HM-TC-IT-WM-W-EU" =>{ inhibit =>"[on|off]"}
,"HM-SEC-SD" =>{ statusRequest =>""}
,"ActionDetector" =>{ clear => "[readings|all]"}
); );
# clones- - - - - - - - - - - - - - - - - # clones- - - - - - - - - - - - - - - - -
$culHmModelSets{"HM-CC-RT-DN-BoM"} = $culHmModelSets{"HM-CC-RT-DN"}; $culHmModelSets{"HM-CC-RT-DN-BoM"} = $culHmModelSets{"HM-CC-RT-DN"};
@ -1512,94 +1511,96 @@ $culHmModelSets{"HM-RC-Dis-H-x-EU"} = $culHmModelSets{"HM-PB-4DIS-WM"};
#%{$culHmModelSets{"HM-RC-19-SW"}} = %{$culHmModelSets{"HM-RC-19"}}; copy #%{$culHmModelSets{"HM-RC-19-SW"}} = %{$culHmModelSets{"HM-RC-19"}}; copy
%culHmChanSets = ( %culHmChanSets = (
"HM-CC-TC00" =>{ "desired-temp" =>"[on|off|6.0..30.0]" "HM-CC-TC00" =>{ "desired-temp" =>"[on|off|6.0..30.0]"
,statusRequest =>"" ,statusRequest =>""
,sysTime =>"" ,sysTime =>""
,getSerial => ""}, ,getSerial => ""
"HM-CC-TC02" =>{ peerChan =>" 0 <actChn> ... single [set|unset] [actor|remote|both]" }
,"desired-temp" =>"[on|off|6.0..30.0]" ,"HM-CC-TC02" =>{ peerChan =>" 0 <actChn> ... single [set|unset] [actor|remote|both]"
,tempListSat =>"[prep|exec] HH:MM temp ..." ,"desired-temp" =>"[on|off|6.0..30.0]"
,tempListSun =>"[prep|exec] HH:MM temp ..." ,tempListSat =>"[prep|exec] HH:MM temp ..."
,tempListMon =>"[prep|exec] HH:MM temp ..." ,tempListSun =>"[prep|exec] HH:MM temp ..."
,tempListTue =>"[prep|exec] HH:MM temp ..." ,tempListMon =>"[prep|exec] HH:MM temp ..."
,tempListThu =>"[prep|exec] HH:MM temp ..." ,tempListTue =>"[prep|exec] HH:MM temp ..."
,tempListWed =>"[prep|exec] HH:MM temp ..." ,tempListThu =>"[prep|exec] HH:MM temp ..."
,tempListFri =>"[prep|exec] HH:MM temp ..." ,tempListWed =>"[prep|exec] HH:MM temp ..."
,tempListTmpl =>"[verify|restore] [[<file>:]templateName] ..." ,tempListFri =>"[prep|exec] HH:MM temp ..."
,partyMode =>"[prep|exec] HH:MM durationDays ..." ,tempListTmpl =>"[verify|restore] [[<file>:]templateName] ..."
,displayMode =>"[temp-only|temp-hum]" ,partyMode =>"[prep|exec] HH:MM durationDays ..."
,displayTemp =>"[actual|setpoint]" ,displayMode =>"[temp-only|temp-hum]"
,displayTempUnit=>"[celsius|fahrenheit]" ,displayTemp =>"[actual|setpoint]"
,controlMode =>"[auto|manual|central|party]" ,displayTempUnit=>"[celsius|fahrenheit]"
,statusRequest =>"" ,controlMode =>"[auto|manual|central|party]"
,sysTime =>""}, ,statusRequest =>""
"HM-OU-CFM-PL01" =>{ led =>"[redL|greenL|orangeL|redS|greenS|orangeS|pause][,<color2>...] [<repeat>]"}, ,sysTime =>""
"HM-OU-CFM-PL02" =>{ playTone =>"[replay|<MP3No>[,<MP3No>...]] [<repeat>]"}, }
"HM-SEC-WIN01" =>{ stop =>"", ,"HM-OU-CFM-PL01" =>{ led =>"[redL|greenL|orangeL|redS|greenS|orangeS|pause][,<color2>...] [<repeat>]"}
,level =>"<level> <relockDly> <speed>..." ,"HM-OU-CFM-PL02" =>{ playTone =>"[replay|<MP3No>[,<MP3No>...]] [<repeat>]"}
,keydef =>"<btn> <txt1> <txt2>" ,"HM-SEC-WIN01" =>{ stop =>"",
,inhibit =>"[on|off]" ,level =>"<level> <relockDly> <speed>..."
,press =>"[long|short] [<peer>] [<repCount(long only)>] [<repDelay>]..." ,keydef =>"<btn> <txt1> <txt2>"
,peerIODev =>"[IO] <btn> [set|unset]... not for future use" ,inhibit =>"[on|off]"
}, ,press =>"[long|short] [<peer>] [<repCount(long only)>] [<repDelay>]..."
"HM-Sen-RD-O02" =>{ "on-for-timer" =>"<sec>" ,peerIODev =>"[IO] <btn> [set|unset]... not for future use"
,"on-till" =>"<time>" }
,on =>"" ,"HM-Sen-RD-O02" =>{ "on-for-timer" =>"<sec>"
,off =>"" ,"on-till" =>"<time>"
,toggle =>""}, ,on =>""
"HM-CC-RT-DN00" =>{ sysTime =>"" ,off =>""
,fwUpdate =>"<filename> <bootTime> ..." ,toggle =>""
}, }
"HM-LC-Bl1PBU-FM00" =>{ fwUpdate =>"<filename> <bootTime> ..." ,"HM-CC-RT-DN00" =>{ sysTime =>""
}, ,fwUpdate =>"<filename> <bootTime> ..."}
"HM-CC-RT-DN04" =>{ controlMode =>"[auto|manual|boost|day|night]" ,"HM-LC-Bl1PBU-FM00" =>{ fwUpdate =>"<filename> <bootTime> ..."}
,controlManu =>"[on|off|5.0..30.0]" ,"HM-CC-RT-DN04" =>{ controlMode =>"[auto|manual|boost|day|night]"
,controlParty =>"<temp> <startDate> <startTime> <enddate> <endTime>" ,controlManu =>"[on|off|5.0..30.0]"
,tempListSat =>"[prep|exec] HH:MM temp ..." ,controlParty =>"<temp> <startDate> <startTime> <enddate> <endTime>"
,tempListSun =>"[prep|exec] HH:MM temp ..." ,tempListSat =>"[prep|exec] HH:MM temp ..."
,tempListMon =>"[prep|exec] HH:MM temp ..." ,tempListSun =>"[prep|exec] HH:MM temp ..."
,tempListTue =>"[prep|exec] HH:MM temp ..." ,tempListMon =>"[prep|exec] HH:MM temp ..."
,tempListThu =>"[prep|exec] HH:MM temp ..." ,tempListTue =>"[prep|exec] HH:MM temp ..."
,tempListWed =>"[prep|exec] HH:MM temp ..." ,tempListThu =>"[prep|exec] HH:MM temp ..."
,tempListFri =>"[prep|exec] HH:MM temp ..." ,tempListWed =>"[prep|exec] HH:MM temp ..."
,tempListTmpl =>"[verify|restore] [[<file>:]templateName] ..." ,tempListFri =>"[prep|exec] HH:MM temp ..."
,"desired-temp" =>"[on|off|5.0..30.0]" ,tempListTmpl =>"[verify|restore] [[<file>:]templateName] ..."
,sysTime =>"" ,"desired-temp" =>"[on|off|5.0..30.0]"
}, ,sysTime =>""
"HM-TC-IT-WM-W-EU02"=>{ controlMode =>"[auto|manual|boost|day|night]" }
,controlManu =>"[on|off|5.0..30.0]" ,"HM-TC-IT-WM-W-EU02"=>{ controlMode =>"[auto|manual|boost|day|night]"
,controlParty =>"<temp> <startDate> <startTime> <enddate> <endTime>" ,controlManu =>"[on|off|5.0..30.0]"
,tempListSat =>"[prep|exec] [p1|p2|p3] HH:MM temp ..." ,controlParty =>"<temp> <startDate> <startTime> <enddate> <endTime>"
,tempListSun =>"[prep|exec] [p1|p2|p3] HH:MM temp ..." ,tempListSat =>"[prep|exec] [p1|p2|p3] HH:MM temp ..."
,tempListMon =>"[prep|exec] [p1|p2|p3] HH:MM temp ..." ,tempListSun =>"[prep|exec] [p1|p2|p3] HH:MM temp ..."
,tempListTue =>"[prep|exec] [p1|p2|p3] HH:MM temp ..." ,tempListMon =>"[prep|exec] [p1|p2|p3] HH:MM temp ..."
,tempListThu =>"[prep|exec] [p1|p2|p3] HH:MM temp ..." ,tempListTue =>"[prep|exec] [p1|p2|p3] HH:MM temp ..."
,tempListWed =>"[prep|exec] [p1|p2|p3] HH:MM temp ..." ,tempListThu =>"[prep|exec] [p1|p2|p3] HH:MM temp ..."
,tempListFri =>"[prep|exec] [p1|p2|p3] HH:MM temp ..." ,tempListWed =>"[prep|exec] [p1|p2|p3] HH:MM temp ..."
,"desired-temp" =>"[on|off|5.0..30.0]" ,tempListFri =>"[prep|exec] [p1|p2|p3] HH:MM temp ..."
,tempListTmpl =>"[verify|restore] [[<file>:]templateName] ..." ,"desired-temp" =>"[on|off|5.0..30.0]"
,peerChan =>"<btnNumber> <actChn> ... single [set|unset] [actor|remote|both]" ,tempListTmpl =>"[verify|restore] [[<file>:]templateName] ..."
}, ,peerChan =>"<btnNumber> <actChn> ... single [set|unset] [actor|remote|both]"
"HM-TC-IT-WM-W-EU01"=>{ peerChan =>"<btnNumber> <actChn> ... single [set|unset] [actor|remote|both]"}, }
"HM-TC-IT-WM-W-EU07"=>{ peerChan =>"<btnNumber> <actChn> ... single [set|unset] [actor|remote|both]"}, ,"HM-TC-IT-WM-W-EU01"=>{ peerChan =>"<btnNumber> <actChn> ... single [set|unset] [actor|remote|both]"}
"HM-ES-PMSw1-Pl01" =>{ "on-for-timer" =>"<sec>" ,"HM-TC-IT-WM-W-EU07"=>{ peerChan =>"<btnNumber> <actChn> ... single [set|unset] [actor|remote|both]"}
,"on-till" =>"<time>" ,"HM-ES-PMSw1-Pl01" =>{ "on-for-timer" =>"<sec>"
,on =>"" ,"on-till" =>"<time>"
,off =>"" ,on =>""
,toggle =>"" ,off =>""
,press =>"[long|short] [<peer>] [<repCount(long only)>] [<repDelay>] ..." ,toggle =>""
,inhibit =>"[on|off]" ,press =>"[long|short] [<peer>] [<repCount(long only)>] [<repDelay>] ..."
,statusRequest =>""}, ,inhibit =>"[on|off]"
"HM-ES-PMSw1-Pl00" =>{ fwUpdate =>"<filename> <bootTime> ..." ,statusRequest =>""
,getSerial => ""}, }
"HM-CC-RT-DN06" =>{ press =>"[long|short] [<peer>] [<repCount(long only)>] [<repDelay>] ..." ,"HM-ES-PMSw1-Pl00" =>{ fwUpdate =>"<filename> <bootTime> ..."
}, ,getSerial => ""
"HM-Dis-WM5501" =>{ displayWM =>"[long|short|help] <lineX> <textNo1> <color1> <icon1> [<textNo2> <color2> <icon2>] ...[<textNo6> <color6> <icon6>] "}, }
"CCU-FHEM00" =>{ update =>"", ,"HM-CC-RT-DN06" =>{ press =>"[long|short] [<peer>] [<repCount(long only)>] [<repDelay>] ..."}
hmPairForSec =>"<sec>", ,"HM-Dis-WM5501" =>{ displayWM =>"[long|short|help] <lineX> <textNo1> <color1> <icon1> [<textNo2> <color2> <icon2>] ...[<textNo6> <color6> <icon6>] "}
hmPairSerial =>"<serial>", ,"CCU-FHEM00" =>{ update =>""
defIgnUnknown=>"", ,hmPairForSec =>"<sec>"
}, ,hmPairSerial =>"<serial>"
,defIgnUnknown=>""
}
); );
# clones- - - - - - - - - - - - - - - - - # clones- - - - - - - - - - - - - - - - -
$culHmChanSets{"HM-Dis-WM5502"} = $culHmChanSets{"HM-Dis-WM5501"}; $culHmChanSets{"HM-Dis-WM5502"} = $culHmChanSets{"HM-Dis-WM5501"};