2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-04 11:26:55 +00:00

add new devices

git-svn-id: https://svn.fhem.de/fhem/trunk@3511 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
martinp876 2013-07-27 13:19:41 +00:00
parent ec8da5bb10
commit 156ce16261
2 changed files with 311 additions and 256 deletions

View File

@ -1028,7 +1028,7 @@ sub HMinfo_cpRegs(@){#########################################################
</ul> </ul>
and/or a filter for <b>names</b>:<br> and/or a filter for <b>names</b>:<br>
<ul> <ul>
<li>-f - filter :regexp to filter entity names </li> <li>-f &lt;filter&gt; :regexp to filter entity names </li>
</ul> </ul>
Example:<br> Example:<br>
<ul><code> <ul><code>
@ -1090,31 +1090,30 @@ sub HMinfo_cpRegs(@){#########################################################
<li>Rssi clears all rssi counters </li> <li>Rssi clears all rssi counters </li>
</ul> </ul>
</li> </li>
<li><a name="#HMinfosaveConfig">saveConfig</a> <a href="HMinfoFilter">[filter]</a><br>
performs a save for all HM register setting and peers. See <a href="#CUL_HMsaveConfig">CUL_HM saveConfig</a>.
</li>
<br>
<li><a name="#HMinfocpRegs">cpRegs &lt;src:peer&gt; &lt;dst:peer&gt; </a><br> <li><a name="#HMinfocpRegs">cpRegs &lt;src:peer&gt; &lt;dst:peer&gt; </a><br>
allows to copy register, setting and behavior of a channel to allows to copy register, setting and behavior of a channel to
another or for peers from the same or different channels. Copy therefore is allowed another or for peers from the same or different channels. Copy therefore is allowed
intra/inter device and intra/inter channel. intra/inter device and intra/inter channel. <br>
<ul> <b>src:peer</b> is the source entity. Peer needs to be given if a peer behabior beeds to be copied <br>
<li>src:peer is the source entity. Peer needs to be given if a peer behabior beeds to be copied </li> <b>dst:peer</b> is the destination entity.<br>
<li>dst:peer is the destination entity.</li> Example<br>
</ul> <ul><code>
Examples are
<code>
set hm cpRegs blindR blindL # will copy all general register (list 1)for this channel from the blindR to the blindL entity. set hm cpRegs blindR blindL # will copy all general register (list 1)for this channel from the blindR to the blindL entity.
This includes items like drive times. It does not include peers related register (list 3/4) <br> This includes items like drive times. It does not include peers related register (list 3/4) <br>
set hm cpRegs blindR:Btn1 blindL:Btn2 # copy behavior of Btn1/blindR relation to Btn2/blindL<br> set hm cpRegs blindR:Btn1 blindL:Btn2 # copy behavior of Btn1/blindR relation to Btn2/blindL<br>
set hm cpRegs blindR:Btn1 blindR:Btn2 # copy behavior of Btn1/blindR relation to Btn2/blindR, i.e. inside the same Actor<br> set hm cpRegs blindR:Btn1 blindR:Btn2 # copy behavior of Btn1/blindR relation to Btn2/blindR, i.e. inside the same Actor<br>
</code> </code></ul>
<br> <br>
Restrictions:<br> Restrictions:<br>
cpRegs will not add any peers or read from the devices. It is up to the user to read register in advance<br> <ul>
cpRegs is only allowed between identical models<br> cpRegs will <u>not add any peers</u> or read from the devices. It is up to the user to read register in advance<br>
peerings of devices must exist. cpRegs will terminate if peers cannot be identified<br> cpRegs is only allowed between <u>identical models</u><br>
cpRegs estimates that all readings are up-to-date. It is up to the user to ensure and check data consistancy. <br> cpRegs expets that all <u>readings are up-to-date</u>. It is up to the user to ensure data consistancy.<br>
<br> </ul>
</li>
<li><a name="#HMinfosaveConfig">saveConfig</a> <a href="HMinfoFilter">[filter]</a><br>
performs a save for all HM register setting and peers. See <a href="#CUL_HMsaveConfig">CUL_HM saveConfig</a>.
</li> </li>
<li><a name="#HMinfotemplateDef">templateDef &lt;name&gt; &lt;param&gt; &lt;desc&gt; &lt;reg1:val1&gt; [&lt;reg2:val2&gt;] ...</a><br> <li><a name="#HMinfotemplateDef">templateDef &lt;name&gt; &lt;param&gt; &lt;desc&gt; &lt;reg1:val1&gt; [&lt;reg2:val2&gt;] ...</a><br>
define a template.<br> define a template.<br>
@ -1127,52 +1126,52 @@ sub HMinfo_cpRegs(@){#########################################################
In case the register is from link set and can destinguist between long and short it is necessary to leave the In case the register is from link set and can destinguist between long and short it is necessary to leave the
leading sh or lg off. <br> leading sh or lg off. <br>
if parameter are used it is necessary to enter p. as value with p0 first, p1 second parameter if parameter are used it is necessary to enter p. as value with p0 first, p1 second parameter
Examples <br>
<code>
set hm templateDef SwOnCond level:cond "my description" CtValLo:p0 CtDlyOn:p1 CtOn:geLo<br>
</code>
<br> <br>
Example<br>
<ul><code>
set hm templateDef SwOnCond level:cond "my description" CtValLo:p0 CtDlyOn:p1 CtOn:geLo<br>
</code></ul>
</li> </li>
<li><a name="#HMinfotemplateList">templateList [&lt;name&gt;]</a><br> <li><a name="#HMinfotemplateList">templateList [&lt;name&gt;]</a><br>
list defined templates. If no name is given all templates will be listed<br> list defined templates. If no name is given all templates will be listed<br>
</li> </li>
<li><a name="#HMinfotemplateChk">templateChk <a href="HMinfoFilter">[filter]</a> &lt;template&gt; &lt;peer:[long|short]&gt; [&lt;param1&gt; ...]</a><br> <li><a name="#HMinfotemplateChk">templateChk <a href="HMinfoFilter">[filter] &lt;template&gt; &lt;peer:[long|short]&gt; [&lt;param1&gt; ...]</a><br>
verifies if the register-readings comply to the template <br> verifies if the register-readings comply to the template <br>
Parameter are identical to <a href="#HMinfotemplateSet">templateSet</a><br> Parameter are identical to <a href="#HMinfotemplateSet">templateSet</a><br>
The procedure will check if the register values match the ones provided by the template<br> The procedure will check if the register values match the ones provided by the template<br>
If no peer is necessary use <B>none</B> to skip this entry<br> If no peer is necessary use <b>none</b> to skip this entry<br>
Examples <br> Example to verify settings<br>
<code> <ul><code>
set hm templateChk -f RolloNord BlStopUpLg none 1 2 # verify RolloNord, no peer, parameter 1 and 2 given<br> set hm templateChk -f RolloNord BlStopUpLg none 1 2 # RolloNord, no peer, parameter 1 and 2 given<br>
set hm templateChk -f RolloNord BlStopUpLg peerName:long # verify RolloNord peerName, long match template?<br> set hm templateChk -f RolloNord BlStopUpLg peerName:long # RolloNord peerName, long only<br>
set hm templateChk -f RolloNord BlStopUpLg peerName # verify RolloNord peerName, long and short match template?<br> set hm templateChk -f RolloNord BlStopUpLg peerName # RolloNord peerName, long and short<br>
set hm templateChk -f RolloNord BlStopUpLg peerName:all # verify RolloNord peerName, long and short match template?<br> set hm templateChk -f RolloNord BlStopUpLg peerName:all # RolloNord peerName, long and short<br>
set hm templateChk -f RolloNord BlStopUpLg all:long # verify RolloNord all peers,long match template?<br> set hm templateChk -f RolloNord BlStopUpLg all:long # RolloNord any peer, long only<br>
set hm templateChk -f RolloNord BlStopUpLg all # verify RolloNord all peers,long and short match template?<br> set hm templateChk -f RolloNord BlStopUpLg all # RolloNord any peer,long and short<br>
set hm templateChk -f Rollo.* BlStopUpLg all # verify each Rollo* all peers,long and short match template?<br> set hm templateChk -f Rollo.* BlStopUpLg all # each Rollo* any peer,long and short<br>
set hm templateChk BlStopUpLg # verify each entities against this template<br> set hm templateChk BlStopUpLg # each entities<br>
</code> </code></ul>
<br>
</li> </li>
<li><a name="#HMinfotemplateSet">templateSet &lt;entity&gt; &lt;template&gt; &lt;peer:[long|short]&gt; [&lt;param1&gt; ...]</a><br> <li><a name="#HMinfotemplateSet">templateSet &lt;entity&gt; &lt;template&gt; &lt;peer:[long|short]&gt; [&lt;param1&gt; ...]</a><br>
sets a bunch of register accroding to a given template. Parameter may be added depending on sets a bunch of register accroding to a given template. Parameter may be added depending on
the template setup. <br> the template setup. <br>
templateSet will collect and accumulate all changes. Finally the results are written streamlined. templateSet will collect and accumulate all changes. Finally the results are written streamlined.<br>
<li>entity: peer is the source entity. Peer needs to be given if a peer behabior beeds to be copied <\li> <b>entity:</b> peer is the source entity. Peer needs to be given if a peer behabior beeds to be copied <br>
<li>template: one of the programmed template<\li> <b>template:</b> one of the programmed template<br>
<li>peer: [long|short]:if necessary a peer needs to be given. If no peer is used enter '0'. <b>peer:</b> [long|short]:if necessary a peer needs to be given. If no peer is used enter '0'.
with a peer it should be given whether it is for long or short keypress with a peer it should be given whether it is for long or short keypress<br>
<\li> <b>param:</b> number and meaning of parameter depends on the given template<br>
<li>param: number and meaning of parameter depends on the given template<\li> Example could be (templates not provided, just theoretical)<br>
Examples could be (templates not provided, just theoretical)<br> <ul><code>
set hm templateSet Licht1 staircase FB1:short 20 <br> set hm templateSet Licht1 staircase FB1:short 20 <br>
set hm templateSet Licht1 staircase FB1:long 100 <br> set hm templateSet Licht1 staircase FB1:long 100 <br>
<br> </code></ul>
Restrictions:<br> Restrictions:<br>
<ul>
User must ensure to read configuration prior to execution.<br> User must ensure to read configuration prior to execution.<br>
templateSet may not setup a complete register block but only a part if it. This is up to template design.<br> templateSet may not setup a complete register block but only a part if it. This is up to template design.<br>
<br> <br>
</ul>
</li> </li>
</ul> </ul>
</ul> </ul>
@ -1190,9 +1189,9 @@ sub HMinfo_cpRegs(@){#########################################################
I.e. counter is the number of entities with this reading and the same value. I.e. counter is the number of entities with this reading and the same value.
Readings to be searched are separated by comma. <br> Readings to be searched are separated by comma. <br>
Example:<br> Example:<br>
<code> <ul><code>
attr hm sumStatus battery,sabotageError<br> attr hm sumStatus battery,sabotageError<br>
</code> </code></ul>
will cause a reading like<br> will cause a reading like<br>
W_sum_batterie ok:5 low:3<br> W_sum_batterie ok:5 low:3<br>
W_sum_sabotageError on:1<br> W_sum_sabotageError on:1<br>
@ -1205,15 +1204,18 @@ sub HMinfo_cpRegs(@){#########################################################
Here user can add reading<b>values</b> that are <b>not displayed</b>. I.e. the value is the Here user can add reading<b>values</b> that are <b>not displayed</b>. I.e. the value is the
good-condition that will not be counted.<br> good-condition that will not be counted.<br>
This way user must not know all error values but it is sufficient to supress known non-ciritical ones. This way user must not know all error values but it is sufficient to supress known non-ciritical ones.
<br>
Example:<br> Example:<br>
<code> <ul><code>
attr hm sumERROR battery:ok,sabotageError:off,overheat:off,Activity:alive:unknown<br> attr hm sumERROR battery:ok,sabotageError:off,overheat:off,Activity:alive:unknown<br>
</code> </code></ul>
will cause a reading like<br> will cause a reading like<br>
<ul><code>
ERR_batterie low:3<br> ERR_batterie low:3<br>
ERR_sabotageError on:1<br> ERR_sabotageError on:1<br>
ERR_overheat on:3<br> ERR_overheat on:3<br>
ERR_Activity dead:5<br> ERR_Activity dead:5<br>
</code></ul>
</li> </li>
</ul> </ul>
<br> <br>
@ -1241,18 +1243,17 @@ sub HMinfo_cpRegs(@){#########################################################
W_sum_&lt;reading&gt;: count of readings as defined in attribut W_sum_&lt;reading&gt;: count of readings as defined in attribut
<a href="#HMinfosumStatus">sumStatus</a>. </li> <a href="#HMinfosumStatus">sumStatus</a>. </li>
Example:<br> Example:<br>
<li><code> <ul><code>
ERR___rssiCrit LightKittchen,WindowDoor,Remote12 ERR___rssiCrit LightKittchen,WindowDoor,Remote12<br>
ERR__protocol NACK:2 ResendFail:5 CmdDel:2 CmdPend:1 ERR__protocol NACK:2 ResendFail:5 CmdDel:2 CmdPend:1<br>
ERR__protoNames LightKittchen,WindowDoor,Remote12,Ligth1,Light5 ERR__protoNames LightKittchen,WindowDoor,Remote12,Ligth1,Light5<br>
ERR_battery: low:2; ERR_battery: low:2;<br>
ERR_names: remote1,buttonClara, ERR_names: remote1,buttonClara,<br>
I_rssiMinLevel 99&gt;:3 80&lt;:0 60&lt;:7 59&lt;:4 I_rssiMinLevel 99&gt;:3 80&lt;:0 60&lt;:7 59&lt;:4<br>
W_sum_battery: ok:5;low:2; W_sum_battery: ok:5;low:2;<br>
W_sum_overheat: off:7; W_sum_overheat: off:7;<br>
C_sumDefined: entities:23 device:11 channel:16 virtual:5; C_sumDefined: entities:23 device:11 channel:16 virtual:5;<br>
</code></li> </code></ul>
</ul> </ul>
</ul> </ul>
=end html =end html

View File

@ -13,24 +13,26 @@ use warnings;
my $K_actDetID = '000000'; # id of actionDetector my $K_actDetID = '000000'; # id of actionDetector
#my %culHmDevProps=( #my %culHmDevProps=(
# "01" => { st => "AlarmControl", cl => " " }, # by peterp # "01" => { st => "AlarmControl",
# "12" => { st => "outputUnit", cl => "receiver" }, # Test Pending # "10" => { st => "switch",
# "10" => { st => "switch", cl => "receiver" }, # Parse,Set # "12" => { st => "outputUnit",
# "20" => { st => "dimmer", cl => "receiver" }, # Parse,Set # "20" => { st => "dimmer",
# "30" => { st => "blindActuator", cl => "receiver" }, # Parse,Set # "30" => { st => "blindActuator",
# "39" => { st => "ClimateControl", cl => "sender" }, # "39" => { st => "ClimateControl",
# "40" => { st => "remote", cl => "sender" }, # Parse # "40" => { st => "remote",
# "41" => { st => "sensor", cl => "sender" }, # "41" => { st => "sensor",
# "42" => { st => "swi", cl => "sender" }, # e.g. HM-SwI-3-FM # "42" => { st => "swi",
# "43" => { st => "pushButton", cl => "sender" }, # "43" => { st => "pushButton",
# "58" => { st => "thermostat", cl => "receiver" }, # "44" => { st => "singleButton",
# "60" => { st => "KFM100", cl => "sender" }, # Parse,unfinished # "58" => { st => "thermostat",
# "70" => { st => "THSensor", cl => "sender" }, # Parse,unfinished # "60" => { st => "KFM100",
# "80" => { st => "threeStateSensor",cl => "sender" }, # e.g.HM-SEC-RHS # "70" => { st => "THSensor",
# "81" => { st => "motionDetector", cl => "sender" }, # "80" => { st => "threeStateSensor"
# "C0" => { st => "keyMatic", cl => "receiver" }, # "81" => { st => "motionDetector",
# "C1" => { st => "winMatic", cl => "receiver" }, # "C0" => { st => "keyMatic",
# "CD" => { st => "smokeDetector", cl => "receiver" }, # Parse,set unfinished # "C1" => { st => "winMatic",
# "C3" => { st => "tipTronic",
# "CD" => { st => "smokeDetector",
#); #);
# chan supports autocreate of channels for the device # chan supports autocreate of channels for the device
# Syntax <chnName>:<chnNoStart>:<chnNoEnd> # Syntax <chnName>:<chnNoStart>:<chnNoEnd>
@ -40,6 +42,7 @@ my $K_actDetID = '000000'; # id of actionDetector
# <dev>_aux1,<dev>_aux2,<dev>_aux7 as channel 5 to 7 # <dev>_aux1,<dev>_aux2,<dev>_aux7 as channel 5 to 7
# autocreate for single channel devices is possible not recommended # autocreate for single channel devices is possible not recommended
#rxt - receivetype of the device------ #rxt - receivetype of the device------
# l: receive on lazy config - no idea how this works so far.....
# c: receive on config # c: receive on config
# w: receive in wakeup # w: receive in wakeup
# b: receive on burst # b: receive on burst
@ -112,13 +115,13 @@ my %culHmModel=(
"0047" => {name=>"KFM-Sensor" ,st=>'KFM100' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}, "0047" => {name=>"KFM-Sensor" ,st=>'KFM100' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",},
"0048" => {name=>"IS-WDS-TH-OD-S-R3" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w' ,lst=>'p' ,chn=>"",}, "0048" => {name=>"IS-WDS-TH-OD-S-R3" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w' ,lst=>'p' ,chn=>"",},
"0049" => {name=>"KFM-Display" ,st=>'KFM100' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}, "0049" => {name=>"KFM-Display" ,st=>'KFM100' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",},
"004A" => {name=>"HM-SEC-MDIR" ,st=>'motionDetector' ,cyc=>'00:10' ,rxt=>'c:w' ,lst=>'1,4' ,chn=>"",}, "004A" => {name=>"HM-SEC-MDIR" ,st=>'motionDetector' ,cyc=>'00:10' ,rxt=>'c:w:l' ,lst=>'1,4' ,chn=>"",},
"004B" => {name=>"HM-Sec-Cen" ,st=>'AlarmControl' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}, "004B" => {name=>"HM-Sec-Cen" ,st=>'AlarmControl' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",},
"004C" => {name=>"HM-RC-12-SW" ,st=>'remote' ,cyc=>'' ,rxt=>'c' ,lst=>'1,4' ,chn=>"Btn:1:12",}, "004C" => {name=>"HM-RC-12-SW" ,st=>'remote' ,cyc=>'' ,rxt=>'c' ,lst=>'1,4' ,chn=>"Btn:1:12",},
"004D" => {name=>"HM-RC-19-SW" ,st=>'remote' ,cyc=>'' ,rxt=>'c:b' ,lst=>'1,4:1p.2p.3p.4p.5p.6p.7p.8p.9p.10p.11p.12p.13p.14p.15p.16p' "004D" => {name=>"HM-RC-19-SW" ,st=>'remote' ,cyc=>'' ,rxt=>'c:b' ,lst=>'1,4:1p.2p.3p.4p.5p.6p.7p.8p.9p.10p.11p.12p.13p.14p.15p.16p'
,chn=>"Btn:1:17,Disp:18:18",}, ,chn=>"Btn:1:17,Disp:18:18",},
"004E" => {name=>"HM-LC-DDC1-PCB" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}, # door drive controller 1-channel (PCB) "004E" => {name=>"HM-LC-DDC1-PCB" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}, # door drive controller 1-channel (PCB)
"004F" => {name=>"HM-SEN-MDIR-SM" ,st=>'motionDetector' ,cyc=>'' ,rxt=>'c:w' ,lst=>'1,4' ,chn=>"",}, "004F" => {name=>"HM-SEN-MDIR-SM" ,st=>'motionDetector' ,cyc=>'' ,rxt=>'c:w:l' ,lst=>'1,4' ,chn=>"",},
"0050" => {name=>"HM-SEC-SFA-SM" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Siren:1:1,Flash:2:2",}, "0050" => {name=>"HM-SEC-SFA-SM" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Siren:1:1,Flash:2:2",},
"0051" => {name=>"HM-LC-SW1-PB-FM" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'3' ,chn=>"",}, "0051" => {name=>"HM-LC-SW1-PB-FM" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'3' ,chn=>"",},
"0052" => {name=>"HM-LC-SW2-PB-FM" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'3' ,chn=>"Sw:1:2",}, "0052" => {name=>"HM-LC-SW2-PB-FM" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'3' ,chn=>"Sw:1:2",},
@ -130,13 +133,13 @@ my %culHmModel=(
"0059" => {name=>"HM-LC-DIM1T-FM" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}, "0059" => {name=>"HM-LC-DIM1T-FM" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",},
"005A" => {name=>"HM-LC-DIM2T-SM" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:2",},#4virt- is this a faulty entry? "005A" => {name=>"HM-LC-DIM2T-SM" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:2",},#4virt- is this a faulty entry?
"005C" => {name=>"HM-OU-CF-PL" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'3' ,chn=>"Led:1:1,Sound:2:2",}, "005C" => {name=>"HM-OU-CF-PL" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'3' ,chn=>"Led:1:1,Sound:2:2",},
"005D" => {name=>"HM-Sen-MDIR-O" ,st=>'motionDetector' ,cyc=>'00:10' ,rxt=>'c:w' ,lst=>'1,4' ,chn=>"",}, "005D" => {name=>"HM-Sen-MDIR-O" ,st=>'motionDetector' ,cyc=>'00:10' ,rxt=>'c:w:l' ,lst=>'1,4' ,chn=>"",},
"005F" => {name=>"HM-SCI-3-FM" ,st=>'threeStateSensor' ,cyc=>'28:00' ,rxt=>'c:w' ,lst=>'1,4' ,chn=>"Sw:1:3",}, "005F" => {name=>"HM-SCI-3-FM" ,st=>'threeStateSensor' ,cyc=>'28:00' ,rxt=>'c:w' ,lst=>'1,4' ,chn=>"Sw:1:3",},
"0060" => {name=>"HM-PB-4DIS-WM" ,st=>'pushButton' ,cyc=>'' ,rxt=>'c' ,lst=>'1,4' ,chn=>"Btn:1:20",}, "0060" => {name=>"HM-PB-4DIS-WM" ,st=>'pushButton' ,cyc=>'' ,rxt=>'c' ,lst=>'1,4' ,chn=>"Btn:1:20",},
"0061" => {name=>"HM-LC-SW4-DR" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'3' ,chn=>"Sw:1:4",}, "0061" => {name=>"HM-LC-SW4-DR" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'3' ,chn=>"Sw:1:4",},
"0062" => {name=>"HM-LC-SW2-DR" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:2",}, "0062" => {name=>"HM-LC-SW2-DR" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:2",},
"0064" => {name=>"DORMA_atent" ,st=>'' ,cyc=>'' ,rxt=>'c' ,lst=>'1,3' ,chn=>"",}, # DORMA Remote 3 buttons "0064" => {name=>"DORMA_atent" ,st=>'' ,cyc=>'' ,rxt=>'c' ,lst=>'1,3' ,chn=>"Btn:1:3",}, # DORMA Remote 3 buttons
"0065" => {name=>"DORMA_BRC-H" ,st=>'' ,cyc=>'' ,rxt=>'c' ,lst=>'1,3' ,chn=>"",}, # Dorma Remote 4 single buttons "0065" => {name=>"DORMA_BRC-H" ,st=>'singleButton' ,cyc=>'' ,rxt=>'c' ,lst=>'1,3' ,chn=>"Btn:1:4",}, # Dorma Remote 4 single buttons
"0066" => {name=>"HM-LC-SW4-WM" ,st=>'switch' ,cyc=>'' ,rxt=>'b' ,lst=>'3' ,chn=>"Sw:1:4",}, "0066" => {name=>"HM-LC-SW4-WM" ,st=>'switch' ,cyc=>'' ,rxt=>'b' ,lst=>'3' ,chn=>"Sw:1:4",},
"0067" => {name=>"HM-LC-Dim1PWM-CV" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:1,Sw1_V:2:3",}, "0067" => {name=>"HM-LC-Dim1PWM-CV" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:1,Sw1_V:2:3",},
"0068" => {name=>"HM-LC-Dim1TPBU-FM" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:1,Sw1_V:2:3",}, "0068" => {name=>"HM-LC-Dim1TPBU-FM" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:1,Sw1_V:2:3",},
@ -163,7 +166,7 @@ my %culHmModel=(
"007E" => {name=>"ROTO_ZEL-STG-RM-DWT-10" ,st=>'remote' ,cyc=>'00:10' ,rxt=>'c' ,lst=>'1,4' ,chn=>"",}, # HM Remote Display 4 buttons Roto "007E" => {name=>"ROTO_ZEL-STG-RM-DWT-10" ,st=>'remote' ,cyc=>'00:10' ,rxt=>'c' ,lst=>'1,4' ,chn=>"",}, # HM Remote Display 4 buttons Roto
"007F" => {name=>"ROTO_ZEL-STG-RM-FST-UP4" ,st=>'pushButton' ,cyc=>'' ,rxt=>'c' ,lst=>'1,4' ,chn=>"",}, # HM Push Button Interface "007F" => {name=>"ROTO_ZEL-STG-RM-FST-UP4" ,st=>'pushButton' ,cyc=>'' ,rxt=>'c' ,lst=>'1,4' ,chn=>"",}, # HM Push Button Interface
"0080" => {name=>"ROTO_ZEL-STG-RM-HS-4" ,st=>'remote' ,cyc=>'' ,rxt=>'c' ,lst=>'1,4' ,chn=>"",}, # HM Remote 4 buttons "0080" => {name=>"ROTO_ZEL-STG-RM-HS-4" ,st=>'remote' ,cyc=>'' ,rxt=>'c' ,lst=>'1,4' ,chn=>"",}, # HM Remote 4 buttons
"0081" => {name=>"ROTO_ZEL-STG-RM-FDK" ,st=>'threeStateSensor' ,cyc=>'28:00' ,rxt=>'c:w' ,lst=>'1,3' ,chn=>"",}, # HM Rotary Handle Sensor "0081" => {name=>"ROTO_ZEL-STG-RM-FDK" ,st=>'threeStateSensor' ,cyc=>'28:00' ,rxt=>'c:w' ,lst=>'1,4' ,chn=>"",}, # HM Rotary Handle Sensor
"0082" => {name=>"Roto_ZEL-STG-RM-FFK" ,st=>'threeStateSensor' ,cyc=>'28:00' ,rxt=>'c:w' ,lst=>'1,4' ,chn=>"",}, # HM Shutter Contact "0082" => {name=>"Roto_ZEL-STG-RM-FFK" ,st=>'threeStateSensor' ,cyc=>'28:00' ,rxt=>'c:w' ,lst=>'1,4' ,chn=>"",}, # HM Shutter Contact
"0083" => {name=>"Roto_ZEL-STG-RM-FSS-UP3" ,st=>'swi' ,cyc=>'' ,rxt=>'c' ,lst=>'4' ,chn=>"",}, # HM Switch Interface 3 switches "0083" => {name=>"Roto_ZEL-STG-RM-FSS-UP3" ,st=>'swi' ,cyc=>'' ,rxt=>'c' ,lst=>'4' ,chn=>"",}, # HM Switch Interface 3 switches
"0084" => {name=>"Schueco_263-160" ,st=>'smokeDetector' ,cyc=>'' ,rxt=>'c:w' ,lst=>'1,4' ,chn=>"",}, # HM SENSOR_FOR_CARBON_DIOXIDE "0084" => {name=>"Schueco_263-160" ,st=>'smokeDetector' ,cyc=>'' ,rxt=>'c:w' ,lst=>'1,4' ,chn=>"",}, # HM SENSOR_FOR_CARBON_DIOXIDE
@ -177,19 +180,27 @@ my %culHmModel=(
"008D" => {name=>"Schueco_263-135" ,st=>'pushButton' ,cyc=>'' ,rxt=>'c:w' ,lst=>'1,3' ,chn=>"",}, # HM Push Button 2 "008D" => {name=>"Schueco_263-135" ,st=>'pushButton' ,cyc=>'' ,rxt=>'c:w' ,lst=>'1,3' ,chn=>"",}, # HM Push Button 2
"008E" => {name=>"Schueco_263-155" ,st=>'remote' ,cyc=>'' ,rxt=>'c' ,lst=>'1,4' ,chn=>"",}, # HM Remote Display 4 buttons "008E" => {name=>"Schueco_263-155" ,st=>'remote' ,cyc=>'' ,rxt=>'c' ,lst=>'1,4' ,chn=>"",}, # HM Remote Display 4 buttons
"008F" => {name=>"Schueco_263-145" ,st=>'pushButton' ,cyc=>'' ,rxt=>'c' ,lst=>'1,4' ,chn=>"",}, # HM Push Button Interface "008F" => {name=>"Schueco_263-145" ,st=>'pushButton' ,cyc=>'' ,rxt=>'c' ,lst=>'1,4' ,chn=>"",}, # HM Push Button Interface
"0090" => {name=>"Schueco_263-162" ,st=>'motionDetector' ,cyc=>'00:30' ,rxt=>'c:w' ,lst=>'1,3' ,chn=>"",}, # HM radio-controlled motion detector "0090" => {name=>"Schueco_263-162" ,st=>'motionDetector' ,cyc=>'00:30' ,rxt=>'c:w:l' ,lst=>'1,3' ,chn=>"",}, # HM radio-controlled motion detector
"0092" => {name=>"Schueco_263-144" ,st=>'switch' ,cyc=>'' ,rxt=>'c' ,lst=>'4' ,chn=>"",}, # HM Switch Interface 3 switches "0092" => {name=>"Schueco_263-144" ,st=>'switch' ,cyc=>'' ,rxt=>'c' ,lst=>'4' ,chn=>"",}, # HM Switch Interface 3 switches
"0093" => {name=>"Schueco_263-158" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w' ,lst=>'p' ,chn=>"",}, # "0093" => {name=>"Schueco_263-158" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w' ,lst=>'p' ,chn=>"",}, #
"0094" => {name=>"Schueco_263-157" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w' ,lst=>'p' ,chn=>"",}, # "0094" => {name=>"IS-WDS-TH-OD-S-R3" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w' ,lst=>'p' ,chn=>"",}, #
"0095" => {name=>"HM-CC-RT-DN" ,st=>'thermostat' ,cyc=>'' ,rxt=>'c:w' ,lst=>'3:3p.6p,7:0' ,chn=>"Weather:1:1,Climate:2:2,WindowRec:3:3,ClimRT_tr:4:4,ClimRT_r:5:5,rCtrl:6:6"}, #
"0096" => {name=>"WDF-solar" ,st=>'blindActuatorSol' ,cyc=>'' ,rxt=>'b' ,lst=>'1,3' ,chn=>"win:1:1,blind_2:3",}, #
"009B" => {name=>"Schueco_263-xxx" ,st=>'tipTronic' ,cyc=>'28:00' ,rxt=>'c:w' ,lst=>'1:1.2,3:1p.3p',chn=>"act:1:1,sen:2:2,sec:3:3",}, #
"009F" => {name=>"HM-Sen-Wa-Od" ,st=>'sensor' ,cyc=>'28:00' ,rxt=>'c:w' ,lst=>'1,4' ,chn=>"",}, #capacitive filling level sensor "009F" => {name=>"HM-Sen-Wa-Od" ,st=>'sensor' ,cyc=>'28:00' ,rxt=>'c:w' ,lst=>'1,4' ,chn=>"",}, #capacitive filling level sensor
"00A0" => {name=>"HM-RC-4-2" ,st=>'remote' ,cyc=>'' ,rxt=>'c' ,lst=>'1,4' ,chn=>"Btn:1:4",}, "00A0" => {name=>"HM-RC-4-2" ,st=>'remote' ,cyc=>'' ,rxt=>'c:l' ,lst=>'1,4' ,chn=>"Btn:1:4",},
"00A1" => {name=>"HM-LC-SW1-PL2" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'3' ,chn=>"",}, # "00A1" => {name=>"HM-LC-SW1-PL2" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'3' ,chn=>"",}, #
"00A2" => {name=>"ROTO_ZEL-STG-RM-FZS-2" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}, #radio-controlled socket adapter switch actuator 1-channel "00A2" => {name=>"ROTO_ZEL-STG-RM-FZS-2" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}, #radio-controlled socket adapter switch actuator 1-channel
"00A3" => {name=>"HM-LC-Dim1L-Pl-2" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}, "00A3" => {name=>"HM-LC-Dim1L-Pl-2" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",},
"00A4" => {name=>"HM-LC-Dim1T-Pl-2" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}, "00A4" => {name=>"HM-LC-Dim1T-Pl-2" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",},
"00A5" => {name=>"HM-RC-Sec4-2" ,st=>'remote' ,cyc=>'' ,rxt=>'c:l' ,lst=>'1,4' ,chn=>"Btn:1:2,BTN_T:3:1,BTN_A:4:1",},#only 1 and 2 canbe peered???
"00A6" => {name=>"HM-RC-Key4-2" ,st=>'remote' ,cyc=>'' ,rxt=>'c:l' ,lst=>'1,4' ,chn=>"Btn:1:2,BTN_T:3:1,BTN_A:4:1",},#only 1 and 2 canbe peered???
"00A7" => {name=>"HM-Sen-RD-O" ,st=>'' ,cyc=>'' ,rxt=>'' ,lst=>'1:1,4:1' ,chn=>"Rain:1:1,Sw:2:2",}, "00A7" => {name=>"HM-Sen-RD-O" ,st=>'' ,cyc=>'' ,rxt=>'' ,lst=>'1:1,4:1' ,chn=>"Rain:1:1,Sw:2:2",},
"00A8" => {name=>"HM-WDS30-OT2-SM" ,st=>'THSensor' ,cyc=>'00:05' ,rxt=>'c:w' ,lst=>'p' ,chn=>"Th:1:2",}, "00A8" => {name=>"HM-WDS30-OT2-SM" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w' ,lst=>'p' ,chn=>"Th:1:4,Weather:5:5",},
"00A9" => {name=>"HM-PB-6-WM55" ,st=>'remote' ,cyc=>'' ,rxt=>'c' ,lst=>'1,4' ,chn=>"Btn:1:6",}, "00A9" => {name=>"HM-PB-6-WM55" ,st=>'remote' ,cyc=>'' ,rxt=>'c' ,lst=>'1,4' ,chn=>"Btn:1:6",},
"00AB" => {name=>"HM-LC-SW4-BA-PCB" ,st=>'switch' ,cyc=>'' ,rxt=>'b' ,lst=>'1,3' ,chn=>"Sw:1:4",},
"00AF" => {name=>"HM-OU-CM-PCB" ,st=>'outputUnit' ,cyc=>'' ,rxt=>'' ,lst=>'3' ,chn=>"",},
"00B2" => {name=>"HM-SEC-WDS-2" ,st=>'threeStateSensor' ,cyc=>'28:00' ,rxt=>'c:w' ,lst=>'1,4' ,chn=>"",},
#263 167 HM Smoke Detector Schueco #263 167 HM Smoke Detector Schueco
#"HM-RC-Key4-2" #"HM-RC-Key4-2"
#"HM-RC-Sec4-2" #"HM-RC-Sec4-2"
@ -282,6 +293,9 @@ my %culHmRegDefShLg = (# register that are available for short AND long button p
DimElsJtRampOn =>{a=> 41.0,s=>0.4,l=>3,min=>0 ,max=>6 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"else Jump from rampOn" ,lit=>{no=>0,dlyOn=>1,rampOn=>2,on=>3,dlyOff=>4,rampOff=>5,off=>6}}, DimElsJtRampOn =>{a=> 41.0,s=>0.4,l=>3,min=>0 ,max=>6 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"else Jump from rampOn" ,lit=>{no=>0,dlyOn=>1,rampOn=>2,on=>3,dlyOff=>4,rampOff=>5,off=>6}},
DimElsJtRampOff =>{a=> 41.4,s=>0.4,l=>3,min=>0 ,max=>6 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"else Jump from rampOff" ,lit=>{no=>0,dlyOn=>1,rampOn=>2,on=>3,dlyOff=>4,rampOff=>5,off=>6}}, DimElsJtRampOff =>{a=> 41.4,s=>0.4,l=>3,min=>0 ,max=>6 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"else Jump from rampOff" ,lit=>{no=>0,dlyOn=>1,rampOn=>2,on=>3,dlyOff=>4,rampOff=>5,off=>6}},
ttJtOn =>{a=> 11.0,s=>0.4,l=>3,min=>0 ,max=>6 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"Jump from on" ,lit=>{no=>0,on=>2,off=>5}},
ttJtOff =>{a=> 11.4,s=>0.4,l=>3,min=>0 ,max=>6 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"Jump from off" ,lit=>{no=>0,on=>2,off=>5}},
SwJtOn =>{a=> 11.0,s=>0.4,l=>3,min=>0 ,max=>6 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"Jump from on" ,lit=>{no=>0,dlyOn=>1,on=>3,dlyOff=>4,off=>6}}, SwJtOn =>{a=> 11.0,s=>0.4,l=>3,min=>0 ,max=>6 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"Jump from on" ,lit=>{no=>0,dlyOn=>1,on=>3,dlyOff=>4,off=>6}},
SwJtOff =>{a=> 11.4,s=>0.4,l=>3,min=>0 ,max=>6 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"Jump from off" ,lit=>{no=>0,dlyOn=>1,on=>3,dlyOff=>4,off=>6}}, SwJtOff =>{a=> 11.4,s=>0.4,l=>3,min=>0 ,max=>6 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"Jump from off" ,lit=>{no=>0,dlyOn=>1,on=>3,dlyOff=>4,off=>6}},
SwJtDlyOn =>{a=> 12.0,s=>0.4,l=>3,min=>0 ,max=>6 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"Jump from delayOn" ,lit=>{no=>0,dlyOn=>1,on=>3,dlyOff=>4,off=>6}}, SwJtDlyOn =>{a=> 12.0,s=>0.4,l=>3,min=>0 ,max=>6 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"Jump from delayOn" ,lit=>{no=>0,dlyOn=>1,on=>3,dlyOff=>4,off=>6}},
@ -290,10 +304,10 @@ my %culHmRegDefShLg = (# register that are available for short AND long button p
KeyJtOn =>{a=> 11.0,s=>0.4,l=>3,min=>0 ,max=>7 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"Jump from on" ,lit=>{no=>0,dlyUnlock=>1,rampUnlock=>2,unLock=>3,dlyLock=>4,rampLock=>5,lock=>6,open=>8}}, KeyJtOn =>{a=> 11.0,s=>0.4,l=>3,min=>0 ,max=>7 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"Jump from on" ,lit=>{no=>0,dlyUnlock=>1,rampUnlock=>2,unLock=>3,dlyLock=>4,rampLock=>5,lock=>6,open=>8}},
KeyJtOff =>{a=> 11.4,s=>0.4,l=>3,min=>0 ,max=>7 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"Jump from off" ,lit=>{no=>0,dlyUnlock=>1,rampUnlock=>2,unLock=>3,dlyLock=>4,rampLock=>5,lock=>6,open=>8}}, KeyJtOff =>{a=> 11.4,s=>0.4,l=>3,min=>0 ,max=>7 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"Jump from off" ,lit=>{no=>0,dlyUnlock=>1,rampUnlock=>2,unLock=>3,dlyLock=>4,rampLock=>5,lock=>6,open=>8}},
WinJtOn =>{a=> 11.0,s=>0.4,l=>3,min=>0 ,max=>9 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"Jump from off" ,lit=>{no=>0,rampOnDly=>1,rampOn=>2,on=>3,ramoOffDly=>4,rampOff=>5,off=>6,rampOnFast=>8,rampOffFast=>9}}, WinJtOn =>{a=> 11.0,s=>0.4,l=>3,min=>0 ,max=>9 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"Jump from off" ,lit=>{no=>0,rampOnDly=>1,rampOn=>2,on=>3,rampOffDly=>4,rampOff=>5,off=>6,rampOnFast=>8,rampOffFast=>9}},
WinJtOff =>{a=> 11.4,s=>0.4,l=>3,min=>0 ,max=>9 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"Jump from off" ,lit=>{no=>0,rampOnDly=>1,rampOn=>2,on=>3,ramoOffDly=>4,rampOff=>5,off=>6,rampOnFast=>8,rampOffFast=>9}}, WinJtOff =>{a=> 11.4,s=>0.4,l=>3,min=>0 ,max=>9 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"Jump from off" ,lit=>{no=>0,rampOnDly=>1,rampOn=>2,on=>3,rampOffDly=>4,rampOff=>5,off=>6,rampOnFast=>8,rampOffFast=>9}},
WinJtRampOn =>{a=> 13.0,s=>0.4,l=>3,min=>0 ,max=>9 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"Jump from off" ,lit=>{no=>0,rampOnDly=>1,rampOn=>2,on=>3,ramoOffDly=>4,rampOff=>5,off=>6,rampOnFast=>8,rampOffFast=>9}}, WinJtRampOn =>{a=> 13.0,s=>0.4,l=>3,min=>0 ,max=>9 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"Jump from off" ,lit=>{no=>0,rampOnDly=>1,rampOn=>2,on=>3,rampOffDly=>4,rampOff=>5,off=>6,rampOnFast=>8,rampOffFast=>9}},
WinJtRampOff =>{a=> 13.4,s=>0.4,l=>3,min=>0 ,max=>9 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"Jump from off" ,lit=>{no=>0,rampOnDly=>1,rampOn=>2,on=>3,ramoOffDly=>4,rampOff=>5,off=>6,rampOnFast=>8,rampOffFast=>9}}, WinJtRampOff =>{a=> 13.4,s=>0.4,l=>3,min=>0 ,max=>9 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"Jump from off" ,lit=>{no=>0,rampOnDly=>1,rampOn=>2,on=>3,rampOffDly=>4,rampOff=>5,off=>6,rampOnFast=>8,rampOffFast=>9}},
CtRampOn =>{a=> 1.0,s=>0.4,l=>3,min=>0 ,max=>5 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"Jmp on condition from rampOn" ,lit=>{geLo=>0,geHi=>1,ltLo=>2,ltHi=>3,between=>4,outside=>5}}, CtRampOn =>{a=> 1.0,s=>0.4,l=>3,min=>0 ,max=>5 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"Jmp on condition from rampOn" ,lit=>{geLo=>0,geHi=>1,ltLo=>2,ltHi=>3,between=>4,outside=>5}},
CtRampOff =>{a=> 1.4,s=>0.4,l=>3,min=>0 ,max=>5 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"Jmp on condition from rampOff" ,lit=>{geLo=>0,geHi=>1,ltLo=>2,ltHi=>3,between=>4,outside=>5}}, CtRampOff =>{a=> 1.4,s=>0.4,l=>3,min=>0 ,max=>5 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"Jmp on condition from rampOff" ,lit=>{geLo=>0,geHi=>1,ltLo=>2,ltHi=>3,between=>4,outside=>5}},
@ -344,7 +358,8 @@ my %culHmRegDefine = (
batDefectLimit =>{a=> 19.0,s=>1.0,l=>0,min=>0.1,max=>2 ,c=>'factor' ,f=>100 ,u=>'Ohm' ,d=>1,t=>"batterie defect detection"}, batDefectLimit =>{a=> 19.0,s=>1.0,l=>0,min=>0.1,max=>2 ,c=>'factor' ,f=>100 ,u=>'Ohm' ,d=>1,t=>"batterie defect detection"},
transmDevTryMax =>{a=> 20.0,s=>1.0,l=>0,min=>1 ,max=>10 ,c=>'' ,f=>'' ,u=>'' ,d=>0,t=>"max message re-transmit"}, transmDevTryMax =>{a=> 20.0,s=>1.0,l=>0,min=>1 ,max=>10 ,c=>'' ,f=>'' ,u=>'' ,d=>0,t=>"max message re-transmit"},
localResDis =>{a=> 24.0,s=>1.0,l=>0,min=>1 ,max=>1 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"local reset disable" ,lit=>{off=>0,on=>1}}, localResDis =>{a=> 24.0,s=>1.0,l=>0,min=>1 ,max=>1 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"local reset disable" ,lit=>{off=>0,on=>1}},
regL0_1b =>{a=> 27.0,s=>1.0,l=>0,min=>0 ,max=>255 ,c=>'' ,f=>'' ,u=>'' ,d=>0,t=>"unknown test on own risk"}, paramSel =>{a=> 27.0,s=>1.0,l=>0,min=>0 ,max=>4 ,c=>'lit' ,f=>'' ,u=>'' ,d=>1,t=>"data transfered to peer" ,lit=>{off=>0,T1=>1,T2=>2,T1_T2=>3,T2_T1=>4}},
RS485IdleTime =>{a=> 29.0,s=>1.0,l=>0,min=>0 ,max=>255 ,c=>'' ,f=>'' ,u=>'s' ,d=>0,t=>"Idle Time"},
#un-identified List0 #un-identified List0
# addr Dec!! # addr Dec!!
# SEC-WM55 02:01 (AES on?) # SEC-WM55 02:01 (AES on?)
@ -528,7 +543,6 @@ my %culHmRegType = (
lgMultiExec =>1 lgMultiExec =>1
}, },
dimmer =>{transmitTryMax =>1,statusInfoMinDly=>1,statusInfoRandom=>1,powerUpAction =>1, dimmer =>{transmitTryMax =>1,statusInfoMinDly=>1,statusInfoRandom=>1,powerUpAction =>1,
OnDly =>1,OnTime =>1,OffDly =>1,OffTime =>1, OnDly =>1,OnTime =>1,OffDly =>1,OffTime =>1,
OffDlyBlink =>1,OnLvlPrio =>1,OnDlyMode =>1, OffDlyBlink =>1,OnLvlPrio =>1,OnDlyMode =>1,
ActionTypeDim =>1,OnTimeMode =>1,OffTimeMode =>1, ActionTypeDim =>1,OnTimeMode =>1,OffTimeMode =>1,
@ -569,6 +583,7 @@ my %culHmRegType = (
,transmitTryMax =>1, ,transmitTryMax =>1,
peerNeedsBurst =>1,expectAES =>1 peerNeedsBurst =>1,expectAES =>1
}, },
tipTronic =>{cyclicInfoMsg =>1,cyclicInfoMsgDis=>1,localResDis =>1,RS485IdleTime =>1,}
); );
#clones - - - - - - - - - - - - - - - #clones - - - - - - - - - - - - - - -
$culHmRegType{pushButton} = $culHmRegType{remote}; $culHmRegType{pushButton} = $culHmRegType{remote};
@ -628,6 +643,14 @@ my %culHmRegModel = (
CtOn =>1,CtDlyOn =>1,CtOff =>1,CtDlyOff =>1, CtOn =>1,CtDlyOn =>1,CtOff =>1,CtDlyOff =>1,
ActionType =>1,ActNum =>1,lgMultiExec =>1}, ActionType =>1,ActNum =>1,lgMultiExec =>1},
"HM-OU-CF-PL" =>{ActTypeOuCf =>1,ActNum =>1}, "HM-OU-CF-PL" =>{ActTypeOuCf =>1,ActNum =>1},
"HM-OU-CM-PCB" =>{localResetDis =>1,
OnTime =>1,OffTime =>1,OnDly =>1,OffDly =>1,
OnTimeMode =>1,OffTimeMode =>1,
SwJtOn =>1,SwJtOff =>1,SwJtDlyOn =>1,SwJtDlyOff =>1,
CtValLo =>1,CtValHi =>1,
CtOn =>1,CtDlyOn =>1,CtOff =>1,CtDlyOff =>1,
ActionType =>1,
ActTypeMp3 =>1,ActNum =>1,Intense =>1,lgMultiExec =>1},
"HM-SEC-MDIR" =>{ sabotageMsg =>1}, "HM-SEC-MDIR" =>{ sabotageMsg =>1},
"HM-CC-TC" =>{backlOnTime =>1,backlOnMode =>1,btnLock =>1}, "HM-CC-TC" =>{backlOnTime =>1,backlOnMode =>1,btnLock =>1},
"HM-CC-SCD" =>{peerNeedsBurst =>1,expectAES =>1, "HM-CC-SCD" =>{peerNeedsBurst =>1,expectAES =>1,
@ -667,9 +690,9 @@ my %culHmRegModel = (
fillLvlUpThr =>1,fillLvlLoThr =>1, fillLvlUpThr =>1,fillLvlLoThr =>1,
expectAES =>1,peerNeedsBurst =>1}, expectAES =>1,peerNeedsBurst =>1},
"HM-WDS10-TH-O" =>{burstRx =>1}, "HM-WDS10-TH-O" =>{burstRx =>1},
"HM-WDS30-OT2-SM" =>{burstRx =>1,cyclicInfoMsgDis=>1,localResDis =>1,regL0_1b =>1}, "HM-WDS30-OT2-SM" =>{burstRx =>1,cyclicInfoMsgDis=>1,localResDis =>1,paramSel =>1},
"HM-RC-4-2" =>{localResDis =>1},
); );
#clones - - - - - - - - - - - - - - - #clones - - - - - - - - - - - - - - -
$culHmRegModel{"HM-RC-12-B"} = $culHmRegModel{"HM-RC-12"}; $culHmRegModel{"HM-RC-12-B"} = $culHmRegModel{"HM-RC-12"};
$culHmRegModel{"HM-RC-12-SW"} = $culHmRegModel{"HM-RC-12"}; $culHmRegModel{"HM-RC-12-SW"} = $culHmRegModel{"HM-RC-12"};
@ -694,6 +717,13 @@ $culHmRegModel{"HM-WDS40-TH-I"} = $culHmRegModel{"HM-WDS10-TH-O"};
$culHmRegModel{"Schueco_263-157"} = $culHmRegModel{"HM-WDS10-TH-O"}; $culHmRegModel{"Schueco_263-157"} = $culHmRegModel{"HM-WDS10-TH-O"};
$culHmRegModel{"IS-WDS-TH-OD-S-R3"}= $culHmRegModel{"HM-WDS10-TH-O"}; $culHmRegModel{"IS-WDS-TH-OD-S-R3"}= $culHmRegModel{"HM-WDS10-TH-O"};
$culHmRegModel{"HM-LC-Sw1PBU-FM"} = $culHmRegModel{"HM-LC-Bl1PBU-FM"};
$culHmRegModel{"HM-RC-Sec4-2"} = $culHmRegModel{"HM-RC-4-2"};
$culHmRegModel{"HM-RC-Key4-2"} = $culHmRegModel{"HM-RC-4-2"};
$culHmRegModel{"HM-LC-SW4-BA-PCB"} = $culHmRegModel{"HM-LC-SW1-BA-PCB"};
my %culHmRegChan = (# if channelspecific then enter them here my %culHmRegChan = (# if channelspecific then enter them here
"HM-CC-TC02" =>{displayMode =>1,displayTemp =>1,displayTempUnit =>1, "HM-CC-TC02" =>{displayMode =>1,displayTemp =>1,displayTempUnit =>1,
controlMode =>1,decalcDay =>1, controlMode =>1,decalcDay =>1,
@ -714,12 +744,33 @@ my %culHmRegChan = (# if channelspecific then enter them here
WinJtOn =>1,WinJtOff =>1,WinJtRampOn =>1,WinJtRampOff =>1, WinJtOn =>1,WinJtOff =>1,WinJtRampOn =>1,WinJtRampOff =>1,
OnTime =>1,OffTime =>1,OffLevelKm =>1, OnTime =>1,OffTime =>1,OffLevelKm =>1,
OnLevelKm =>1,OnRampOnSp =>1,OnRampOffSp =>1 OnLevelKm =>1,OnRampOnSp =>1,OnRampOffSp =>1
} },
"WDF-solar01" =>{WinJtOn =>1,WinJtOff =>1,WinJtRampOn =>1,WinJtRampOff =>1,
OffLevel =>1,OnLevel =>1,
CtValLo =>1,CtValHi =>1,
CtOn =>1,CtOff =>1,CtRampOn =>1,CtRampOff =>1,
OnRampOnSp =>1,OnRampOffSp =>1,
OnTime =>1,OffTime =>1
},
"Schueco_263-xxx01" =>{statusInfoMinDly=>1,statusInfoRandom=>1,
#no long here!!!
shCtValLo =>1,shCtValHi =>1,
shCtOn =>1,shCtDlyOn =>1,shCtOff =>1,shCtDlyOff =>1,
shOnTime =>1,shOffTime =>1,shOnDly =>1,shOffDly =>1,
shActionTypeDim =>1,shOnTimeMode =>1,shOffTimeMode =>1,
shDimJtOn =>1,shDimJtOff =>1,shDimJtDlyOn =>1,
shDimJtDlyOff =>1,shDimJtRampOn =>1,shDimJtRampOff =>1,
shOnLevel =>1
},
"Schueco_263-xxx02" =>{transmitTryMax =>1,eventDlyTime =>1},
"Schueco_263-xxx03" =>{ttJtOn =>1,ttJtOff =>1},
); );
#clones - - - - - - - - - - - - - - - #clones - - - - - - - - - - - - - - -
$culHmRegChan{"HM-RC-19-B12"} = $culHmRegChan{"HM-RC-1912"}; $culHmRegChan{"HM-RC-19-B12"} = $culHmRegChan{"HM-RC-1912"};
$culHmRegChan{"HM-RC-19-SW12"} = $culHmRegChan{"HM-RC-1912"}; $culHmRegChan{"HM-RC-19-SW12"} = $culHmRegChan{"HM-RC-1912"};
$culHmRegChan{"WDF-solar02"} = $culHmRegType{"dimmer"};
##--------------- Conversion routines for register settings ##--------------- Conversion routines for register settings
##############################---get---######################################## ##############################---get---########################################
@ -860,10 +911,13 @@ my %culHmChanSets = (
"HM-SEC-WIN01" =>{ stop =>"", "HM-SEC-WIN01" =>{ stop =>"",
level =>"<level> <relockDly> <speed>..."}, level =>"<level> <relockDly> <speed>..."},
"HM-OU-CFM-PL01" =>{ led => "<color>[,<color>...] [<repeat>]"}, "HM-OU-CFM-PL01" =>{ led => "<color>[,<color>...] [<repeat>]"},
"HM-OU-CFM-PL02" =>{ playTone => "<MP3No>[,<MP3No>...] [<repeat>]"} "HM-OU-CFM-PL02" =>{ playTone => "<MP3No>[,<MP3No>...] [<repeat>]"},
"WDF-solar01" =>{ peerChan =>"<btnNumber> <actChn> ... single [set|unset] [actor|remote|both]"}
); );
# clones- - - - - - - - - - - - - - - - - # clones- - - - - - - - - - - - - - - - -
#$culHmChanSets{"HM-OU-CF-PL02"} = $culHmChanSets{"HM-OU-CF-PL01"}; #$culHmChanSets{"HM-OU-CF-PL02"} = $culHmChanSets{"HM-OU-CF-PL01"};
$culHmChanSets{"WDF-solar02"} = $culHmSubTypeSets{"blindActuator"};
# RC send BCAST to specific address. Is the meaning understood? # RC send BCAST to specific address. Is the meaning understood?
my @culHmCmdFlags = ("WAKEUP", "WAKEMEUP", "CFG", "Bit3", my @culHmCmdFlags = ("WAKEUP", "WAKEMEUP", "CFG", "Bit3",