set register for List 0, improve HMLAN msg interworking, cleanup register definition

git-svn-id: https://svn.fhem.de/fhem/trunk@3296 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
martinp876 2013-06-17 17:44:54 +00:00
parent d83190002e
commit 384f72f334
3 changed files with 176 additions and 164 deletions

View File

@ -542,7 +542,9 @@ sub HMLAN_secSince2000() {#####################################################
<h3>HMLAN</h3> <h3>HMLAN</h3>
<ul> <ul>
<tr><td> <tr><td>
The HMLAN is the fhem module for the eQ-3 HomeMatic LAN Configurator. The HMLAN is the fhem module for the eQ-3 HomeMatic LAN Configurator.<br>
A description on how to use <a href="https://git.zerfleddert.de/cgi-bin/gitweb.cgi/hmcfgusb">hmCfgUsb</a>
can be found follwing the link.
<br><br> <br><br>
The fhem module will emulate a CUL device, so the <a href="#CUL_HM">CUL_HM</a> The fhem module will emulate a CUL device, so the <a href="#CUL_HM">CUL_HM</a>
module can be used to define HomeMatic devices.<br><br> module can be used to define HomeMatic devices.<br><br>

View File

@ -2041,11 +2041,10 @@ sub CUL_HM_Set($@) {
#read full 8 bit!!! #read full 8 bit!!!
my $rName = CUL_HM_id2Name($dst.$lChn); my $rName = CUL_HM_id2Name($dst.$lChn);
$rName =~ s/_chn:.*//; $rName =~ s/_chn:.*//;
my $curVal = CUL_HM_getRegFromStore($rName, my $curVal = CUL_HM_getRegFromStore($rName,$addr,$list,$peerId.$peerChn);
$addr,$list,$peerId.$peerChn); return "cannot calculate value. Please issue set $name getConfig first"
return "cannot calculate value. Please issue set $name getConfig first" if ($curVal !~ m/^(set_|)(\d+)$/);
if (!$curVal ||$curVal eq "invalid"); $curVal = $2; # we expect one byte in int, strap 'set_' possibly
$curVal =~ s/set_//; # set is not relevant, we take it as given
$data = ($curVal & (~($mask<<$bit)))|($data<<$bit); $data = ($curVal & (~($mask<<$bit)))|($data<<$bit);
$addrData.=sprintf("%02X%02X",$addr,$data); $addrData.=sprintf("%02X%02X",$addr,$data);
} }
@ -2122,7 +2121,7 @@ sub CUL_HM_Set($@) {
} }
elsif($cmd =~ m/^(up|down|pct)$/) { ######################################### elsif($cmd =~ m/^(up|down|pct)$/) { #########################################
my ($lvl,$tval,$rval) = ($a[2],"",""); my ($lvl,$tval,$rval) = ($a[2],"","");
if ($cmd ne "pct"){#dim [<changeValue>|up|down] ... [ontime] [ramptime] if ($cmd ne "pct"){#dim [<changeValue>] ... [ontime] [ramptime]
$lvl = 10 if (!defined $a[2]); #set default step $lvl = 10 if (!defined $a[2]); #set default step
$lvl = -1*$lvl if ($cmd eq "down"); $lvl = -1*$lvl if ($cmd eq "down");
$lvl += CUL_HM_getChnLvl($name); $lvl += CUL_HM_getChnLvl($name);
@ -3232,27 +3231,28 @@ sub CUL_HM_getRegFromStore($$$$@) {#read a register from backup data
$size = int($size)*8 + ($size*10)%10; $size = int($size)*8 + ($size*10)%10;
$conversion = $reg->{c}; #unconvert formula $conversion = $reg->{c}; #unconvert formula
$factor = $reg->{f}; $factor = $reg->{f};
$unit = $reg->{u}; $unit = " ".$reg->{u};
} }
$regLN = ((CUL_HM_getAttrInt($name,"expert") == 2)?"":".")
if(!$regLN){
$regLN = ((CUL_HM_getAttrInt($name,"expert") == 2)?"":".")
.sprintf("RegL_%02X:",$list) .sprintf("RegL_%02X:",$list)
.($peerId?CUL_HM_peerChName($peerId, .($peerId?CUL_HM_peerChName($peerId,
substr(CUL_HM_name2Id($name),0,6), substr(CUL_HM_name2Id($name),0,6),
CUL_HM_IOid($hash)):"") CUL_HM_IOid($hash)):"");
if(!$regLN); $regLN =~ s/broadcast//;
}
my $data=0; my $data=0;
my $convFlg = "";# confirmation flag - indicates data not confirmed by device my $convFlg = "";# confirmation flag - indicates data not confirmed by device
for (my $size2go = $size;$size2go>0;$size2go -=8){ for (my $size2go = $size;$size2go>0;$size2go -=8){
my $addrS = sprintf("%02X",$addr); my $addrS = sprintf("%02X",$addr);
my ($dReadS,$dReadR) = (undef,""); my ($dReadS,$dReadR) = (undef,"");
$dReadS = $1 if( $hash->{helper}{shadowReg} $dReadS = $1 if( $hash->{helper}{shadowReg}
&& $hash->{helper}{shadowReg}{$regLN} && $hash->{helper}{shadowReg}{$regLN}
&& $hash->{helper}{shadowReg}{$regLN} =~ m/$addrS:(..)/); && $hash->{helper}{shadowReg}{$regLN} =~ m/$addrS:(..)/);
$dReadR = $1 if( $hash->{READINGS}{$regLN} $dReadR = $1 if( $hash->{READINGS}{$regLN}
&&$hash->{READINGS}{$regLN}{VAL} =~ m/$addrS:(..)/); &&$hash->{READINGS}{$regLN}{VAL} =~ m/$addrS:(..)/);
my $dRead = $dReadR; my $dRead = $dReadR;
if (defined $dReadS){ if (defined $dReadS){
$convFlg = "set_" if ($dReadR ne $dReadS); $convFlg = "set_" if ($dReadR ne $dReadS);
@ -3270,16 +3270,12 @@ sub CUL_HM_getRegFromStore($$$$@) {#read a register from backup data
if (!$conversion){ ;# do nothing if (!$conversion){ ;# do nothing
} elsif($conversion eq "factor"){$data /= $factor; } elsif($conversion eq "factor"){$data /= $factor;
} elsif($conversion eq "lit" ){$data = $reg->{litInv}{$data}?$reg->{litInv}{$data}:"undef lit"; } elsif($conversion eq "lit" ){$data = $reg->{litInv}{$data}?$reg->{litInv}{$data}:"undef lit";
# } elsif(defined($reg->{lit})) {
# foreach (keys%{$reg->{lit}}){
# if ($data == $reg->{lit}{$_}){$data = $_; last; }
# }
} elsif($conversion eq "fltCvT"){$data = CUL_HM_CvTflt($data); } elsif($conversion eq "fltCvT"){$data = CUL_HM_CvTflt($data);
} elsif($conversion eq "m10s3" ){$data = ($data+3)/10; } elsif($conversion eq "m10s3" ){$data = ($data+3)/10;
} elsif($conversion eq "hex" ){$data = sprintf("0x%X",$data); } elsif($conversion eq "hex" ){$data = sprintf("0x%X",$data);
} else { return " conversion undefined - please contact admin"; } else { return " conversion undefined - please contact admin";
} }
return $convFlg.$data.' '.$unit; return $convFlg.$data.$unit;
} }
sub CUL_HM_updtRegDisp($$$) { sub CUL_HM_updtRegDisp($$$) {
my($hash,$list,$peerId)=@_; my($hash,$list,$peerId)=@_;
@ -4006,9 +4002,6 @@ sub CUL_HM_putHash($) {# provide data for HMinfo
Universal commands (available to most hm devices): Universal commands (available to most hm devices):
<ul> <ul>
<li><B>actiondetect &lt;[hhh:mm]|off&gt;</B><a name="CUL_HMactiondetect"></a><br>
outdated command. This functionality is started by entering or modify of the attribute actCycle. see attribure section for details<br>
</li>
<li><B>clear &lt;[readings|msgEvents]&gt;</B><a name="CUL_HMclear"></a><br> <li><B>clear &lt;[readings|msgEvents]&gt;</B><a name="CUL_HMclear"></a><br>
A set of variables can be removed.<br> A set of variables can be removed.<br>
<ul> <ul>
@ -4082,9 +4075,11 @@ sub CUL_HM_putHash($) {# provide data for HMinfo
Read serial number from device and write it to attribute serialNr. Read serial number from device and write it to attribute serialNr.
</li> </li>
<li><B>inhibit [on|off]</B><br> <li><B>inhibit [on|off]</B><br>
Block / unblock all directly peered remotes and the hardware buttons of the Block / unblock all changes to the actor channel, i.e. actor state is frozen
device. If inhibit set on, the channel status can be controlled only by untill inhibit is set off again. Inhibit can be executed on any actor channel
FHEM.<br><br> but obviously not on sensors - would not make any sense.<br>
Practically it can be used to suspend any notifies as well as peered channel action
temporarily without the need to delete them. <br>
Examples: Examples:
<ul><code> <ul><code>
# Block operation<br> # Block operation<br>
@ -4200,17 +4195,17 @@ sub CUL_HM_putHash($) {# provide data for HMinfo
</ul> </ul>
<br> <br>
<B>subType (i.e family) dependent commands:</B> <B>subType dependent commands:</B>
<ul> <ul>
<br> <br>
<li>switch <li>switch
<ul> <ul>
<li><B>on</B> - set the switch on</li> <li><B>on</B> <a name="CUL_HMon"> </a> - set level to 100%</li>
<li><B>off</B> - set the switch off</li> <li><B>off</B><a name="CUL_HMoff"></a> - set level to 0%</li>
<li><B>on-for-timer &lt;sec&gt;</B><a name="CUL_HMonForTimer"></a> - <li><B>on-for-timer &lt;sec&gt;</B><a name="CUL_HMonForTimer"></a> -
set the switch on for the given seconds [0-85825945].<br> Note: set the switch on for the given seconds [0-85825945].<br> Note:
off-for-timer like FS20 is not supported. It needs to be programmed off-for-timer like FS20 is not supported. It may to be programmed
on link level.</li> thru channel register.</li>
<li><B>on-till &lt;time&gt;</B><a name="CUL_HMonTill"></a> - set the switch on for the given end time.<br> <li><B>on-till &lt;time&gt;</B><a name="CUL_HMonTill"></a> - set the switch on for the given end time.<br>
<ul><code>set &lt;name&gt; on-till 20:32:10<br></code></ul> <ul><code>set &lt;name&gt; on-till 20:32:10<br></code></ul>
Currently a max of 24h is supported with endtime.<br> Currently a max of 24h is supported with endtime.<br>
@ -4221,7 +4216,8 @@ sub CUL_HM_putHash($) {# provide data for HMinfo
[on|off] is relevant only for devices with direct buttons per channel. [on|off] is relevant only for devices with direct buttons per channel.
Those are available for dimmer and blind-actor, usually not for switches<br> Those are available for dimmer and blind-actor, usually not for switches<br>
</li> </li>
<li><B>toggle</B> - toggle the switch.</li> <li><B>toggle</B><a name="CUL_HMtoggle"></a> - toggle the Actor. It will switch from any current
level to off or from off to 100%</li>
</ul> </ul>
<br> <br>
</li> </li>
@ -4229,7 +4225,7 @@ sub CUL_HM_putHash($) {# provide data for HMinfo
Dimmer may support virtual channels. Those are autocrated if applicable. Usually there are 2 virtual channels Dimmer may support virtual channels. Those are autocrated if applicable. Usually there are 2 virtual channels
in addition to the primary channel. Virtual dimmer channels are inactive by default but can be used in in addition to the primary channel. Virtual dimmer channels are inactive by default but can be used in
in parallel to the primay channel to control light. <br> in parallel to the primay channel to control light. <br>
Virtual channels have default naming SW<channel>_V<no>. e.g. Dimmer_SW1_V1 and Dimmer_SW1_V2.<br> Virtual channels have default naming SW&lt;channel&gt;_V&lt;no&gt;. e.g. Dimmer_SW1_V1 and Dimmer_SW1_V2.<br>
Dimmer virtual channels are completely different from FHEM virtual buttons and actors but Dimmer virtual channels are completely different from FHEM virtual buttons and actors but
are part of the HM device. Documentation and capabilities for virtual channels is out of scope.<br> are part of the HM device. Documentation and capabilities for virtual channels is out of scope.<br>
<ul> <ul>
@ -4240,15 +4236,20 @@ sub CUL_HM_putHash($) {# provide data for HMinfo
On-time is analog "on-for-timer".<br> On-time is analog "on-for-timer".<br>
Ramp-time default is 2.5s, 0 means instantanous<br> Ramp-time default is 2.5s, 0 means instantanous<br>
</li> </li>
<li><B>on</B> set level to 100%<br></li> <li><B><a href="#CUL_HMon">on</a></B></li>
<li><B>off</B> set level to 0%<br></li> <li><B><a href="#CUL_HMoff">off</a></B></li>
<li><B><a href="#CUL_HMpress">press &lt;[short|long]&gt;&lt;[on|off]&gt;</a></B></li> <li><B><a href="#CUL_HMpress">press &lt;[short|long]&gt;&lt;[on|off]&gt;</a></B></li>
<li><B>toggle</B> - toggle between off and the last on-value</li> <li><B><a href="#CUL_HMtoggle">toggle</a></B></li>
<li><B><a href="#CUL_HMonForTimer">on-for-timer &lt;sec&gt;</a></B> - Dimmer only! <br></li> <li><B><a href="#CUL_HMonForTimer">on-for-timer &lt;sec&gt;</a></B> - Dimmer only! <br></li>
<li><B><a href="#CUL_HMonForTimer">on-till &lt;time&gt;</a></B> - Dimmer only! <br></li> <li><B><a href="#CUL_HMonTill">on-till &lt;time&gt;</a></B> - Dimmer only! <br></li>
<li><B>stop</B> - stop motion or dim ramp</li> <li><B>stop</B> - stop motion (blind) or dim ramp</li>
<li><B>up [changeValue] [ontime] [ramptime]</B> dim up one step<br></li> <li><B>pct [&lt;ontime&gt] [&lt;ramptime&gt]</B> - set actor to a desired level. Optional ontime and ramptime could be given</li>
<li><B>down [changeValue] [ontime] [ramptime]</B> dim up one step<br></li> <li><B>up [changeValue] [&lt;ontime&gt] [&lt;ramptime&gt]</B> dim up one step</li>
<li><B>down [changeValue] [&lt;ontime&gt] [&lt;ramptime&gt]</B> dim up one step<br>
changeValue is optional an gives the level to be changed up or down in percent. Granularity is 0.5%, default is 10%. <br>
ontime is optional an gives the duration of the level to be kept. '0' means forever and is default.<br>
ramptime is optional an defines the change speed to reach the new level. It is meaningful only for dimmer.
<br></li>
</ul> </ul>
<br> <br>
</li> </li>
@ -4337,7 +4338,7 @@ sub CUL_HM_putHash($) {# provide data for HMinfo
</li> </li>
</ul> </ul>
</li> </li>
<li><br>virtual<a name="CUL_HMvirtual"></a><br> <li>virtual<a name="CUL_HMvirtual"></a><br>
<ul> <ul>
<li><B><a href="#CUL_HMpeerChan">peerChan</a></B> see remote</li> <li><B><a href="#CUL_HMpeerChan">peerChan</a></B> see remote</li>
<li><B>press [long|short]<a name="CUL_HMpress"></a></B> <li><B>press [long|short]<a name="CUL_HMpress"></a></B>
@ -4347,7 +4348,7 @@ sub CUL_HM_putHash($) {# provide data for HMinfo
</li> </li>
</ul> </ul>
</li> </li>
<li><br>smokeDetector<br> <li>smokeDetector<br>
Note: All these commands work right now only if you have more then one Note: All these commands work right now only if you have more then one
smoekDetector, and you peered them to form a group. For issuing the smoekDetector, and you peered them to form a group. For issuing the
commands you have to use the master of this group, and currently you commands you have to use the master of this group, and currently you
@ -4363,7 +4364,7 @@ sub CUL_HM_putHash($) {# provide data for HMinfo
<li><B>alarmOff</B> - switch off the alarm</li> <li><B>alarmOff</B> - switch off the alarm</li>
</ul> </ul>
</li> </li>
<li><br>4Dis (HM-PB-4DIS-WM) <li>4Dis (HM-PB-4DIS-WM)
<ul> <ul>
<li><B>text &lt;btn_no&gt; [on|off] &lt;text1&gt; &lt;text2&gt;</B><br> <li><B>text &lt;btn_no&gt; [on|off] &lt;text1&gt; &lt;text2&gt;</B><br>
Set the text on the display of the device. To this purpose issue Set the text on the display of the device. To this purpose issue
@ -4384,31 +4385,32 @@ sub CUL_HM_putHash($) {# provide data for HMinfo
<br></li> <br></li>
<li>Climate-Control (HM-CC-TC) <li>Climate-Control (HM-CC-TC)
<ul> <ul>
<li>day-temp &lt;tmp&gt;<br> <li><B>day-temp &lt;temp&gt;</B><br></li>
night-temp &lt;tmp&gt;<br> <li><B>night-temp &lt;temp&gt;</B><br></li>
party-temp &lt;tmp&gt;<br> <li><B>party-temp &lt;temp&gt;</B><br></li>
desired-temp &lt;tmp&gt;<br> <li><B>desired-temp &lt;temp&gt;</B><br>
Set different temperatures. Temp must be between 6 and 30 Set different temperatures. &lt;temp&gt; must be between 6 and 30
Celsius, and precision is half a degree.</li> Celsius, and precision is half a degree.</li>
<li>tempListSat HH:MM temp ... 24:00 temp<br> <li><B>tempListSat HH:MM temp ... 24:00 temp</B><br></li>
tempListSun HH:MM temp ... 24:00 temp<br> <li><B>tempListSun HH:MM temp ... 24:00 temp</B><br></li>
tempListMon HH:MM temp ... 24:00 temp<br> <li><B>tempListMon HH:MM temp ... 24:00 temp</B><br></li>
tempListTue HH:MM temp ... 24:00 temp<br> <li><B>tempListTue HH:MM temp ... 24:00 temp</B><br></li>
tempListThu HH:MM temp ... 24:00 temp<br> <li><B>tempListThu HH:MM temp ... 24:00 temp</B><br></li>
tempListWed HH:MM temp ... 24:00 temp<br> <li><B>tempListWed HH:MM temp ... 24:00 temp</B><br></li>
tempListFri HH:MM temp ... 24:00 temp<br> <li><B>tempListFri HH:MM temp ... 24:00 temp</B><br>
Specify a list of temperature intervals. Up to 24 intervals can be Specify a list of temperature intervals. Up to 24 intervals can be
specified for each week day, the resolution is 10 Minutes. The specified for each week day, the resolution is 10 Minutes. The
last time spec must always be 24:00.<br> last time spec must always be 24:00.<br>
Example: set th tempListSat 06:00 19 23:00 22.5 24:00 19<br> Example: until 6:00 temperature shall be 19, from then until 23:00 temperature shall be
Meaning: until 6:00 temperature shall be 19, from then until 23:00 temperature shall be 22.5, thereafter until midnight, 19 degrees celsius is desired.<br>
22.5, thereafter until midnight, 19 degrees celsius is desired.</li> <code> set th tempListSat 06:00 19 23:00 22.5 24:00 19<br></code>
<li>displayMode [temp-only|temp-hum]<br> </li>
displayTemp [actual|setpoint]<br> <li><B>displayMode [temp-only|temp-hum]</B><br></li>
displayTempUnit [celsius|fahrenheit]<br> <li><B>displayTemp [actual|setpoint]</B><br></li>
controlMode [manual|auto|central|party]<br> <li><B>displayTempUnit [celsius|fahrenheit]</B><br></li>
decalcDay &lt;day&gt;</li> <li><B>controlMode [manual|auto|central|party]</B><br></li>
<li>systime <br> <li><B>decalcDay &lt;day&gt;</B></li>
<li><B>systime</B><br>
set time in climate channel to system time</li> set time in climate channel to system time</li>
</ul><br> </ul><br>
</li> </li>
@ -4421,10 +4423,8 @@ sub CUL_HM_putHash($) {# provide data for HMinfo
For Expert all LEDs can be set individual by providing a 8-digit hex number to the device.<br></li> For Expert all LEDs can be set individual by providing a 8-digit hex number to the device.<br></li>
<li><B>ilum &lt;brightness&gt;&lt;duration&gt; </B><br> <li><B>ilum &lt;brightness&gt;&lt;duration&gt; </B><br>
&lt;brightness&gt; [0-15] of backlight.<br> &lt;brightness&gt; [0-15] of backlight.<br>
&lt;duration&gt; [0-127] in sec. 0 is permanent 'on'.<br> &lt;duration&gt; [0-127] in sec. 0 is permanent 'on'.<br></li>
</li> </ul><br></li>
</ul><br>
</li>
<li>OutputUnit (HM-OU-CFM-PL) <li>OutputUnit (HM-OU-CFM-PL)
<ul> <ul>
<li><B>led &lt;color&gt;[,&lt;color&gt;..] [&lt;repeat&gt..]</B><br> <li><B>led &lt;color&gt;[,&lt;color&gt;..] [&lt;repeat&gt..]</B><br>
@ -4453,8 +4453,7 @@ sub CUL_HM_putHash($) {# provide data for HMinfo
</ul></code> </ul></code>
</li> </li>
</ul><br> </ul><br></li>
</li>
<li>HM-RC-19xxx <li>HM-RC-19xxx
<ul> <ul>
<li><B>alarm &lt;count&gt;</B><br> <li><B>alarm &lt;count&gt;</B><br>
@ -4512,10 +4511,7 @@ sub CUL_HM_putHash($) {# provide data for HMinfo
Unlocked the door so that the door can be opened.<br> Unlocked the door so that the door can be opened.<br>
[sec]: Sets the delay in seconds after the lock automatically locked [sec]: Sets the delay in seconds after the lock automatically locked
again.<br>0 - 65535 seconds</li> again.<br>0 - 65535 seconds</li>
</li> </ul></li>
</ul>
</li>
<li>winMatic <br><br> <li>winMatic <br><br>
<ul>winMatic provides 2 channels, one for the window control and a second <ul>winMatic provides 2 channels, one for the window control and a second
for the accumulator.</ul><br> for the accumulator.</ul><br>
@ -4530,8 +4526,8 @@ sub CUL_HM_putHash($) {# provide data for HMinfo
stop movement<br> stop movement<br>
</li> </li>
</ul></li> </ul></li>
<li>HM-Sys-sRP-Pl<br><br> <li>HM-Sys-sRP-Pl<br><br>
setRepeat => "[no1..36] <sendName> <recName> [bdcast-yes|no]" setup the repeater's entries. Up to 36entries can be applied.
<ul> <ul>
<li><B>setRepeat &lt;entry&gt; &lt;sender&gt; &lt;receiver&gt; &lt;broadcast&gt;</B><br> <li><B>setRepeat &lt;entry&gt; &lt;sender&gt; &lt;receiver&gt; &lt;broadcast&gt;</B><br>
&lt;entry&gt; [1..36] entry number in repeater table. The repeater can handle up to 36 entries.<br> &lt;entry&gt; [1..36] entry number in repeater table. The repeater can handle up to 36 entries.<br>
@ -4540,12 +4536,12 @@ sub CUL_HM_putHash($) {# provide data for HMinfo
&lt;broadcast&gt; [yes|no] determines whether broadcast from this ID shall be repeated<br> &lt;broadcast&gt; [yes|no] determines whether broadcast from this ID shall be repeated<br>
<br> <br>
short application: <br> short application: <br>
setRepeat setAll 0 0 0<br> <code>setRepeat setAll 0 0 0<br></code>
will rewrite the complete list to the deivce. Data will be taken from attribut repPeer. <br> will rewrite the complete list to the deivce. Data will be taken from attribut repPeer. <br>
attribut repPeer is formated:<br> attribut repPeer is formated:<br>
src1:dst1:[y/n],src2:dst2:[y/n],src2:dst2:[y/n],...<br> src1:dst1:[y/n],src2:dst2:[y/n],src2:dst2:[y/n],...<br>
up to 36entries can be applied. </li>
</ul><br></li> </ul>
</li> </li>
</ul> </ul>
<br> <br>
@ -4716,7 +4712,7 @@ sub CUL_HM_putHash($) {# provide data for HMinfo
<a name="CUL_HMevents"></a> <a name="CUL_HMevents"></a>
<b>Generated events:</b> <b>Generated events:</b>
<ul> <ul>
<li>HM-CC-TC:<br> <li><B>HM-CC-TC</B><br>
T: $t H: $h<br> T: $t H: $h<br>
battery:[low|ok]<br> battery:[low|ok]<br>
measured-temp $t<br> measured-temp $t<br>
@ -4739,7 +4735,7 @@ sub CUL_HM_putHash($) {# provide data for HMinfo
ValveOffset $of %<br> ValveOffset $of %<br>
time-request<br> time-request<br>
</li> </li>
<li>HM-CC-VD:<br> <li><B>HM-CC-VD</B><br>
$vp %<br> $vp %<br>
battery:[critical|low|ok]<br> battery:[critical|low|ok]<br>
motorErr:[ok|blocked|loose|adjusting range too small|opening|closing|stop]<br> motorErr:[ok|blocked|loose|adjusting range too small|opening|closing|stop]<br>
@ -4750,42 +4746,42 @@ sub CUL_HM_putHash($) {# provide data for HMinfo
operState:[errorTargetNotMet|onTarget|adjusting] # operational condition<br> operState:[errorTargetNotMet|onTarget|adjusting] # operational condition<br>
operStateErrCnt:$cnt # number of failed settings<br> operStateErrCnt:$cnt # number of failed settings<br>
</li> </li>
<li>HM-CC-SCD<br> <li><B>HM-CC-SCD</B><br>
[normal|added|addedStrong]<br> [normal|added|addedStrong]<br>
battery [low|ok]<br> battery [low|ok]<br>
</li> </li>
<li>HM-SEC-SFA-SM:<br> <li><B>HM-SEC-SFA-SM</B><br>
powerError [on|off]<br> powerError [on|off]<br>
sabotageError [on|off]<br> sabotageError [on|off]<br>
battery: [critical|low|ok]<br> battery: [critical|low|ok]<br>
</li> </li>
<li>HM-LC-BL1-PB-FM:<br> <li><B>HM-LC-BL1-PB-FM</B><br>
motor: [opening|closing]<br> motor: [opening|closing]<br>
</li> </li>
<li>HM-LC-SW1-BA-PCB:<br> <li><B>HM-LC-SW1-BA-PCB</B><br>
battery: [low|ok]<br> battery: [low|ok]<br>
</li> </li>
<li>HM-OU-LED16<br> <li><B>HM-OU-LED16</B><br>
color $value # hex - for device only<br> color $value # hex - for device only<br>
$value # hex - for device only<br> $value # hex - for device only<br>
color [off|red|green|orange] # for channel <br> color [off|red|green|orange] # for channel <br>
[off|red|green|orange] # for channel <br> [off|red|green|orange] # for channel <br>
</li> </li>
<li>HM-OU-CFM-PL<br> <li><B>HM-OU-CFM-PL</B><br>
[on|off|$val]<br> [on|off|$val]<br>
</li> </li>
<li>HM-Sen-Wa-Od<br> <li><B>HM-Sen-Wa-Od</B><br>
$level%<br> $level%<br>
level $level%<br> level $level%<br>
</li> </li>
<li>KFM100:<br> <li><B>KFM100</B><br>
$v<br> $v<br>
$cv,$unit<br> $cv,$unit<br>
rawValue:$v<br> rawValue:$v<br>
Sequence:$seq<br> Sequence:$seq<br>
content:$cv,$unit<br> content:$cv,$unit<br>
</li> </li>
<li>KS550/HM-WDS100-C6-O:<br> <li><B>KS550/HM-WDS100-C6-O</B><br>
T: $t H: $h W: $w R: $r IR: $ir WD: $wd WDR: $wdr S: $s B: $b<br> T: $t H: $h W: $w R: $r IR: $ir WD: $wd WDR: $wdr S: $s B: $b<br>
temperature $t<br> temperature $t<br>
humidity $h<br> humidity $h<br>
@ -4798,19 +4794,19 @@ sub CUL_HM_putHash($) {# provide data for HMinfo
brightness $b<br> brightness $b<br>
unknown $p<br> unknown $p<br>
</li> </li>
<li>THSensor and HM-WDC7000<br> <li><B>THSensor and HM-WDC7000</B><br>
T: $t H: $h AP: $ap<br> T: $t H: $h AP: $ap<br>
temperature $t<br> temperature $t<br>
humidity $h<br> humidity $h<br>
airpress $ap #HM-WDC7000 only<br> airpress $ap #HM-WDC7000 only<br>
</li> </li>
<li>dimmer:<br> <li><B>dimmer</B><br>
overload [on|off]<br> overload [on|off]<br>
overheat [on|off]<br> overheat [on|off]<br>
reduced [on|off]<br> reduced [on|off]<br>
dim: [up|down|stop]<br> dim: [up|down|stop]<br>
</li> </li>
<li>motionDetector<br> <li><B>motionDetector</B><br>
brightness:$b<br> brightness:$b<br>
alive<br> alive<br>
motion on (to $dest)<br> motion on (to $dest)<br>
@ -4820,7 +4816,7 @@ sub CUL_HM_putHash($) {# provide data for HMinfo
battery [low|ok]<br> battery [low|ok]<br>
devState_raw.$d1 $d2<br> devState_raw.$d1 $d2<br>
</li> </li>
<li>remote/pushButton/outputUnit<br> <li><B>remote/pushButton/outputUnit</B><br>
<ul> (to $dest) is added if the button is peered and does not send to broadcast<br> <ul> (to $dest) is added if the button is peered and does not send to broadcast<br>
Release is provided for peered channels only</ul> Release is provided for peered channels only</ul>
Btn$x onShort<br> Btn$x onShort<br>
@ -4836,21 +4832,21 @@ sub CUL_HM_putHash($) {# provide data for HMinfo
Btn$x onLongRelease $counter (to $dest)<br> Btn$x onLongRelease $counter (to $dest)<br>
Btn$x offLongRelease $counter (to $dest)<br> Btn$x offLongRelease $counter (to $dest)<br>
</li> </li>
<li>remote/pushButton<br> <li><B>remote/pushButton</B><br>
battery [low|ok]<br> battery [low|ok]<br>
trigger [Long|Short]_$no trigger event from channel<br> trigger [Long|Short]_$no trigger event from channel<br>
</li> </li>
<li>swi<br> <li><B>swi</B><br>
Btn$x toggle<br> Btn$x toggle<br>
Btn$x toggle (to $dest)<br> Btn$x toggle (to $dest)<br>
battery: [low|ok]<br> battery: [low|ok]<br>
</li> </li>
<li>switch/dimmer/blindActuator:<br> <li><B>switch/dimmer/blindActuator</B><br>
$val<br> $val<br>
powerOn [on|off|$val]<br> powerOn [on|off|$val]<br>
[unknown|motor|dim] [up|down|stop]:$val<br> [unknown|motor|dim] [up|down|stop]:$val<br>
</li> </li>
<li>smokeDetector<br> <li><B>smokeDetector</B><br>
[off|smoke-Alarm|alive] # for team leader<br> [off|smoke-Alarm|alive] # for team leader<br>
[off|smoke-forward|smoke-alarm] # for team members<br> [off|smoke-forward|smoke-alarm] # for team members<br>
[normal|added|addedStrong] #HM-CC-SCD<br> [normal|added|addedStrong] #HM-CC-SCD<br>
@ -4859,7 +4855,7 @@ sub CUL_HM_putHash($) {# provide data for HMinfo
smoke_detect on from $src<br> smoke_detect on from $src<br>
test:from $src<br> test:from $src<br>
</li> </li>
<li>threeStateSensor<br> <li><B>threeStateSensor</B><br>
[open|tilted|closed]]<br> [open|tilted|closed]]<br>
[wet|damp|dry] #HM-SEC-WDS only<br> [wet|damp|dry] #HM-SEC-WDS only<br>
cover [open|closed] #HM-SEC-WDS only<br> cover [open|closed] #HM-SEC-WDS only<br>
@ -4869,7 +4865,7 @@ sub CUL_HM_putHash($) {# provide data for HMinfo
contact [wet|damp|dry] #HM-SEC-WDS only<br> contact [wet|damp|dry] #HM-SEC-WDS only<br>
sabotageError [on|off] #HM-SEC-SC and HM-Sec-RHS only<br> sabotageError [on|off] #HM-SEC-SC and HM-Sec-RHS only<br>
</li> </li>
<li>winMatic<br> <li><B>winMatic</B><br>
[locked|$value]<br> [locked|$value]<br>
motorError [no|TurnError|TiltError]<br> motorError [no|TurnError|TiltError]<br>
direction [no|up|down|undefined]<br> direction [no|up|down|undefined]<br>
@ -4879,7 +4875,7 @@ sub CUL_HM_putHash($) {# provide data for HMinfo
airing [inactiv|$value]<br> airing [inactiv|$value]<br>
contact tesed<br> contact tesed<br>
</li> </li>
<li>keyMatic<br> <li><B>keyMatic</B><br>
unknown:40<br> unknown:40<br>
battery [low|ok]<br> battery [low|ok]<br>
uncertain [yes|no]<br> uncertain [yes|no]<br>

View File

@ -507,7 +507,7 @@ my %culHmRegGeneral = (
my %culHmRegType = ( my %culHmRegType = (
swi =>{peerNeedsBurst =>1,expectAES =>1}, swi =>{peerNeedsBurst =>1,expectAES =>1},
remote =>{peerNeedsBurst =>1,expectAES =>1,dblPress =>1,longPress =>1, remote =>{peerNeedsBurst =>1,expectAES =>1,dblPress =>1,longPress =>1,
sign =>1, sign =>1
}, },
blindActuator =>{driveUp =>1,driveDown =>1,driveTurn =>1,refRunCounter =>1, blindActuator =>{driveUp =>1,driveDown =>1,driveTurn =>1,refRunCounter =>1,
sign =>1, sign =>1,
@ -520,7 +520,7 @@ my %culHmRegType = (
CtValLo =>1,CtValHi =>1, CtValLo =>1,CtValHi =>1,
CtOn =>1,CtDlyOn =>1,CtRampOn =>1,CtRefOn =>1, CtOn =>1,CtDlyOn =>1,CtRampOn =>1,CtRefOn =>1,
CtOff =>1,CtDlyOff =>1,CtRampOff =>1,CtRefOff =>1, CtOff =>1,CtDlyOff =>1,CtRampOff =>1,CtRefOff =>1,
lgMultiExec =>1, lgMultiExec =>1
}, },
dimmer =>{transmitTryMax =>1,statusInfoMinDly=>1,statusInfoRandom=>1,powerUpAction =>1, dimmer =>{transmitTryMax =>1,statusInfoMinDly=>1,statusInfoRandom=>1,powerUpAction =>1,
@ -536,7 +536,7 @@ my %culHmRegType = (
CtOn =>1,CtDlyOn =>1,CtRampOn =>1, CtOn =>1,CtDlyOn =>1,CtRampOn =>1,
CtOff =>1,CtDlyOff =>1,CtRampOff =>1, CtOff =>1,CtDlyOff =>1,CtRampOff =>1,
OffDlyNewTime =>1,OffDlyOldTime =>1, OffDlyNewTime =>1,OffDlyOldTime =>1,
lgMultiExec =>1, lgMultiExec =>1
}, },
switch =>{sign =>1, switch =>{sign =>1,
OnTime =>1,OffTime =>1,OnDly =>1,OffDly =>1, OnTime =>1,OffTime =>1,OnDly =>1,OffDly =>1,
@ -544,7 +544,7 @@ my %culHmRegType = (
CtValLo =>1,CtValHi =>1, CtValLo =>1,CtValHi =>1,
CtOn =>1,CtDlyOn =>1,CtOff =>1,CtDlyOff =>1, CtOn =>1,CtDlyOn =>1,CtOff =>1,CtDlyOff =>1,
ActionType =>1,OnTimeMode =>1,OffTimeMode =>1, ActionType =>1,OnTimeMode =>1,OffTimeMode =>1,
lgMultiExec =>1, lgMultiExec =>1
}, },
winMatic =>{signal =>1,signalTone =>1,keypressSignal =>1}, winMatic =>{signal =>1,signalTone =>1,keypressSignal =>1},
keyMatic =>{signal =>1,signalTone =>1,keypressSignal =>1, keyMatic =>{signal =>1,signalTone =>1,keypressSignal =>1,
@ -554,15 +554,15 @@ my %culHmRegType = (
CtValLo =>1,CtValHi =>1, CtValLo =>1,CtValHi =>1,
CtOn =>1,CtOff =>1, CtOn =>1,CtOff =>1,
KeyJtOn =>1,KeyJtOff =>1, KeyJtOn =>1,KeyJtOff =>1,
OnTime =>1, OnTime =>1
}, },
motionDetector =>{evtFltrPeriod =>1,evtFltrNum =>1,minInterval =>1, motionDetector =>{evtFltrPeriod =>1,evtFltrNum =>1,minInterval =>1,
captInInterval =>1,brightFilter =>1,ledOnTime =>1, captInInterval =>1,brightFilter =>1,ledOnTime =>1,
peerNeedsBurst =>1, peerNeedsBurst =>1
}, },
threeStateSensor =>{cyclicInfoMsg =>1, transmDevTryMax =>1, threeStateSensor =>{cyclicInfoMsg =>1, transmDevTryMax =>1,
,transmitTryMax =>1, ,transmitTryMax =>1,
peerNeedsBurst =>1,expectAES =>1, peerNeedsBurst =>1,expectAES =>1
}, },
); );
#clones - - - - - - - - - - - - - - - #clones - - - - - - - - - - - - - - -
@ -570,18 +570,18 @@ $culHmRegType{pushButton} = $culHmRegType{remote};
my %culHmRegModel = ( my %culHmRegModel = (
"HM-RC-12" =>{backAtKey =>1, backAtMotion =>1, backOnTime =>1}, "HM-RC-12" =>{backAtKey =>1, backAtMotion =>1, backOnTime =>1},
"HM-RC-19" =>{backAtKey =>1, backAtMotion =>1, backOnTime =>1,backAtCharge =>1,language =>1,}, "HM-RC-19" =>{backAtKey =>1, backAtMotion =>1, backOnTime =>1,backAtCharge =>1,language =>1},
"HM-LC-Bl1PBU-FM" =>{transmitTryMax =>1,statusInfoMinDly=>1,statusInfoRandom=>1,localResDis =>1,}, "HM-LC-Bl1PBU-FM" =>{transmitTryMax =>1,statusInfoMinDly=>1,statusInfoRandom=>1,localResDis =>1},
"HM-LC-Dim1L-Pl-2"=>{confBtnTime =>1,loadAppearBehav =>1,loadErrCalib =>1, "HM-LC-Dim1L-Pl-2"=>{confBtnTime =>1,loadAppearBehav =>1,loadErrCalib =>1
}, },
"HM-LC-Dim1L-CV" =>{confBtnTime =>1,loadAppearBehav =>1,loadErrCalib =>1, "HM-LC-Dim1L-CV" =>{confBtnTime =>1,loadAppearBehav =>1,loadErrCalib =>1,
logicCombination=>1, logicCombination=>1,
DimElsOffTimeMd =>1,DimElsOnTimeMd =>1, DimElsOffTimeMd =>1,DimElsOnTimeMd =>1,
DimElsActionType=>1, DimElsActionType=>1,
DimElsJtOn =>1,DimElsJtOff =>1,DimElsJtDlyOn =>1, DimElsJtOn =>1,DimElsJtOff =>1,DimElsJtDlyOn =>1,
DimElsJtDlyOff =>1,DimElsJtRampOn =>1,DimElsJtRampOff =>1, DimElsJtDlyOff =>1,DimElsJtRampOn =>1,DimElsJtRampOff =>1
}, },
"HM-LC-Dim1PWM-CV"=>{confBtnTime =>1,ovrTempLvl =>1,redTempLvl =>1,redLvl =>1, "HM-LC-Dim1PWM-CV"=>{confBtnTime =>1,ovrTempLvl =>1,redTempLvl =>1,redLvl =>1,
characteristic =>1, characteristic =>1,
@ -589,7 +589,7 @@ my %culHmRegModel = (
DimElsOffTimeMd =>1,DimElsOnTimeMd =>1, DimElsOffTimeMd =>1,DimElsOnTimeMd =>1,
DimElsActionType=>1, DimElsActionType=>1,
DimElsJtOn =>1,DimElsJtOff =>1,DimElsJtDlyOn =>1, DimElsJtOn =>1,DimElsJtOff =>1,DimElsJtDlyOn =>1,
DimElsJtDlyOff =>1,DimElsJtRampOn =>1,DimElsJtRampOff =>1, DimElsJtDlyOff =>1,DimElsJtRampOn =>1,DimElsJtRampOff =>1
}, },
"HM-LC-Dim1T-Pl" =>{confBtnTime =>1,ovrTempLvl =>1,redTempLvl =>1,redLvl =>1, "HM-LC-Dim1T-Pl" =>{confBtnTime =>1,ovrTempLvl =>1,redTempLvl =>1,redLvl =>1,
fuseDelay =>1, fuseDelay =>1,
@ -597,10 +597,10 @@ my %culHmRegModel = (
DimElsOffTimeMd =>1,DimElsOnTimeMd =>1, DimElsOffTimeMd =>1,DimElsOnTimeMd =>1,
DimElsActionType=>1, DimElsActionType=>1,
DimElsJtOn =>1,DimElsJtOff =>1,DimElsJtDlyOn =>1, DimElsJtOn =>1,DimElsJtOff =>1,DimElsJtDlyOn =>1,
DimElsJtDlyOff =>1,DimElsJtRampOn =>1,DimElsJtRampOff =>1, DimElsJtDlyOff =>1,DimElsJtRampOn =>1,DimElsJtRampOff =>1
}, },
"HM-LC-Dim1T-Pl-2"=>{confBtnTime =>1,ovrTempLvl =>1,redTempLvl =>1,redLvl =>1, "HM-LC-Dim1T-Pl-2"=>{confBtnTime =>1,ovrTempLvl =>1,redTempLvl =>1,redLvl =>1,
fuseDelay =>1, fuseDelay =>1
}, },
"HM-LC-Dim1TPBU-FM"=>{ ovrTempLvl =>1,redTempLvl =>1,redLvl =>1, "HM-LC-Dim1TPBU-FM"=>{ ovrTempLvl =>1,redTempLvl =>1,redLvl =>1,
fuseDelay =>1, fuseDelay =>1,
@ -608,7 +608,7 @@ my %culHmRegModel = (
DimElsOffTimeMd =>1,DimElsOnTimeMd =>1, DimElsOffTimeMd =>1,DimElsOnTimeMd =>1,
DimElsActionType=>1, DimElsActionType=>1,
DimElsJtOn =>1,DimElsJtOff =>1,DimElsJtDlyOn =>1, DimElsJtOn =>1,DimElsJtOff =>1,DimElsJtDlyOn =>1,
DimElsJtDlyOff =>1,DimElsJtRampOn =>1,DimElsJtRampOff =>1, DimElsJtDlyOff =>1,DimElsJtRampOn =>1,DimElsJtRampOff =>1
}, },
"HM-CC-VD" =>{valveOffset =>1,valveErrorPos =>1}, "HM-CC-VD" =>{valveOffset =>1,valveErrorPos =>1},
"HM-PB-4DIS-WM" =>{peerNeedsBurst =>1,expectAES =>1,language =>1,stbyTime =>1}, "HM-PB-4DIS-WM" =>{peerNeedsBurst =>1,expectAES =>1,language =>1,stbyTime =>1},
@ -622,11 +622,11 @@ my %culHmRegModel = (
CtValLo =>1,CtValHi =>1, CtValLo =>1,CtValHi =>1,
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-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,
transmitTryMax =>1,evtFltrTime =>1, transmitTryMax =>1,evtFltrTime =>1,
msgScdPosA =>1,msgScdPosB =>1,msgScdPosC =>1,msgScdPosD =>1,}, msgScdPosA =>1,msgScdPosB =>1,msgScdPosC =>1,msgScdPosD =>1},
"HM-SEC-RHS" =>{msgRhsPosA =>1,msgRhsPosB =>1,msgRhsPosC =>1, "HM-SEC-RHS" =>{msgRhsPosA =>1,msgRhsPosB =>1,msgRhsPosC =>1,
ledOnTime =>1,eventDlyTime =>1}, ledOnTime =>1,eventDlyTime =>1},
"HM-SEC-SC" =>{ sabotageMsg =>1, "HM-SEC-SC" =>{ sabotageMsg =>1,
@ -641,16 +641,16 @@ my %culHmRegModel = (
eventFilterTime =>1}, eventFilterTime =>1},
"HM-SEC-SFA-SM" =>{cyclicInfoMsg =>1,sabotageMsg =>1,transmDevTryMax =>1, "HM-SEC-SFA-SM" =>{cyclicInfoMsg =>1,sabotageMsg =>1,transmDevTryMax =>1,
lowBatLimit =>1,batDefectLimit =>1, lowBatLimit =>1,batDefectLimit =>1,
transmitTryMax =>1,}, transmitTryMax =>1},
"HM-LC-SW1-BA-PCB"=>{lowBatLimitBA =>1,ledMode =>1}, "HM-LC-SW1-BA-PCB"=>{lowBatLimitBA =>1,ledMode =>1},
"HM-Sys-sRP-Pl" =>{compMode =>1,}, "HM-Sys-sRP-Pl" =>{compMode =>1},
"KFM-Display" =>{CtDlyOn =>1,CtDlyOff =>1, "KFM-Display" =>{CtDlyOn =>1,CtDlyOff =>1,
CtOn =>1,CtOff =>1,CtRampOn =>1,CtRampOff =>1, CtOn =>1,CtOff =>1,CtRampOn =>1,CtRampOff =>1,
CtValLo =>1,CtValHi =>1, CtValLo =>1,CtValHi =>1,
ActionType =>1,OffTimeMode =>1,OnTimeMode =>1, ActionType =>1,OffTimeMode =>1,OnTimeMode =>1,
DimJtOn =>1,DimJtOff =>1,DimJtDlyOn =>1,DimJtDlyOff =>1, DimJtOn =>1,DimJtOff =>1,DimJtDlyOn =>1,DimJtDlyOff =>1,
DimJtRampOn =>1,DimJtRampOff =>1, DimJtRampOn =>1,DimJtRampOff =>1,
lgMultiExec =>1, lgMultiExec =>1
}, },
"HM-Sen-Wa-Od" =>{cyclicInfoMsgDis=>1, transmDevTryMax =>1,localResDis =>1, "HM-Sen-Wa-Od" =>{cyclicInfoMsgDis=>1, transmDevTryMax =>1,localResDis =>1,
ledOnTime =>1,transmitTryMax =>1, ledOnTime =>1,transmitTryMax =>1,
@ -658,8 +658,8 @@ my %culHmRegModel = (
fillLevel =>1,caseWidth =>1,caseLength =>1,meaLength =>1, fillLevel =>1,caseWidth =>1,caseLength =>1,meaLength =>1,
useCustom =>1, useCustom =>1,
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},
); );
#clones - - - - - - - - - - - - - - - #clones - - - - - - - - - - - - - - -
$culHmRegModel{"HM-RC-12-B"} = $culHmRegModel{"HM-RC-12"}; $culHmRegModel{"HM-RC-12-B"} = $culHmRegModel{"HM-RC-12"};
@ -692,7 +692,7 @@ my %culHmRegChan = (# if channelspecific then enter them here
"day-temp" =>1,"night-temp" =>1,"party-temp" =>1, "day-temp" =>1,"night-temp" =>1,"party-temp" =>1,
mdTempValve =>1,partyEndDay =>1, mdTempValve =>1,partyEndDay =>1,
partyEndMin =>1,partyEndHr =>1, partyEndMin =>1,partyEndHr =>1,
decalHr =>1,decalMin =>1, decalHr =>1,decalMin =>1
}, },
"HM-CC-TC03" =>{tempWinOpen =>1, }, #window channel "HM-CC-TC03" =>{tempWinOpen =>1, }, #window channel
"HM-RC-1912" =>{msgShowTime =>1, beepAtAlarm =>1, beepAtService =>1,beepAtInfo =>1, "HM-RC-1912" =>{msgShowTime =>1, beepAtAlarm =>1, beepAtService =>1,beepAtInfo =>1,
@ -754,36 +754,50 @@ my %culHmGlobalSetsChn = (# all channels but virtuals
peerBulk => "<peer1,peer2,...>", peerBulk => "<peer1,peer2,...>",
); );
my %culHmSubTypeSets = (# channels of this subtype my %culHmSubTypeSets = (# channels of this subtype
switch =>{ "on-for-timer"=>"sec", "on-till"=>"time", switch =>{ "on-for-timer"=>"<sec>"
on=>"", off=>"", toggle=>"", ,"on-till" =>"<time>"
press => "[long|short] [on|off] ...", ,on =>""
inhibit =>"[on|off]"}, ,off =>""
dimmer =>{ "on-for-timer"=>"sec", "on-till"=>"time", ,toggle =>""
on=> "", off=> "", toggle=> "", pct=>"[value] ... [time] [ramp]", stop=>"", ,press =>"[long|short] [on|off] ..."
press => "[long|short] [on|off] ...", ,inhibit =>"[on|off]"},
up => "[<changeValue>] [ontime] [ramptime]...", dimmer =>{ "on-for-timer"=>"<sec>"
down => "[<changeValue>] [ontime] [ramptime]...", ,"on-till" =>"<time>"
inhibit => "[on|off]"}, ,on =>""
blindActuator =>{ on=> "", off=>" ", toggle=> "", pct=>"[value] ... [time] [ramp]", stop=>"", ,off =>""
press => "[long|short] [on|off] ...", ,toggle =>""
up => "[<changeValue>] [ontime] [ramptime]...", ,pct =>"<value> ... [<ontime>] [<ramptime>]"
down => "[<changeValue>] [ontime] [ramptime]...", ,stop =>""
inhibit =>"[on|off]"}, ,press =>"[long|short] [on|off] ..."
remote =>{ peerChan => "<btnNumber> <actChn> ... [single|dual] [set|unset] [actor|remote|both]",}, ,up =>"[<changeValue>] [<ontime>] [<ramptime>] ..."
threeStateSensor =>{ peerChan => "<btnNumber> <actChn> ... single [set|unset] [actor|remote|both]",}, ,down =>"[<changeValue>] [<ontime>] [<ramptime>] ..."
virtual =>{ peerChan => "<btnNumber> <actChn> ... [single|dual] [set|unset] [actor|remote|both]", ,inhibit =>"[on|off]"},
press => "[long|short]...", blindActuator =>{ on =>""
valvePos => "position", },#acting as TC ,off =>""
smokeDetector =>{ test => "", alarmOn=>"", alarmOff=>"", ,toggle =>""
peerChan => "<btnNumber> <actChn> ... single [set|unset] actor",}, ,pct =>"[<value>] ... [<ontime>]"
winMatic =>{ matic => "<btn>", ,stop =>""
keydef => "<btn> <txt1> <txt2>", ,press =>"[long|short] [on|off] ..."
create => "<txt>", ,up =>"[<changeValue>] [<ontime>] [<ramptime>] ..."
inhibit =>"[on|off]"}, ,down =>"[<changeValue>] [<ontime>] [<ramptime>] ..."
keyMatic =>{ lock =>"", ,inhibit =>"[on|off]"},
unlock =>"[sec] ...", remote =>{ peerChan =>"<btnNumber> <actChn> ... [single|dual] [set|unset] [actor|remote|both]"},
open =>"[sec] ...", threeStateSensor =>{ peerChan =>"<btnNumber> <actChn> ... single [set|unset] [actor|remote|both]"},
inhibit =>"[on|off]"}, virtual =>{ peerChan =>"<btnNumber> <actChn> ... [single|dual] [set|unset] [actor|remote|both]"
,press =>"[long|short]..."
,valvePos =>"<position>"},#acting as TC
smokeDetector =>{ test =>""
,alarmOn =>""
,alarmOff =>""
,peerChan =>"<btnNumber> <actChn> ... single [set|unset] actor"},
winMatic =>{ matic =>"<btn>"
,keydef =>"<btn> <txt1> <txt2>"
,create =>"<txt>"
,inhibit =>"[on|off]"},
keyMatic =>{ lock =>""
,unlock =>"[<sec>] ..."
,open =>"[<sec>] ..."
,inhibit =>"[on|off]"},
); );
# clones- - - - - - - - - - - - - - - - - # clones- - - - - - - - - - - - - - - - -
$culHmSubTypeSets{pushButton} = $culHmSubTypeSets{remote}; $culHmSubTypeSets{pushButton} = $culHmSubTypeSets{remote};
@ -791,19 +805,19 @@ $culHmSubTypeSets{swi} = $culHmSubTypeSets{remote};
$culHmSubTypeSets{motionDetector} = $culHmSubTypeSets{threeStateSensor}; $culHmSubTypeSets{motionDetector} = $culHmSubTypeSets{threeStateSensor};
my %culHmModelSets = (# channels of this subtype------------- my %culHmModelSets = (# channels of this subtype-------------
"HM-CC-VD" =>{valvePos => "position"}, "HM-CC-VD" =>{ valvePos => "position"},
"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>...", "HM-PB-4DIS-WM"=>{ text => "<txt1> <txt2>..."
#text => "<btn> [on|off] <txt1> <txt2>...", old style will not be offered anymore #text => "<btn> [on|off] <txt1> <txt2>...", old style will not be offered anymore
}, },
"HM-OU-LED16" =>{ led =>"[off|red|green|orange]" , "HM-OU-LED16" =>{ led =>"[off|red|green|orange]"
ilum =>"[0-15] [0-127]" }, ,ilum =>"[0-15] [0-127]"},
"HM-OU-CFM-PL" =>{ press => "[long|short] [on|off] ...", "HM-OU-CFM-PL" =>{ press => "[long|short] [on|off] ..."
inhibit =>"[on|off]"}, ,inhibit =>"[on|off]"},
"HM-Sys-sRP-Pl"=>{ setRepeat => "[no1..36] <sendName> <recName> [bdcast-yes|no]", "HM-Sys-sRP-Pl"=>{ setRepeat => "[no1..36] <sendName> <recName> [bdcast-yes|no]"
inhibit =>"[on|off]"}, ,inhibit =>"[on|off]"},
); );
# clones- - - - - - - - - - - - - - - - - # clones- - - - - - - - - - - - - - - - -
$culHmModelSets{"HM-RC-19-B"} = $culHmModelSets{"HM-RC-19"}; $culHmModelSets{"HM-RC-19-B"} = $culHmModelSets{"HM-RC-19"};