2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-10 03:06:37 +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}{$_}
foreach ( "autoReadReg","actCycle","actStatus","burstAccess","serialNr"
,"IODev","IOList","IOgrp","hmProtocolEvents","rssiLog");
$hash->{helper}{role}{vrt} = 1;
$hash->{helper}{role}{dev} = 1;
#$hash->{helper}{role}{vrt} = 1;
#$hash->{helper}{role}{dev} = 1;
next;
}
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 $h = undef;
$h = $culHmGlobalGets->{$cmd} if(!$roleV);
$h = $culHmGlobalGets->{$cmd} if(!$roleV &&($roleD || $roleC));
$h = $culHmVrtGets->{$cmd} if(!defined($h) && $roleV);
$h = $culHmSubTypeGets->{$st}{$cmd} if(!defined($h) && $culHmSubTypeGets->{$st});
$h = $culHmModelGets->{$md}{$cmd} if(!defined($h) && $culHmModelGets->{$md});
@ -3023,10 +3023,10 @@ sub CUL_HM_Get($@) {#+++++++++++++++++ get command+++++++++++++++++++++++++++++
if(!defined($h)) {
my @arr = ();
if(!$roleV) {foreach(keys %{$culHmGlobalGets} ){push @arr,"$_:".$culHmGlobalGets->{$_} }};
if($roleV) {foreach(keys %{$culHmVrtGets} ){push @arr,"$_:".$culHmVrtGets->{$_} }};
if($culHmSubTypeGets->{$st}){foreach(keys %{$culHmSubTypeGets->{$st}}){push @arr,"$_:".${$culHmSubTypeGets->{$st}}{$_} }};
if($culHmModelGets->{$md}) {foreach(keys %{$culHmModelGets->{$md}} ){push @arr,"$_:".${$culHmModelGets->{$md}}{$_} }};
if(!$roleV &&($roleD || $roleC)){foreach(keys %{$culHmGlobalGets} ){push @arr,"$_:".$culHmGlobalGets->{$_} }};
if($roleV) {foreach(keys %{$culHmVrtGets} ){push @arr,"$_:".$culHmVrtGets->{$_} }};
if($culHmSubTypeGets->{$st}) {foreach(keys %{$culHmSubTypeGets->{$st}}){push @arr,"$_:".${$culHmSubTypeGets->{$st}}{$_} }};
if($culHmModelGets->{$md}) {foreach(keys %{$culHmModelGets->{$md}} ){push @arr,"$_:".${$culHmModelGets->{$md}}{$_} }};
foreach(@arr){
my ($cmd,$val) = split(":",$_,2);
@ -3281,7 +3281,7 @@ sub CUL_HM_Set($@) {#+++++++++++++++++ set command+++++++++++++++++++++++++++++
my $fkt = $hash->{helper}{fkt}?$hash->{helper}{fkt}:"";
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 = $culHmGlobalSetsDevice->{$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+/) {
splice @a, 1, 0,"pct";#insert the actual command
}
elsif(!defined($h)) {
elsif(!defined($h)) { ### unknown - return the commandlist
my @arr1 = ();
if( $st ne "virtual") {foreach(keys %{$culHmGlobalSets} ){push @arr1,"$_:".$culHmGlobalSets->{$_} }};
if(($st eq "virtual"||!$st) && $roleD){foreach(keys %{$culHmGlobalSetsVrtDev} ){push @arr1,"$_:".$culHmGlobalSetsVrtDev->{$_} }};
if( $st ne "virtual" && $roleD){foreach(keys %{$culHmGlobalSetsDevice} ){push @arr1,"$_:".$culHmGlobalSetsDevice->{$_} }};
if( $st ne "virtual" && $roleD){foreach(keys %{$culHmSubTypeDevSets->{$st}}){push @arr1,"$_:".${$culHmSubTypeDevSets->{$st}}{$_}}};
if( $st ne "virtual" && $roleC){foreach(keys %{$culHmGlobalSetsChn} ){push @arr1,"$_:".$culHmGlobalSetsChn->{$_} }};
if( !$roleV &&($roleD || $roleC) ){foreach(keys %{$culHmGlobalSets} ){push @arr1,"$_:".$culHmGlobalSets->{$_} }};
if(( $roleV||!$st) && $roleD){foreach(keys %{$culHmGlobalSetsVrtDev} ){push @arr1,"$_:".$culHmGlobalSetsVrtDev->{$_} }};
if( !$roleV && $roleD){foreach(keys %{$culHmGlobalSetsDevice} ){push @arr1,"$_:".$culHmGlobalSetsDevice->{$_} }};
if( !$roleV && $roleD){foreach(keys %{$culHmSubTypeDevSets->{$st}}){push @arr1,"$_:".${$culHmSubTypeDevSets->{$st}}{$_}}};
if( !$roleV && $roleC){foreach(keys %{$culHmGlobalSetsChn} ){push @arr1,"$_:".$culHmGlobalSetsChn->{$_} }};
if( $culHmSubTypeSets->{$st} && $roleC){foreach(keys %{$culHmSubTypeSets->{$st}} ){push @arr1,"$_:".${$culHmSubTypeSets->{$st}}{$_} }};
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"}}{$_} }};
@ -8667,18 +8667,19 @@ sub CUL_HM_tempListTmpl(@) { ##################################################
restore will not delete any peered channels, it will just add peer channels.<br>
</li>
<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>
</li>
<li>when used with ActionDetector user will get a comma separated list of entities being assigned to the action detector<br>
get ActionDetector listDevice # returns all assigned entities<br>
get ActionDetector listDevice notActive# returns entities which habe not status alive<br>
get ActionDetector listDevice alive # returns entities with status alive<br>
get ActionDetector listDevice unknown # returns entities with status unknown<br>
get ActionDetector listDevice dead # returns entities with status dead<br>
</li>
</li>
<br>
</ul>
<ul>
<li>when used with ccu it returns a list of Devices using the ccu service to assign an IO.<br>
</li>
<li>when used with ActionDetector user will get a comma separated list of entities being assigned to the action detector<br>
get ActionDetector listDevice # returns all assigned entities<br>
get ActionDetector listDevice notActive# returns entities which habe not status alive<br>
get ActionDetector listDevice alive # returns entities with status alive<br>
get ActionDetector listDevice unknown # returns entities with status unknown<br>
get ActionDetector listDevice dead # returns entities with status dead<br>
</li>
</ul>
</li>
</ul><br>
<a name="CUL_HMattr"></a><b>Attributes</b>
<ul>
@ -8691,12 +8692,12 @@ sub CUL_HM_tempListTmpl(@) { ##################################################
<li><a name="CUL_HMaesCommReq">aesCommReq</a>
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>
</li>
</li>
<li><a name="#CUL_HMactAutoTry">actAutoTry</a>
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.
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>
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.
@ -8713,7 +8714,7 @@ sub CUL_HM_tempListTmpl(@) { ##################################################
</ul>
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.
</li>
</li>
<li><a name="#CUL_HMautoReadReg">autoReadReg</a><br>
'0' autoReadReg will be ignored.<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>
Recommendations and constrains upon usage:<br>
<ul>
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>
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>
usage on devices which support wakeup-mode is usefull. But consider that execution is delayed
until the device "wakes up".<br>
</ul>
</li>
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>
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>
usage on devices which support wakeup-mode is usefull. But consider that execution is delayed
until the device "wakes up".<br>
</ul>
</li>
<li><a name="#CUL_HMburstAccess">burstAccess</a><br>
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
@ -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>
</li>
<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>
</li>
<li>beim ActionDetector wird eine Komma geteilte Liste der Entities zurückgegeben<br>
get ActionDetector listDevice # returns alle assigned entities<br>
get ActionDetector listDevice notActive# returns entities ohne status alive<br>
get ActionDetector listDevice alive # returns entities mit status alive<br>
get ActionDetector listDevice unknown # returns entities mit status unknown<br>
get ActionDetector listDevice dead # returns entities mit status dead<br>
</li>
</li>
<ul>
<li>bei einer CCU gibt es eine Liste der Devices, welche den ccu service zum zuweisen der IOs zurück<br>
</li>
<li>beim ActionDetector wird eine Komma geteilte Liste der Entities zurückgegeben<br>
get ActionDetector listDevice # returns alle assigned entities<br>
get ActionDetector listDevice notActive# returns entities ohne status alive<br>
get ActionDetector listDevice alive # returns entities mit status alive<br>
get ActionDetector listDevice unknown # returns entities mit status unknown<br>
get ActionDetector listDevice dead # returns entities mit status dead<br>
</li>
</ul>
</li>
</ul><br>
<a name="CUL_HMattr"></a><b>Attribute</b>
<ul>

View File

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