mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-16 10:46:03 +00:00
CFM repeat set, SD eliminat forward
git-svn-id: https://svn.fhem.de/fhem/trunk@3087 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
6d031a8be4
commit
0939ac6c1d
@ -124,7 +124,7 @@ sub CUL_HM_autoReadConfig($){
|
||||
while(@{$modules{CUL_HM}{helper}{updtCfgLst}}){
|
||||
my $name = shift(@{$modules{CUL_HM}{helper}{updtCfgLst}});
|
||||
my $hash = CUL_HM_name2Hash($name);
|
||||
if (0 != substr(CUL_HM_Get($hash,$name,"param","autoReadReg"),0,1)){
|
||||
if (0 != CUL_HM_getARead($name)){
|
||||
CUL_HM_Set($hash,$name,"getSerial");
|
||||
CUL_HM_Set($hash,$name,"getConfig");
|
||||
CUL_HM_Set($hash,$name,"statusRequest");
|
||||
@ -166,8 +166,8 @@ sub CUL_HM_updateConfig($){
|
||||
#delete $attr{$name}{peerIDs}; # remove historical data
|
||||
}
|
||||
|
||||
my $st = CUL_HM_Get($hash,$name,"param","subType");
|
||||
my $md = CUL_HM_Get($hash,$name,"param","model");
|
||||
my $st = CUL_HM_Get($hash,$name,"param","subType");
|
||||
my $md = CUL_HM_Get($hash,$name,"param","model");
|
||||
if ("HM-CC-TC" eq $md){
|
||||
$hash->{helper}{role}{chn} = 1 if (length($id) == 6); #tc special
|
||||
}
|
||||
@ -234,7 +234,7 @@ sub CUL_HM_updateConfig($){
|
||||
}
|
||||
}
|
||||
$attr{$name}{webCmd} = $webCmd if ($webCmd);
|
||||
push @getConfList,$name if (0 != substr(AttrVal($name,"autoReadReg","0"),0,1));
|
||||
push @getConfList,$name if (0 != CUL_HM_getARead($name));
|
||||
}
|
||||
$modules{CUL_HM}{helper}{updtCfgLst} = \@getConfList;
|
||||
CUL_HM_autoReadConfig("updateConfig");
|
||||
@ -952,9 +952,8 @@ sub CUL_HM_Parse($$) {##############################
|
||||
my $bitLoc = ($msgChn-1)*2;#calculate bit location
|
||||
my $mask = 3<<$bitLoc;
|
||||
my $value = sprintf("%08X",(hex($devState) &~$mask)|($msgState<<$bitLoc));
|
||||
push @entities,
|
||||
CUL_HM_UpdtReadBulk($shash,1,"color:".$value,
|
||||
"state:".$value);
|
||||
push @entities,CUL_HM_UpdtReadBulk($shash,1,"color:".$value,
|
||||
"state:".$value);
|
||||
if ($chnHash){
|
||||
$shash = $chnHash;
|
||||
my %colorTable=("00"=>"off","01"=>"red","02"=>"green","03"=>"orange");
|
||||
@ -1032,46 +1031,30 @@ sub CUL_HM_Parse($$) {##############################
|
||||
}
|
||||
elsif ($msgType eq "41"){ #Alarm detected
|
||||
my ($No,$state) = (substr($p,2,2),substr($p,4,2));
|
||||
if($dhash && $dname ne $name){ # update source(ID is reported in $dst...)
|
||||
if (!$dhash->{helper}{alarmNo} || $dhash->{helper}{alarmNo} ne $No){
|
||||
$dhash->{helper}{alarmNo} = $No;
|
||||
push @entities,CUL_HM_UpdtReadSingle($dhash,'state',
|
||||
(($state eq "01")?"off":
|
||||
(($state eq "C7")?"smoke-forward":
|
||||
"smoke-alarm")),1);
|
||||
}
|
||||
if(($dhash && $dname ne $name) && # update source(ID is reported in $dst...)
|
||||
(!$dhash->{helper}{alarmNo} || $dhash->{helper}{alarmNo} ne $No)){
|
||||
$dhash->{helper}{alarmNo} = $No;
|
||||
push @entities,
|
||||
CUL_HM_UpdtReadBulk($dhash,1,
|
||||
'state:'.(($state eq "01")?"off":"smoke-Alarm_".$No),
|
||||
"eventNo:".$No
|
||||
);
|
||||
}
|
||||
# - - - - - - now handle the team - - - - - -
|
||||
$shash->{helper}{alarmList} = "" if (!$shash->{helper}{alarmList});
|
||||
$shash->{helper}{alarmFwd} = "" if (!$shash->{helper}{alarmFwd});
|
||||
if ($state eq "01") { # clear Alarm for one sensor
|
||||
$shash->{helper}{alarmList} =~ s/",".$dst//;
|
||||
}
|
||||
elsif($state eq "C7"){# add alarm forwarding
|
||||
$shash->{helper}{alarmFwd} .= ",".$dst;
|
||||
}
|
||||
else{ # add alarm for Sensor
|
||||
$shash->{helper}{alarmList} .= ",".$dst;
|
||||
}
|
||||
my $alarmList; # make alarm ID list readable
|
||||
my $alarmList; # make alarm ID list readable
|
||||
foreach(split(",",$shash->{helper}{alarmList})){
|
||||
$alarmList .= CUL_HM_id2Name($_)."," if ($_);
|
||||
}
|
||||
if (!$alarmList){# all alarms are gone - clear forwarding
|
||||
foreach(split(",",$shash->{helper}{alarmFwd})){
|
||||
my $fHash = CUL_HM_id2Hash($1) if ($1);
|
||||
push @entities,CUL_HM_UpdtReadSingle($fHash,'state',"off",1)if ($fHash);
|
||||
}
|
||||
$shash->{helper}{alarmList} = "";
|
||||
$shash->{helper}{alarmFwd} = "";
|
||||
}
|
||||
my $alarmFwd; # make forward ID list readable
|
||||
foreach(split(",",$shash->{helper}{alarmFwd})){
|
||||
$alarmFwd .= CUL_HM_id2Name($_)."," if ($_);
|
||||
}
|
||||
$shash->{helper}{alarmList} = "" if (!$alarmList);
|
||||
push @event,"state:" .($alarmList?"smoke-Alarm":"off" );
|
||||
push @event,"smoke_detect:" .($alarmList?$alarmList :"none");
|
||||
push @event,"smoke_forward:".($alarmFwd ?$alarmFwd :"none");
|
||||
}
|
||||
elsif ($msgType eq "01"){ #Configs
|
||||
my $sType = substr($p,0,2);
|
||||
@ -1489,8 +1472,8 @@ sub CUL_HM_parseCommon(@){#####################################################
|
||||
elsif($subType eq "06"){ #reply to status request=======================
|
||||
my $rssi = substr($p,8,2);# --calculate RSSI
|
||||
CUL_HM_storeRssi(CUL_HM_hash2Name($shash),
|
||||
($dhash?CUL_HM_hash2Name($dhash):$shash->{IODev}{NAME}),
|
||||
(-1)*(hex($rssi)))
|
||||
($dhash?CUL_HM_hash2Name($dhash):$shash->{IODev}{NAME}),
|
||||
(-1)*(hex($rssi)))
|
||||
if ($rssi && $rssi ne '00' && $rssi ne'80');
|
||||
@{$modules{CUL_HM}{helper}{reqStatus}} = grep { $_ != $shash->{NAME} }
|
||||
@{$modules{CUL_HM}{helper}{reqStatus}};
|
||||
@ -1504,8 +1487,8 @@ sub CUL_HM_parseCommon(@){#####################################################
|
||||
else{
|
||||
my ($chn) = ($1) if($p =~ m/^..(..)/);
|
||||
if ($chn eq "00"){
|
||||
CUL_HM_queueAutoRead(CUL_HM_hash2Name($shash))
|
||||
if (1 < substr(AttrVal($shash->{NAME},"autoReadReg",0),0,1));
|
||||
CUL_HM_queueAutoRead(CUL_HM_hash2Name($shash))
|
||||
if (1 < CUL_HM_getARead($shash->{NAME}));
|
||||
return "powerOn" ;# check dst eq "000000" as well?
|
||||
}
|
||||
}
|
||||
@ -2243,32 +2226,36 @@ sub CUL_HM_Set($@) {
|
||||
}
|
||||
}
|
||||
elsif($md eq "HM-OU-CFM-PL"){
|
||||
return "use channel 1 of the device for LED" if ($chn != 1);
|
||||
my %color = (redL =>18,greenL =>34,orangeL =>50,
|
||||
redS =>17,greenS =>33,orangeS =>49);
|
||||
my @ledList = split(',',$a[2]);
|
||||
my $ledBytes;
|
||||
my $repeat = (defined $a[3] && $a[3] =~ m/^(\d+)$/)?$a[3]:1;
|
||||
return "repetition $repeat out of range [1..255]"
|
||||
if($repeat < 1 || $repeat > 255);
|
||||
|
||||
my $ledBytes = sprintf("%02X",$repeat);
|
||||
foreach my $led (@ledList){
|
||||
if (!$color{$led} ){# wrong parameter
|
||||
return "'$led' unknown. use: ".join(" ",sort keys(%color));
|
||||
}
|
||||
$ledBytes .= sprintf("%02X",$color{$led});
|
||||
}
|
||||
CUL_HM_PushCmdStack($hash,'++'.$flag.'11'.$id.$dst.'80'.$chn.'0101'.$ledBytes);
|
||||
CUL_HM_PushCmdStack($hash,'++'.$flag.'11'.$id.$dst.'80'.$chn.'01'.$ledBytes);
|
||||
}
|
||||
else{
|
||||
return "device for command cannot be identified";
|
||||
}
|
||||
}
|
||||
elsif($cmd eq "playTone") { #################################################
|
||||
$chn = "02" if (length($hash->{DEF}) == 6);# be nice, select implicite
|
||||
return "use channel 2 of the device to play MP3" if ($chn != 2);
|
||||
my @mp3List = split(',',$a[2]);
|
||||
my $mp3Bytes;
|
||||
my $repeat = (defined $a[3] && $a[3] =~ m/^(\d+)$/)?$a[3]:1;
|
||||
return "repetition $repeat out of range [1..255]"
|
||||
if($repeat < 1 || $repeat > 255);
|
||||
my $mp3Bytes = sprintf("%02X",$repeat);
|
||||
foreach my $mp3 (@mp3List){
|
||||
$mp3Bytes .= sprintf("%02X",$mp3);
|
||||
}
|
||||
CUL_HM_PushCmdStack($hash,'++'.$flag.'11'.$id.$dst.'80'.$chn.'0202'.$mp3Bytes);
|
||||
CUL_HM_PushCmdStack($hash,'++'.$flag.'11'.$id.$dst.'80'.$chn.'01'.$mp3Bytes);
|
||||
}
|
||||
elsif($cmd eq "ilum") { ################################################# reg
|
||||
return "$a[2] not specified. choose 0-15 for brightness" if ($a[2]>15);
|
||||
@ -2431,7 +2418,7 @@ sub CUL_HM_Set($@) {
|
||||
}
|
||||
}
|
||||
elsif($cmd eq "peerChan") { #################################################
|
||||
#peerChan <btnN> device ... [single|dual] [set|unset] [actor|remote|both]
|
||||
#peerChan <btnN> <device> ... [single|dual] [set|unset] [actor|remote|both]
|
||||
my ($bNo,$peerN,$single,$set,$target) = ($a[2],$a[3],$a[4],$a[5],$a[6]);
|
||||
$state = "";
|
||||
return "$bNo is not a button number" if(($bNo < 1) && !$chn);
|
||||
@ -2926,8 +2913,8 @@ sub CUL_HM_pushConfig($$$$$$$$) {#generate messages to cnfig data to register
|
||||
substr($content,$l,$ml));
|
||||
}
|
||||
CUL_HM_PushCmdStack($hash,"++A001".$src.$dst.$chn."06");
|
||||
my $rd = substr(CUL_HM_Get($hash,$hash->{NAME},"param","autoReadReg"),0,1);
|
||||
CUL_HM_queueAutoRead(CUL_HM_hash2Name($hash)) if ($rd=~m/\d/ && 2 < $rd);
|
||||
CUL_HM_queueAutoRead(CUL_HM_hash2Name($hash))
|
||||
if (2 < CUL_HM_getARead($hash->{NAME}));
|
||||
}
|
||||
sub CUL_HM_Resend($) {#resend a message if there is no answer
|
||||
my $hash = shift;
|
||||
@ -3774,13 +3761,18 @@ sub CUL_HM_qStateUpdat($){#in:name or id, queue send stat-request after 12 sec
|
||||
$name = CUL_HM_id2Name($name) if ($name =~ m/^[A-F0-9]{6,8}$/i);
|
||||
$name =~ s /_chn:..$//;
|
||||
return if (!$defs{$name}); #device unknown, ignore
|
||||
if (substr(AttrVal($name,"autoReadReg",0),0,1) > 3){
|
||||
if (CUL_HM_getARead($name) > 3){
|
||||
@{$modules{CUL_HM}{helper}{reqStatus}}=
|
||||
CUL_HM_noDup(@{$modules{CUL_HM}{helper}{reqStatus}},$name);
|
||||
RemoveInternalTimer("CUL_HM_reqStatus");
|
||||
InternalTimer(gettimeofday()+120,"CUL_HM_reqStatus","CUL_HM_reqStatus", 0);
|
||||
}
|
||||
}
|
||||
sub CUL_HM_getARead($){#return valid autoRegRead as integer
|
||||
my $name = shift;
|
||||
my $aRd = CUL_HM_Get($defs{$name},$name,"param","autoReadReg");
|
||||
return ($aRd eq "undefined")?0:int($aRd);
|
||||
}
|
||||
|
||||
#+++++++++++++++++ external use +++++++++++++++++++++++++++++++++++++++++++++++
|
||||
sub CUL_HM_putHash($) {# provide data for HMinfo
|
||||
@ -4157,8 +4149,8 @@ sub CUL_HM_putHash($) {# provide data for HMinfo
|
||||
activate learn mode. Whether commands are pending is reported on
|
||||
device level with parameter 'protCmdPend'.
|
||||
<ul>
|
||||
<li><B>peerChan <btn_no> <hmDevice> [single|dual]
|
||||
[set|unset] [actor|remote]</B><a name="CUL_HMpeerChan"></a><br>
|
||||
<li><B>peerChan <btn_no> <actChan> [single|<u>dual</u>]
|
||||
[<u>set</u>|unset] [<u>both</u>|actor|remote]</B><a name="CUL_HMpeerChan"></a><br>
|
||||
|
||||
peerChan will establish a connection between a sender-<B>channel</B> and
|
||||
an actuator-<B>channel</B> called link in HM nomenclatur. Peering must not be
|
||||
@ -4189,18 +4181,20 @@ sub CUL_HM_putHash($) {# provide data for HMinfo
|
||||
well as one sender-channel to multiple Actuator-channel is
|
||||
possible.<br>
|
||||
|
||||
<hmDevice> is the actuator-channel to be peered.<br>
|
||||
<actChan> is the actuator-channel to be peered.<br>
|
||||
|
||||
<btn_no> is the sender-channel (button) to be peered. If
|
||||
'single' is choosen buttons are counted from 1. For 'dual' btn_no is
|
||||
the number of the Button-pair to be used. I.e. '3' in dual is the
|
||||
3rd button pair correcponding to button 5 and 6 in single mode.<br>
|
||||
|
||||
If the command is executed on a channel the btn_no is ignored.<br>
|
||||
If the command is executed on a channel the btn_no is ignored.
|
||||
It needs to be set, should be 0<br>
|
||||
|
||||
[single|dual]: this mode impacts the default behavior of the
|
||||
Actuator upon using this button. E.g. a dimmer can be learned to a
|
||||
single button or to a button pair. <br>
|
||||
Defaults to dual.<br>
|
||||
|
||||
'dual' (default) Button pairs two buttons to one actuator. With a
|
||||
dimmer this means one button for dim-up and one for dim-down. <br>
|
||||
@ -4209,13 +4203,15 @@ sub CUL_HM_putHash($) {# provide data for HMinfo
|
||||
simple switch actuator to toggle on/off. Nevertheless also dimmer can
|
||||
be learned to only one button. <br>
|
||||
|
||||
[set|unset]: selects either enter a peering or remove it.<br>
|
||||
Defaults to set.<br>
|
||||
'set' will setup peering for the channels<br>
|
||||
|
||||
'unset' will remove the peering for the channels<br>
|
||||
|
||||
[actor|remote|both] limits the execution to only actor or only remote.
|
||||
This gives the user the option to redo the peering on the remote
|
||||
channel while the settings in the actor will not be removed.<br>
|
||||
Defaults to both.<br>
|
||||
|
||||
Example:
|
||||
<ul>
|
||||
@ -4322,13 +4318,17 @@ sub CUL_HM_putHash($) {# provide data for HMinfo
|
||||
<li>OutputUnit (HM-OU-CFM-PL)
|
||||
<ul>
|
||||
<li><B>led <color>[,<color>..]</B><br>
|
||||
Possible colors are [redL|greenL|yellowL|redS|greenS|yellowS]. A
|
||||
sequence of colors can be given separating the color entries by ','.
|
||||
White spaces must not be used in the list. 'S' indicates short and
|
||||
'L' long ilumination. <br></li>
|
||||
<li><B>playTone <MP3No>[,<MP3No>..]</B><br>
|
||||
Play a series of tones. List is to be entered separated by ','. White
|
||||
spaces must not be used in the list.<br></li>
|
||||
Possible colors are [redL|greenL|yellowL|redS|greenS|yellowS]. A
|
||||
sequence of colors can be given separating the color entries by ','.
|
||||
White spaces must not be used in the list. 'S' indicates short and
|
||||
'L' long ilumination. <br>
|
||||
repeat defines how many times the sequence is executed. Defaults to 1<br>
|
||||
</li>
|
||||
<li><B>playTone <MP3No>[,<MP3No>..] [,<repeat>..]</B><br>
|
||||
Play a series of tones. List is to be entered separated by ','. White
|
||||
spaces must not be used in the list.<br>
|
||||
repeat defines how many times the sequence is played. Defaults to 1<br>
|
||||
</li>
|
||||
</ul><br>
|
||||
</li>
|
||||
<li>HM-RC-19xxx
|
||||
|
@ -9,7 +9,6 @@ sub CommandXmlList($$);
|
||||
sub XmlEscape($);
|
||||
use Blocking;
|
||||
|
||||
|
||||
sub HMinfo_Initialize($$) {####################################################
|
||||
my ($hash) = @_;
|
||||
|
||||
@ -20,7 +19,8 @@ sub HMinfo_Define($$){#########################################################
|
||||
my ($hash, $def) = @_;
|
||||
my @a = split("[ \t][ \t]*", $def);
|
||||
my $name = $hash->{NAME};
|
||||
$hash->{Version} = "Beta-04";
|
||||
$hash->{Version} = "01";
|
||||
$attr{$name}{webCmd} = "protoEvents:rssi:peerXref:configCheck:models";
|
||||
return;
|
||||
}
|
||||
sub HMinfo_getParam(@) { ######################################################
|
||||
@ -55,12 +55,15 @@ sub HMinfo_regCheck(@) { ######################################################
|
||||
push @peerIdInReg,CUL_HM_name2Id($peer);
|
||||
}
|
||||
#- - - - check whether peer is required - - - -
|
||||
my $peerLinReg = (join ",",sort @peerIdInReg);
|
||||
$peerLinReg .= "," if ($peerLinReg);
|
||||
my $peerIDs = AttrVal($eName,"peerIDs","");
|
||||
$peerIDs =~ s/00000000,//;
|
||||
push @peerRegsFail,$eName." - found:".$peerLinReg." expected:".$peerIDs
|
||||
if ($peerLinReg ne $peerIDs);
|
||||
my $st = CUL_HM_Get($defs{$eName},$eName,"param","subType");
|
||||
if ($st !~ m/(thermostat|smokeDetector)/){
|
||||
my $peerLinReg = (join ",",sort @peerIdInReg);
|
||||
$peerLinReg .= "," if ($peerLinReg);
|
||||
my $peerIDs = AttrVal($eName,"peerIDs","");
|
||||
$peerIDs =~ s/00000000,//;
|
||||
push @peerRegsFail,$eName." - found:".$peerLinReg." expected:".$peerIDs
|
||||
if ($peerLinReg ne $peerIDs);
|
||||
}
|
||||
}
|
||||
return "\n incomplete register set\n " .(join "\n ",sort @regIncompl)
|
||||
."\n missing Peer Registerset\n ".(join "\n ",sort @peerRegsFail)
|
||||
@ -331,15 +334,6 @@ sub HMinfo_SetFn($$) {#########################################################
|
||||
elsif($cmd eq "models") {##print capability, models----------------------
|
||||
my %th = CUL_HM_putHash("culHmModel");
|
||||
my @model;
|
||||
push @model,sprintf("%4s %-24s %-16s %-13s %-5s %-5s %s"
|
||||
," ID"
|
||||
,"name"
|
||||
,"subType"
|
||||
,"supportedMode"
|
||||
,"Info"
|
||||
,"List"
|
||||
,"channels"
|
||||
);
|
||||
foreach (keys %th){
|
||||
my $mode = $th{$_}{rxt};
|
||||
$mode =~ s/c/config/;
|
||||
@ -355,17 +349,27 @@ sub HMinfo_SetFn($$) {#########################################################
|
||||
my ($n,$s,$e) = split(":",$_);
|
||||
$chan .= $s.(($s eq $e)?"":("-".$e))." ".$n.", ";
|
||||
}
|
||||
push @model,sprintf("%4s %-24s %-16s %-13s %-5s %-5s %s"
|
||||
,$_
|
||||
,$th{$_}{name}
|
||||
push @model,sprintf("%-16s %-24s %4s %-13s %-5s %-5s %s"
|
||||
,$th{$_}{st}
|
||||
,$th{$_}{name}
|
||||
,$_
|
||||
,$mode
|
||||
,$th{$_}{cyc}
|
||||
,$list
|
||||
,$chan
|
||||
);
|
||||
}
|
||||
$ret = $cmd.($filter?" filtered":"").":$filter\n ".join"\n ",grep(/$filter/,sort @model);
|
||||
$ret = $cmd.($filter?" filtered":"").":$filter\n "
|
||||
.sprintf("%-16s %-24s %4s %-13s %-5s %-5s %s\n "
|
||||
,"subType"
|
||||
,"name"
|
||||
,"ID"
|
||||
,"supportedMode"
|
||||
,"Info"
|
||||
,"List"
|
||||
,"channels"
|
||||
)
|
||||
.join"\n ",grep(/$filter/,sort @model);
|
||||
}
|
||||
elsif($cmd eq "help") {
|
||||
$ret = " Unknown argument $cmd, choose one of "
|
||||
@ -476,114 +480,105 @@ sub HMinfo_post($) {###########################################################
|
||||
<h3>HMinfo</h3>
|
||||
<ul>
|
||||
<tr><td>
|
||||
HMinfo is a module that shall support in getting an overview of HM
|
||||
installation and settings. It also allows some HM wide commands such
|
||||
as store all collected register settings.
|
||||
<br>
|
||||
HMinfo is a module that shall support in getting an overview of
|
||||
eQ-3 HomeMatic devices as defines in <a href="#CUL_HM">CUL_HM</a>.
|
||||
It also allows some HM wide commands such
|
||||
as store all collected register settings.<br><br>
|
||||
|
||||
Commands will be executed on all HM entities of the installation.
|
||||
If applicable and evident execution is restricted to related entities.
|
||||
This means that rssi is only executed on devices, not in channels.
|
||||
Channels never have rssi values.<br>
|
||||
Filter can be applied as following:<br>
|
||||
set <name> <cmd> <filter> [<param>]<br>
|
||||
whereby the filter is has the two segments<br>
|
||||
[-dcasev] [-f <filter>]<br>
|
||||
with filter for types <br>
|
||||
<li>
|
||||
d - device :include devices<br>
|
||||
c - channels :include channels<br>
|
||||
v - virtual :supress fhem virtual<br>
|
||||
p - physical :supress physical<br>
|
||||
a - aktor :supress actor<br>
|
||||
s - sensor :supress sensor<br>
|
||||
e - empty :include results even if requested fields are empty<br>
|
||||
</li>
|
||||
and/or a filter for names:<br>
|
||||
<li>
|
||||
-f - filter :regexp to filter entity names <br>
|
||||
</li>
|
||||
example:<br>
|
||||
<li>
|
||||
set hm param -d -f dim state # display param 'state' for all devices whos name contains dim
|
||||
set hm param -c -f ^dimUG$ peerList # display param 'peerList' for all channels whos name is dimUG
|
||||
set hm param -dcv expert # get attribut expert for all channels,devices or virtuals
|
||||
</li>
|
||||
This means that rssi is executed only on devices, never channels since
|
||||
they never have support rssi values.<br><br>
|
||||
<b>Filter</b>
|
||||
<ul> can be applied as following:<br><br>
|
||||
<code>set <name> <cmd> <filter> [<param>]</code><br>
|
||||
whereby filter has two segments, typefilter and name filter<br>
|
||||
[-dcasev] [-f <filter>]<br><br>
|
||||
filter for <b>types</b> <br>
|
||||
<ul>
|
||||
<li>d - device :include devices</li>
|
||||
<li>c - channels :include channels</li>
|
||||
<li>v - virtual :supress fhem virtual</li>
|
||||
<li>p - physical :supress physical</li>
|
||||
<li>a - aktor :supress actor</li>
|
||||
<li>s - sensor :supress sensor</li>
|
||||
<li>e - empty :include results even if requested fields are empty</li>
|
||||
</ul>
|
||||
and/or a filter for <b>names</b>:<br>
|
||||
<ul>
|
||||
<li>-f - filter :regexp to filter entity names </li>
|
||||
</ul>
|
||||
Example:<br>
|
||||
<ul><code>
|
||||
set hm param -d -f dim state # display param 'state' for all devices whos name contains dim<br>
|
||||
set hm param -c -f ^dimUG$ peerList # display param 'peerList' for all channels whos name is dimUG<br>
|
||||
set hm param -dcv expert # get attribut expert for all channels,devices or virtuals<br>
|
||||
</code></ul>
|
||||
</ul>
|
||||
<br>
|
||||
<a name="HMinfodefine"></a>
|
||||
<b>Define</b>
|
||||
<ul>
|
||||
<code>define <name> HMinfo</code><br>
|
||||
<code>define <name> HMinfo</code><br>
|
||||
Just one entity needs to be defines, no parameter are necessary.<br>
|
||||
</ul>
|
||||
<br>
|
||||
|
||||
<a name="HMinfoset"></a>
|
||||
<b>Set</b>
|
||||
even though the commands are more a get funktion they are implemented
|
||||
as set to allow simple web interface usage <br>
|
||||
<ul>
|
||||
<li><a href="#models">models</a><br>
|
||||
<li>list all HM models that are supported in FHEM
|
||||
</li>
|
||||
</li>
|
||||
<li><a href="#param">param <name> <name>...</a><br>
|
||||
<li>returns a table parameter values (attribute, readings,...)
|
||||
for all entities as a table
|
||||
</li>
|
||||
</li>
|
||||
<li><a href="#regCheck">regCheck</a><br>
|
||||
<li>performs a consistancy check on register readings for completeness
|
||||
</li>
|
||||
</li>
|
||||
<li><a href="#peerCheck">peerCheck</a><br>
|
||||
<li>performs a consistancy check on peers. If a peer is set in one channel
|
||||
this funktion will search wether the peer also exist on the opposit side.
|
||||
</li>
|
||||
</li>
|
||||
<li><a href="#configCheck">configCheck</a><br>
|
||||
<li>performs a consistancy check of HM settings. It includes regCheck and peerCheck
|
||||
</li>
|
||||
</li>
|
||||
<li><a href="#peerXref">peerXref</a><br>
|
||||
<li>provides a cross-reference on peerings, a kind of who-with-who summary over HM
|
||||
</li>
|
||||
</li>
|
||||
<li><a href="#saveConfig">saveConfig</a><br>
|
||||
<li>performs a save for all HM register setting.
|
||||
</li>
|
||||
</li>
|
||||
<li><a href="#clearProtocol">clearProtocol</a><br>
|
||||
<li>executes a set clear msgEvents on all HM devices
|
||||
</li>
|
||||
</li>
|
||||
<li><a href="#clearReadings">clearReadings</a><br>
|
||||
<li>executes a set clear readings on all HM devices
|
||||
</li>
|
||||
</li>
|
||||
<li><a href="#clearRssi">clearRssi</a><br>
|
||||
<li>executes a set clear rssi on all HM devices
|
||||
</li>
|
||||
</li>
|
||||
<li><a href="#autoReadReg">autoReadReg</a><br>
|
||||
<li>stimulates a read of the configuration for the devices.
|
||||
</li>
|
||||
</li>
|
||||
<li><a href="#sys">sys</a><br>
|
||||
</li>
|
||||
even though the commands are more a get funktion they are implemented
|
||||
as set to allow simple web interface usage<br>
|
||||
<ul>
|
||||
<li><a href="#models">models</a><br>
|
||||
list all HM models that are supported in FHEM
|
||||
</li>
|
||||
<li><a href="#param">param <name> <name>...</a><br>
|
||||
returns a table parameter values (attribute, readings,...)
|
||||
for all entities as a table
|
||||
</li>
|
||||
<li><a href="#regCheck">regCheck</a><br>
|
||||
performs a consistancy check on register readings for completeness
|
||||
</li>
|
||||
<li><a href="#peerCheck">peerCheck</a><br>
|
||||
performs a consistancy check on peers. If a peer is set in one channel
|
||||
this funktion will search wether the peer also exist on the opposit side.
|
||||
</li>
|
||||
<li><a href="#configCheck">configCheck</a><br>
|
||||
performs a consistancy check of HM settings. It includes regCheck and peerCheck
|
||||
</li>
|
||||
<li><a href="#peerXref">peerXref</a><br>
|
||||
provides a cross-reference on peerings, a kind of who-with-who summary over HM
|
||||
</li>
|
||||
<li><a href="#saveConfig">saveConfig</a><br>
|
||||
performs a save for all HM register setting.
|
||||
</li>
|
||||
<li><a href="#clearProtocol">clearProtocol</a><br>
|
||||
executes a set clear msgEvents on all HM devices
|
||||
</li>
|
||||
<li><a href="#clearReadings">clearReadings</a><br>
|
||||
executes a set clear readings on all HM devices
|
||||
</li>
|
||||
<li><a href="#clearRssi">clearRssi</a><br>
|
||||
executes a set clear rssi on all HM devices
|
||||
</li>
|
||||
<li><a href="#autoReadReg">autoReadReg</a><br>
|
||||
stimulates a read of the configuration for the devices.
|
||||
</li>
|
||||
<li><a href="#sys">sys</a><br>
|
||||
</li>
|
||||
</ul>
|
||||
</ul>
|
||||
<br>
|
||||
|
||||
<a name="HMinfoget"></a>
|
||||
<b>Get</b>
|
||||
<ul>
|
||||
N/A
|
||||
</ul>
|
||||
<ul> N/A </ul>
|
||||
<br><br>
|
||||
|
||||
<a name="HMinfoattr"></a>
|
||||
<b>Attributes</b>
|
||||
<ul>
|
||||
N/A
|
||||
</ul>
|
||||
<ul>N/A</ul>
|
||||
</ul>
|
||||
=end html
|
||||
=cut
|
||||
|
@ -752,13 +752,13 @@ my %culHmSubTypeSets = (# channels of this subtype
|
||||
up => "[<changeValue>] [ontime] [ramptime]...",
|
||||
down => "[<changeValue>] [ontime] [ramptime]..."
|
||||
},
|
||||
remote =>{ peerChan => "<btnNumber> device ... [single|dual] [set|unset] [actor|remote|both]",},
|
||||
threeStateSensor =>{ peerChan => "<btnNumber> device ... single [set|unset] [actor|remote|both]",},
|
||||
virtual =>{ peerChan => "<btnNumber> device ... [single|dual] [set|unset] [actor|remote|both]",
|
||||
remote =>{ peerChan => "<btnNumber> <actChn> ... [single|dual] [set|unset] [actor|remote|both]",},
|
||||
threeStateSensor =>{ peerChan => "<btnNumber> <actChn> ... single [set|unset] [actor|remote|both]",},
|
||||
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> device ... single [set|unset] actor",},
|
||||
peerChan => "<btnNumber> <actChn> ... single [set|unset] actor",},
|
||||
winMatic =>{ matic => "<btn>",
|
||||
keydef => "<btn> <txt1> <txt2>",
|
||||
create => "<txt>" },
|
||||
@ -779,9 +779,7 @@ my %culHmModelSets = (# channels of this subtype-------------
|
||||
"HM-PB-4DIS-WM"=>{text => "<btn> [on|off] <txt1> <txt2>"},
|
||||
"HM-OU-LED16" =>{led =>"[off|red|green|orange]" ,
|
||||
ilum =>"[0-15] [0-127]" },
|
||||
"HM-OU-CFM-PL" =>{led => "<color>[,<color>..]",
|
||||
playTone => "<MP3No>[,<MP3No>..]",
|
||||
press => "[long|short] [on|off] ..."},
|
||||
"HM-OU-CFM-PL" =>{press => "[long|short] [on|off] ..."},
|
||||
"HM-Sys-sRP-Pl"=>{setRepeat => "[no1..36] <sendName> <recName> [bdcast-yes|no]"},
|
||||
);
|
||||
# clones- - - - - - - - - - - - - - - - -
|
||||
@ -791,7 +789,7 @@ $culHmModelSets{"HM-RC-19-SW"} = $culHmModelSets{"HM-RC-19"};
|
||||
|
||||
my %culHmChanSets = (
|
||||
"HM-CC-TC02" =>{
|
||||
peerChan => "<btnNumber> device ... single [set|unset] [actor|remote|both]",
|
||||
peerChan => "<btnNumber> <actChn> ... single [set|unset] [actor|remote|both]",
|
||||
"day-temp" => "[on,off,6.0..30.0]",
|
||||
"night-temp" => "[on,off,6.0..30.0]",
|
||||
"party-temp" => "[on,off,6.0..30.0]",
|
||||
@ -811,6 +809,8 @@ my %culHmChanSets = (
|
||||
sysTime => "" },
|
||||
"HM-SEC-WIN01"=>{ stop =>"",
|
||||
level =>"<level> <relockDly> <speed>..."},
|
||||
"HM-OU-CFM-PL01" =>{led => "<color>[,<color>...] [<repeat>]"},
|
||||
"HM-OU-CFM-PL02" =>{playTone => "<MP3No>[,<MP3No>...] [<repeat>]"},
|
||||
);
|
||||
# clones- - - - - - - - - - - - - - - - -
|
||||
$culHmChanSets{"HM-CC-TC00"} = $culHmChanSets{"HM-CC-TC02"};
|
||||
|
Loading…
x
Reference in New Issue
Block a user