mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-03 16:56:54 +00:00
level corrections and addons
git-svn-id: https://svn.fhem.de/fhem/trunk@5940 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
751e5f0143
commit
52b6827cb8
@ -1125,6 +1125,7 @@ sub HMLAN_getVerbLvl ($$$$){#get verboseLevel for message
|
||||
|
||||
=end html
|
||||
=begin html_DE
|
||||
|
||||
<a name="HMLAN"></a>
|
||||
<h3>HMLAN</h3>
|
||||
<ul>
|
||||
|
@ -145,7 +145,7 @@ sub CUL_HM_Initialize($) {
|
||||
."burstAccess:0_off,1_auto "
|
||||
."param msgRepeat "
|
||||
."tempListTmpl "
|
||||
."levelRange "
|
||||
."levelRange levelMap "
|
||||
."aesCommReq:1,0 " # IO will request AES if
|
||||
."rssiLog:1,0 " # enable writing RSSI to Readings (device only)
|
||||
.$readingFnAttributes;
|
||||
@ -701,6 +701,23 @@ sub CUL_HM_Attr(@) {#################################
|
||||
return "min:$min mit be lower then max:$max" if ($min >= $max);
|
||||
}
|
||||
}
|
||||
elsif($attrName eq "levelMap" ){
|
||||
if ($cmd eq "set"){
|
||||
return "use $attrName only for channels" if (!$hash->{helper}{role}{chn});
|
||||
delete $hash->{helper}{lm};
|
||||
foreach (split":",$attrVal){
|
||||
my ($val,$vNm) = split"=",$_;
|
||||
if ($val !~ m/^\d*$/){
|
||||
delete $hash->{helper}{lm};
|
||||
return "$val is not numeric";
|
||||
}
|
||||
$hash->{helper}{lm}{$val} = $vNm;
|
||||
}
|
||||
}
|
||||
else{
|
||||
delete $hash->{helper}{lm};
|
||||
}
|
||||
}
|
||||
|
||||
CUL_HM_queueUpdtCfg($name) if ($updtReq);
|
||||
return;
|
||||
@ -1225,7 +1242,7 @@ sub CUL_HM_Parse($$) {#########################################################
|
||||
my $err = hex(substr($p,6,2));
|
||||
if ($lvlStr{md}{$md}){$lvl = $lvlStr{md}{$md}{$lvl}}
|
||||
elsif ($lvlStr{st}{$st}){$lvl = $lvlStr{st}{$st}{$lvl} }
|
||||
else {$lvl = hex($lvl)/2}
|
||||
else {$lvl = hex($lvl)}
|
||||
|
||||
push @evtEt,[$shash,1,"level:$lvl"] if($md eq "HM-Sen-Wa-Od");
|
||||
push @evtEt,[$shash,1,"state:$lvl"];
|
||||
@ -1432,7 +1449,8 @@ sub CUL_HM_Parse($$) {#########################################################
|
||||
$physLvl = ReadingsVal($name,"phyLevel",$val)
|
||||
if(!defined $physLvl); #not updated? use old or ignore
|
||||
|
||||
my $vs = ($val==100 ? "on":($pVal==0 ? "off":"$val")); # user string...
|
||||
my $vs = ($shash->{helper}{lm} && $shash->{helper}{lm}{$val})?$shash->{helper}{lm}{$val}
|
||||
:($val==100 ? "on":($pVal==0 ? "off":"$val")); # user string...
|
||||
push @evtEt,[$shash,1,"level:$val"];
|
||||
push @evtEt,[$shash,1,"pct:$val"]; # duplicate to level - necessary for "slider"
|
||||
push @evtEt,[$shash,1,"deviceMsg:$vs$target"] if($chn ne "00");
|
||||
@ -1790,7 +1808,8 @@ sub CUL_HM_Parse($$) {#########################################################
|
||||
}
|
||||
if (defined($state)){# if state was detected post events
|
||||
my $txt;
|
||||
if ($lvlStr{md}{$md}){$txt = $lvlStr{md}{$md}{$state}}
|
||||
if ($shash->{helper}{lm} && $shash->{helper}{lm}{hex($state)}){$txt = $shash->{helper}{lm}{hex($state)}}
|
||||
elsif ($lvlStr{md}{$md}){$txt = $lvlStr{md}{$md}{$state}}
|
||||
elsif ($lvlStr{st}{$st}){$txt = $lvlStr{st}{$st}{$state}}
|
||||
else {$txt = "unknown:$state"}
|
||||
|
||||
@ -2360,14 +2379,15 @@ sub CUL_HM_parseCommon(@){#####################################################
|
||||
my $chn = hex(substr($p,0,2));
|
||||
my $long = ($chn & 0x40)?"long":"short";
|
||||
$chn = $chn & 0x3f;
|
||||
my $cName = CUL_HM_id2Hash($src.sprintf("%02X",$chn));
|
||||
$cName = $cName->{NAME};
|
||||
my $cHash = CUL_HM_id2Hash($src.sprintf("%02X",$chn));
|
||||
my $cName = $cHash->{NAME};
|
||||
my $level = "-";
|
||||
if (length($p)>5){
|
||||
my $l = substr($p,4,2);
|
||||
if ($lvlStr{md}{$md} && $lvlStr{md}{$md}{$l}){$level = $lvlStr{md}{$md}{$l}}
|
||||
elsif ($lvlStr{st}{$st} && $lvlStr{st}{$st}{$l}){$level = $lvlStr{st}{$st}{$l}}
|
||||
else {$level = hex($l)};
|
||||
if ($cHash->{helper}{lm} && $cHash->{helper}{lm}{hex($l)}){$level = $cHash->{helper}{lm}{hex($l)}}
|
||||
elsif ($lvlStr{md}{$md} && $lvlStr{md}{$md}{$l} ){$level = $lvlStr{md}{$md}{$l}}
|
||||
elsif ($lvlStr{st}{$st} && $lvlStr{st}{$st}{$l} ){$level = $lvlStr{st}{$st}{$l}}
|
||||
else {$level = hex($l)};
|
||||
}
|
||||
elsif($mTp eq "40"){
|
||||
$level = $long;
|
||||
@ -3901,11 +3921,22 @@ sub CUL_HM_Set($@) {#+++++++++++++++++ set command+++++++++++++++++++++++++++++
|
||||
}
|
||||
else{
|
||||
my @keys;
|
||||
foreach my $tp (keys %lvlStr){
|
||||
foreach my $mk (keys %{$lvlStr{$tp}}){
|
||||
foreach (keys %{$lvlStr{$tp}{$mk}}){
|
||||
$cndNo = hex($_) if ($cond eq $lvlStr{$tp}{$mk}{$_});
|
||||
push @keys,$lvlStr{$tp}{$mk}{$_};
|
||||
if ($chnHash->{helper}{lm}){
|
||||
foreach (keys %{$chnHash->{helper}{lm}}){
|
||||
if ($chnHash->{helper}{lm}{$_} eq $cond){
|
||||
$cndNo = $_;
|
||||
last;
|
||||
}
|
||||
push @keys,$chnHash->{helper}{lm};
|
||||
}
|
||||
}
|
||||
else{
|
||||
foreach my $tp (keys %lvlStr){
|
||||
foreach my $mk (keys %{$lvlStr{$tp}}){
|
||||
foreach (keys %{$lvlStr{$tp}{$mk}}){
|
||||
$cndNo = hex($_) if ($cond eq $lvlStr{$tp}{$mk}{$_});
|
||||
push @keys,$lvlStr{$tp}{$mk}{$_};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1760,6 +1760,7 @@ sub HMinfo_noDup(@) {#return list with no duplicates###########################
|
||||
<a name="HMinfo"></a>
|
||||
<h3>HMinfo</h3>
|
||||
<ul>
|
||||
|
||||
HMinfo is a module to support getting an overview of
|
||||
eQ-3 HomeMatic devices as defines in <a href="#CUL_HM">CUL_HM</a>. <br><br>
|
||||
<B>Status information and counter</B><br>
|
||||
@ -1825,7 +1826,7 @@ sub HMinfo_noDup(@) {#return list with no duplicates###########################
|
||||
list all HM models that are supported in FHEM
|
||||
</li>
|
||||
<li><a name="#HMinfoparam">param</a> <a href="#HMinfoFilter">[filter]</a> <name> <name>...<br>
|
||||
returns a table parameter values (attribute, readings,...)
|
||||
returns a table of parameter values (attribute, readings,...)
|
||||
for all entities as a table
|
||||
</li>
|
||||
<li><a name="#HMinforegister">register</a> <a href="#HMinfoFilter">[filter]</a><br>
|
||||
@ -1835,8 +1836,8 @@ sub HMinfo_noDup(@) {#return list with no duplicates###########################
|
||||
performs a consistency check on register readings for completeness
|
||||
</li>
|
||||
<li><a name="#HMinfopeerCheck">peerCheck</a> <a href="#HMinfoFilter">[filter]</a><br>
|
||||
performs a consistency check on peers. If a peer is set in one channel
|
||||
this funktion will search wether the peer also exist on the opposit side.
|
||||
performs a consistency check on peers. If a peer is set in a channel
|
||||
it will check wether the peer also exist on the opposit side.
|
||||
</li>
|
||||
<li><a name="#HMinfopeerXref">peerXref</a> <a href="#HMinfoFilter">[filter]</a><br>
|
||||
provides a cross-reference on peerings, a kind of who-with-who summary over HM
|
||||
@ -1853,9 +1854,9 @@ sub HMinfo_noDup(@) {#return list with no duplicates###########################
|
||||
</li>
|
||||
<li><a name="#HMinfoprotoEvents">protoEvents </a><a href="#HMinfoFilter">[filter]</a> <br>
|
||||
this is likely a very <B>important view</B> for message incidents.
|
||||
Information about pending commands and - much more relevant - about failed executions
|
||||
is given in a table over all devices.<br>
|
||||
Consider to clear this statistic use <a name="#HMinfoclear">clear Protocol</a>.<br>
|
||||
Information about pending commands and - much more relevant - about failed executions
|
||||
is given in a table over all devices.<br>
|
||||
Consider to clear this statistic use <a name="#HMinfoclear">clear Protocol</a>.<br>
|
||||
</li>
|
||||
<li><a name="#HMinforssi">rssi </a><a href="#HMinfoFilter">[filter]</a><br>
|
||||
statistic over rssi data for HM entities.<br>
|
||||
@ -1881,7 +1882,7 @@ sub HMinfo_noDup(@) {#return list with no duplicates###########################
|
||||
</ul>
|
||||
<a name="HMinfoset"><b>Set</b></a>
|
||||
<ul>
|
||||
even though the commands are more a get funktion they are implemented
|
||||
Even though the commands are a get funktion they are implemented
|
||||
as set to allow simple web interface usage<br>
|
||||
<ul>
|
||||
<li><a name="#HMinfoupdate">update</a><br>
|
||||
@ -1925,6 +1926,7 @@ sub HMinfo_noDup(@) {#return list with no duplicates###########################
|
||||
See <a href="#CUL_HMsaveConfig">CUL_HM saveConfig</a>.
|
||||
</li>
|
||||
|
||||
|
||||
<br>
|
||||
<li><a name="#HMinfotempList">tempList</a> <a href="#HMinfoFilter">[filter] [save|restore|verify] [<file>]</a><br>
|
||||
this function supports handling of tempList for thermstates.
|
||||
@ -1966,11 +1968,11 @@ sub HMinfo_noDup(@) {#return list with no duplicates###########################
|
||||
<br>
|
||||
</li>
|
||||
<li><a name="#HMinfotempListTmpl">tempListTmpl</a> <a href="#HMinfoFilter">[filter] [templateName][verify|restore] [<file>]</a><br>
|
||||
program one or more thermostat lists. The list of thermostats is selected by filter.<br>
|
||||
program one or more thermostat lists. The list of thermostats is selected by filter.<br>
|
||||
<ul>
|
||||
<li><B>templateName</B> is the name of the template as being named in the file. The file format ist
|
||||
identical to <a ref="#HMinfotempList">tempList</a>. If the entity in the file matches templateName the subsequent
|
||||
temp-settings from the file are bing programmed to all Thermostats that match the filter<br></li>
|
||||
<li><B>templateName</B> is the name of the template as being named in the file. The file format ist
|
||||
identical to <a ref="#HMinfotempList">tempList</a>. If the entity in the file matches templateName the subsequent
|
||||
temp-settings from the file are bing programmed to all Thermostats that match the filter<br></li>
|
||||
<li><B>file</B> name of the file to be used. Default: <B>tempList.cfg</B></li>
|
||||
</ul>
|
||||
</li>
|
||||
@ -2032,6 +2034,7 @@ sub HMinfo_noDup(@) {#return list with no duplicates###########################
|
||||
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>
|
||||
<br>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@ -2123,6 +2126,7 @@ sub HMinfo_noDup(@) {#return list with no duplicates###########################
|
||||
set to 1 will prevent any automatic operation, update or default settings
|
||||
in CUL_HM.<br>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
<br>
|
||||
<a name="HMinfovariables"><b>Variables</b></a>
|
||||
@ -2133,6 +2137,7 @@ sub HMinfo_noDup(@) {#return list with no duplicates###########################
|
||||
<li><b>W_unConfRegs:</b> Warning:list of entities with unconfirmed register changes. Execute getConfig to clear this.</li>
|
||||
<li><b>I_rssiMinLevel:</b> Info:counts of rssi min readings per device, clustered in blocks</li>
|
||||
|
||||
|
||||
<li><b>ERR__protocol:</b> Error:count of non-recoverable protocol events per device.
|
||||
Those events are NACK, IOerr, ResendFail, CmdDel, CmdPend.<br>
|
||||
Counted are the number of device with those events, not the number of events!</li>
|
||||
@ -2149,6 +2154,7 @@ sub HMinfo_noDup(@) {#return list with no duplicates###########################
|
||||
W_sum_<reading>: count of readings as defined in attribut
|
||||
<a href="#HMinfosumStatus">sumStatus</a>. </li>
|
||||
Example:<br>
|
||||
|
||||
<ul><code>
|
||||
ERR___rssiCrit LightKittchen,WindowDoor,Remote12<br>
|
||||
ERR__protocol NACK:2 ResendFail:5 CmdDel:2 CmdPend:1<br>
|
||||
@ -2163,4 +2169,402 @@ sub HMinfo_noDup(@) {#return list with no duplicates###########################
|
||||
</ul>
|
||||
</ul>
|
||||
=end html
|
||||
|
||||
|
||||
=begin html_DE
|
||||
|
||||
<a name="HMinfo"></a>
|
||||
<h3>HMinfo</h3>
|
||||
<ul>
|
||||
<tr><td>
|
||||
Das Modul HMinfo ermöglicht einen Überblick über eQ-3 HomeMatic Geräte, die mittels <a href="#CUL_HM">CUL_HM</a> definiert sind.<br><br>
|
||||
<B>Status Informationen und Zähler</B><br>
|
||||
HMinfo gibt einen Überlick über CUL_HM Installationen einschliesslich aktueller Zustände.
|
||||
Readings und Zähler werden aus Performance Gründen nicht automatisch aktualisiert. <br>
|
||||
Mit dem Kommando <a href="#HMinfoupdate">update</a> können die Werte aktualisiert werden.
|
||||
<ul><code><br>
|
||||
set hm update<br>
|
||||
</code></ul><br>
|
||||
Die Webansicht von HMinfo stellt Details über CUL_HM Instanzen mit ungewöhnlichen Zuständen zur Verfügung. Dazu gehören:
|
||||
<ul>
|
||||
<li>Action Detector Status</li>
|
||||
<li>CUL_HM Geräte und Zustände</li>
|
||||
<li>Ereignisse im Zusammenhang mit Kommunikationsproblemen</li>
|
||||
<li>Zähler für bestimmte Readings und Zustände (z.B. battery) - <a href="#HMinfoattr">attribut controlled</a></li>
|
||||
<li>Zähler für Readings, die auf Fehler hindeuten (z.B. overheat, motorError) - <a href="#HMinfoattr">attribut controlled</a></li>
|
||||
</ul>
|
||||
<br>
|
||||
|
||||
Weiterhin stehen HM Kommandos zur Verfügung, z.B. für das Speichern aller gesammelten Registerwerte.<br><br>
|
||||
|
||||
Ein Kommando wird für alle HM Instanzen der kompletten Installation ausgeführt.
|
||||
Die Ausführung ist jedoch auf die dazugehörigen Instanzen beschränkt.
|
||||
So wird rssi nur auf Geräte angewendet, da Kanäle RSSI Werte nicht unterstützen.<br><br>
|
||||
<a name="HMinfoFilter"><b>Filter</b></a>
|
||||
<ul> werden wie folgt angewendet:<br><br>
|
||||
<code>set <name> <cmd> <filter> [<param>]</code><br>
|
||||
wobei sich filter aus Typ und Name zusammensetzt<br>
|
||||
[-dcasev] [-f <filter>]<br><br>
|
||||
<b>Typ</b> <br>
|
||||
<ul>
|
||||
<li>d - device :verwende Gerät</li>
|
||||
<li>c - channels :verwende Kanal</li>
|
||||
<li>v - virtual :unterdrücke virtuelle Instanz</li>
|
||||
<li>p - physical :unterdrücke physikalische Instanz</li>
|
||||
<li>a - aktor :unterdrücke Aktor</li>
|
||||
<li>s - sensor :unterdrücke Sensor</li>
|
||||
<li>e - empty :verwendet das Resultat auch wenn die Felder leer sind</li>
|
||||
</ul>
|
||||
und/oder <b>Name</b>:<br>
|
||||
<ul>
|
||||
<li>-f <filter> :Regulärer Ausdruck (regexp), um die Instanznamen zu filtern</li>
|
||||
</ul>
|
||||
Beispiel:<br>
|
||||
<ul><code>
|
||||
set hm param -d -f dim state # Zeige den Parameter 'state' von allen Geräten, die "dim" im Namen enthalten<br>
|
||||
set hm param -c -f ^dimUG$ peerList # Zeige den Parameter 'peerList' für alle Kanäle mit dem Namen "dimUG"<br>
|
||||
set hm param -dcv expert # Ermittle das Attribut expert für alle Geräte, Kanäle und virtuelle Instanzen<br>
|
||||
</code></ul>
|
||||
</ul>
|
||||
<br>
|
||||
<a name="HMinfodefine"><b>Define</b></a>
|
||||
<ul>
|
||||
<code>define <name> HMinfo</code><br>
|
||||
Es muss nur eine Instanz ohne jegliche Parameter definiert werden.<br>
|
||||
</ul>
|
||||
<br>
|
||||
<a name="HMinfoget"><b>Get</b></a>
|
||||
<ul>
|
||||
<li><a name="#HMinfomodels">models</a><br>
|
||||
zeige alle HM Modelle an, die von FHEM unterstützt werden
|
||||
</li>
|
||||
<li><a name="#HMinfoparam">param</a> <a href="#HMinfoFilter">[filter]</a> <name> <name>...<br>
|
||||
zeigt Parameterwerte (Attribute, Readings, ...) für alle Instanzen in Tabellenform an
|
||||
</li>
|
||||
<li><a name="#HMinforegister">register</a> <a href="#HMinfoFilter">[filter]</a><br>
|
||||
zeigt eine Tabelle mit Registern einer Instanz an
|
||||
</li>
|
||||
<li><a name="#HMinforegCheck">regCheck</a> <a href="#HMinfoFilter">[filter]</a><br>
|
||||
validiert Registerwerte
|
||||
</li>
|
||||
<li><a name="#HMinfopeerCheck">peerCheck</a> <a href="#HMinfoFilter">[filter]</a><br>
|
||||
validiert die Einstellungen der Paarungen (Peers). Hat ein Kanal einen Peer gesetzt, muss dieser auch auf
|
||||
der Gegenseite gesetzt sein.
|
||||
</li>
|
||||
<li><a name="#HMinfopeerXref">peerXref</a> <a href="#HMinfoFilter">[filter]</a><br>
|
||||
erzeugt eine komplette Querverweisliste aller Paarungen (Peerings)
|
||||
</li>
|
||||
<li><a name="#HMinfoconfigCheck">configCheck</a> <a href="#HMinfoFilter">[filter]</a><br>
|
||||
Plausibilitätstest aller HM Einstellungen inklusive regCheck und peerCheck
|
||||
</li>
|
||||
<li><a name="#HMinfotemplateList">templateList [<name>]</a><br>
|
||||
zeigt eine Liste von Vorlagen. Ist kein Name angegeben, werden alle Vorlagen angezeigt<br>
|
||||
</li>
|
||||
<li><a name="#HMinfomsgStat">msgStat</a> <a href="#HMinfoFilter">[filter]</a><br>
|
||||
zeigt eine Statistik aller Meldungen der letzen Woche<br>
|
||||
</li>
|
||||
<li><a name="#HMinfoprotoEvents">protoEvents</a> <a href="#HMinfoFilter">[filter]</a> <br>
|
||||
vermutlich die <B>wichtigste Auflistung</B> für Meldungsprobleme.
|
||||
Informationen über ausstehende Kommandos und fehlgeschlagene Sendevorgänge
|
||||
für alle Geräte in Tabellenform.<br>
|
||||
Mit <a name="#HMinfoclear">clear Protocol</a> kann die Statistik gelöscht werden.<br>
|
||||
</li>
|
||||
<li><a name="#HMinforssi">rssi </a><a href="#HMinfoFilter">[filter]</a><br>
|
||||
Statistik über die RSSI Werte aller HM Instanzen.<br>
|
||||
</li>
|
||||
|
||||
<li><a name="#HMinfotemplateChk">templateChk <a href="#HMinfoFilter">[filter] <template> <peer:[long|short]> [<param1> ...]</a><br>
|
||||
Verifiziert, ob die Registerwerte mit der Vorlage in Einklang stehen.<br>
|
||||
Die Parameter sind identisch mit denjenigen für <a href="#HMinfotemplateSet">templateSet</a>.<br>
|
||||
Wenn kein Peer benötigt wird, stattdessen none verwenden.
|
||||
Beispiele für die Überprüfung von Einstellungen<br>
|
||||
<ul><code>
|
||||
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 # RolloNord peerName, long only<br>
|
||||
set hm templateChk -f RolloNord BlStopUpLg peerName # RolloNord peerName, long and short<br>
|
||||
set hm templateChk -f RolloNord BlStopUpLg peerName:all # RolloNord peerName, long and short<br>
|
||||
set hm templateChk -f RolloNord BlStopUpLg all:long # RolloNord any peer, long only<br>
|
||||
set hm templateChk -f RolloNord BlStopUpLg all # RolloNord any peer,long and short<br>
|
||||
set hm templateChk -f Rollo.* BlStopUpLg all # each Rollo* any peer,long and short<br>
|
||||
set hm templateChk BlStopUpLg # each entities<br>
|
||||
</code></ul>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="HMinfoset"><b>Set</b></a>
|
||||
<ul>
|
||||
Obwohl die Kommandos Einstellungen abrufen (get function), werden sie mittels set ausgeführt, um die
|
||||
Benutzung mittels Web Interface zu erleichtern.<br>
|
||||
<ul>
|
||||
<li><a name="#HMinfoupdate">update</a><br>
|
||||
Aktualisiert HM Status Zähler.
|
||||
</li>
|
||||
<li><a name="#HMinfoautoReadReg">autoReadReg</a> <a href="#HMinfoFilter">[filter]</a><br>
|
||||
Aktiviert das automatische Lesen der Konfiguration für ein CUL_HM Gerät, wenn das Attribut autoReadReg auf 1 oder höher steht.
|
||||
</li>
|
||||
<li><a name="#HMinfoclear">clear</a> <a href="#HMinfoFilter">[filter]</a> [Protocol|readings|msgStat|register|rssi]<br>
|
||||
Führt ein set clear ... für alle HM Instanzen aus<br>
|
||||
<ul>
|
||||
<li>Protocol bezieht sich auf set clear msgEvents</li>
|
||||
<li>readings bezieht sich auf set clear readings</li>
|
||||
<li>rssi löscht alle rssi Zähler</li>
|
||||
<li>msgStat löscht die HM Meldungsstatistik</li>
|
||||
<li>register löscht alle Einträge in den Readings</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a name="#HMinfosaveConfig">saveConfig</a> <a href="#HMinfoFilter">[filter] [<file>]</a><br>
|
||||
Sichert alle HM Registerwerte und Peers. Siehe <a href="#CUL_HMsaveConfig">CUL_HM saveConfig</a>.<br>
|
||||
<a ref="#HMinfopurgeConfig">purgeConfig</a> wird automatisch ausgeführt, wenn die Datenmenge 1 MByte übersteigt.<br>
|
||||
</li>
|
||||
<li><a name="#HMinfoarchConfig">archConfig</a> <a href="#HMinfoFilter">[filter] [<file>]</a><br>
|
||||
Führt <a href="#HMinfosaveConfig">saveConfig</a> für alle Instanzen aus, sobald sich deren Konfiguration ändert.
|
||||
Es schont gegenüber saveConfig die Resourcen, da es nur vollständige Konfigurationen sichert.<br>
|
||||
Die Option -a erzwingt das sofortige Archivieren für alle Geräte, die eine vollständige Konfiguration aufweisen.<br>
|
||||
</li>
|
||||
<li><a name="#HMinfoloadConfig">loadConfig</a> <a href="#HMinfoFilter">[filter] [<file>]</a><br>
|
||||
Lädt Register und Peers aus einer zuvor mit <a href="#HMinfosaveConfig">saveConfig</a> gesicherten Datei.<br>
|
||||
Es sollte mit Vorsicht verwendet werden, da es Daten zu FHEM hinzufügt, die nicht verifiziert sind.
|
||||
Readings werden nicht ersetzt, nur fehlende Readings werden hinzugefügt. Der Befehl ist dazu geignet, um Readings
|
||||
zu erstellen, die schwer zu erhalten sind. Readings von Geräten, die nicht dauerhaft empfangen sondern nur auf Tastendruck
|
||||
aufwachen (z.B. Türsensoren), können nicht ohne Weiteres gelesen werden.<br>
|
||||
Daher liegt es in der Verantwortung des Benutzers gültige Werte zu verwenden. Es sollte autoReadReg für Geräte verwendet werden,
|
||||
die einfach ausgelesen werden können.<br>
|
||||
Der Befehl aktualisiert lediglich FHEM Readings und Attribute. Die Programmierung des Gerätes wird <B>nicht</B> verändert.
|
||||
</li>
|
||||
<li><a name="#HMinfopurgeConfig">purgeConfig</a> <a href="#HMinfoFilter">[filter] [<file>]</a><br>
|
||||
Bereinigt die gespeicherte Konfigurationsdatei. Durch die kumulative Speicherung der Registerwerte bleiben die
|
||||
zuletzt gespeicherten Werte erhalten und alle älteren werden gelöscht.
|
||||
Siehe <a href="#CUL_HMsaveConfig">CUL_HM saveConfig</a>.
|
||||
</li>
|
||||
<br>
|
||||
|
||||
<li><a name="#HMinfotempList">tempList</a> <a href="#HMinfoFilter">[filter]</a>[save|restore|verify] [<file>]</a><br>
|
||||
Diese Funktion ermöglicht die Verarbeitung von temporären Temperaturlisten für Thermostate.
|
||||
Die Listen können in Dateien abgelegt, mit den aktuellen Werten verglichen und an das Gerät gesendet werden.<br>
|
||||
<li><B>save</B> speichert die aktuellen tempList Werte des Systems in eine Datei. <br>
|
||||
Zu beachten ist, dass die aktuell in FHEM vorhandenen Werte benutzt werden. Der Benutzer muss selbst sicher stellen,
|
||||
dass diese mit den Werten im Gerät überein stimmen.<br>
|
||||
Der Befehl arbeitet nicht kummulativ. Alle evtl. vorher in der Datei vorhandenen Werte werden überschrieben.</li>
|
||||
<li><B>restore</B> in der Datei gespeicherte Termperaturliste wird direkt an das Gerät gesendet.</li>
|
||||
<li><B>verify</B> vergleicht die Temperaturliste in der Datei mit den aktuellen Werten in FHEM. Der Benutzer muss
|
||||
selbst sicher stellen, dass diese mit den Werten im Gerät überein stimmen.</li>
|
||||
<br>
|
||||
<li><B>filename</B> Name der Datei. Vorgabe ist <B>tempList.cfg</B></li>
|
||||
Beispiel für einen Dateiinhalt:<br>
|
||||
<ul><code>
|
||||
entities:HK1_Climate,HK2_Clima<br>
|
||||
tempListFri>07:00 14.0 13:00 16.0 16:00 18.0 21:00 19.0 24:00 14.0<br>
|
||||
tempListMon>07:00 14.0 16:00 18.0 21:00 19.0 24:00 14.0<br>
|
||||
tempListSat>08:00 14.0 15:00 18.0 21:30 19.0 24:00 14.0<br>
|
||||
tempListSun>08:00 14.0 15:00 18.0 21:30 19.0 24:00 14.0<br>
|
||||
tempListThu>07:00 14.0 16:00 18.0 21:00 19.0 24:00 14.0<br>
|
||||
tempListTue>07:00 14.0 13:00 16.0 16:00 18.0 21:00 19.0 24:00 15.0<br>
|
||||
tempListWed>07:00 14.0 16:00 18.0 21:00 19.0 24:00 14.0<br>
|
||||
entities:hk3_Climate<br>
|
||||
tempListFri>06:00 17.0 12:00 21.0 23:00 20.0 24:00 19.5<br>
|
||||
tempListMon>06:00 17.0 12:00 21.0 23:00 20.0 24:00 17.0<br>
|
||||
tempListSat>06:00 17.0 12:00 21.0 23:00 20.0 24:00 17.0<br>
|
||||
tempListSun>06:00 17.0 12:00 21.0 23:00 20.0 24:00 17.0<br>
|
||||
tempListThu>06:00 17.0 12:00 21.0 23:00 20.0 24:00 17.0<br>
|
||||
tempListTue>06:00 17.0 12:00 21.0 23:00 20.0 24:00 17.0<br>
|
||||
tempListWed>06:00 17.0 12:00 21.0 23:00 20.0 24:00 17.0<br>
|
||||
</code></ul>
|
||||
Datei Schlüsselwörter<br>
|
||||
<li><B>entities</B> mittels Komma getrennte Liste der Instanzen für die die nachfolgende Liste bestimmt ist.
|
||||
Es muss die tatsächlich für die Temperaturliste zuständige Instanz angegeben werden. Bei RTs ist das der Kanal 04,
|
||||
bei TCs der Kanal 02.</li>
|
||||
<li><B>tempList...</B> Zeiten und Temperaturen sind genau wie im Befehl "set tempList" anzugeben</li>
|
||||
<br>
|
||||
</li>
|
||||
<li><a name="#HMinfotempListTmpl">tempListTmpl</a> <a href="#HMinfoFilter">[filter]</a>[templateName][verify|restore] [<file>]</a><br>
|
||||
programmiert eine oder mehrere Thermostatlisten (Vorlagen). Die Liste der Thermostate wird mittels Filter selektiert.<br>
|
||||
<ul>
|
||||
<li><B>templateName</B> ist der Name wie in der Datei angegeben. Das Dateiformat ist identisch mit
|
||||
dem Format von <a ref="#HMinfotempList">tempList</a>. Wenn die in der Datei angegebene Instanz mit templateName
|
||||
übereinstimmt, werden die Termperatureinstellungen aus der Datei an diejenigen Thermostate gesendet, die mittels
|
||||
filter ausgewählt sind.<br></li>
|
||||
<li><B>file</B> Name der Datei. Vorgabe: <B>tempList.cfg</B></li>
|
||||
</ul>
|
||||
</li>
|
||||
<br>
|
||||
<li><a name="#HMinfocpRegs">cpRegs <src:peer> <dst:peer> </a><br>
|
||||
ermöglicht das Kopieren von Registern, Einstellungen und Verhalten zwischen gleichen Kanälen, bei einem Peer auch
|
||||
zwischen unterschiedlichen Kanälen. Das Kopieren kann daher sowohl von Gerät zu Gerät, als auch innerhalb eines
|
||||
Gerätes stattfinden.<br>
|
||||
<b>src:peer</b> ist die Quell-Instanz. Der Peer muss angegeben werden, wenn dessen Verhalten kopiert werden soll.<br>
|
||||
<b>dst:peer</b> ist die Ziel-Instanz.<br>
|
||||
Beispiel:<br>
|
||||
<ul><code>
|
||||
set hm cpRegs blindR blindL # kopiert alle Register (list 1) des Kanals von blindR nach blindL einschliesslich z.B. der
|
||||
Rolladen Fahrzeiten. Register, die den Peer betreffen (list 3/4), werden nicht kopiert.<br>
|
||||
set hm cpRegs blindR:Btn1 blindL:Btn2 # kopiert das Verhalten der Beziehung Btn1/blindR nach Btn2/blindL<br>
|
||||
set hm cpRegs blindR:Btn1 blindR:Btn2 # kopiert das Verhalten der Beziehung Btn1/blindR nach Btn2/blindR, hier
|
||||
innerhalb des Aktors<br>
|
||||
</code></ul>
|
||||
<br>
|
||||
Einschränkungen:<br>
|
||||
<ul>
|
||||
cpRegs <u>verändert keine Peerings</u> oder liest direkt aus den Geräten. Die Readings müssen daher aktuell sein.<br>
|
||||
cpRegs kann nur auf <u>identische Gerätemodelle</u> angewendet werden<br>
|
||||
cpRegs erwartet <u>aktuelle Readings</u>. Dies muss der Benutzer sicher stellen.<br>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a name="#HMinfotemplateDef">templateDef <name> <param> <desc> <reg1:val1> [<reg2:val2>] ...</a><br>
|
||||
definiert eine Vorlage.<br>
|
||||
<b>param</b> definiert die Namen der Parameters, die erforderlich sind, um die Vorlage auszuführen.
|
||||
Diese sind abhängig von der Vorlage und können onTime oder brightnesslevel sein.
|
||||
Bei einer Liste mehrerer Parameter müssen diese mittels Kommata separiert werden.<br>
|
||||
param1:param2:param3<br>
|
||||
Der Parameter del führt zur Löschung der Vorlage.<br>
|
||||
<b>desc</b> eine Beschreibung für die Vorlage<br>
|
||||
<b>reg:val</b> der Name des Registers und der dazugehörige Zielwert.<br>
|
||||
Wenn das Register zwischen long und short unterscheidet, muss das führende sh oder lg weggelassen werden.<br>
|
||||
Parameter müssen mit p angegeben werden, p0 für den ersten, p1 für den zweiten usw.
|
||||
<br>
|
||||
Beispiel<br>
|
||||
<ul><code>
|
||||
set hm templateDef SwOnCond level:cond "my description" CtValLo:p0 CtDlyOn:p1 CtOn:geLo<br>
|
||||
</code></ul>
|
||||
</li>
|
||||
<li><a name="#HMinfotemplateSet">templateSet <entity> <template> <peer:[long|short]> [<param1> ...]</a><br>
|
||||
setzt mehrere Register entsprechend der angegebenen Vorlage. Die Parameter müssen entsprechend der Vorlage angegeben werden.<br>
|
||||
templateSet akkumuliert alle Änderungen und schreibt das Ergebnis gesammelt.<br>
|
||||
<b>entity:</b> ist die Quell-Instanz. Der Peer muss angegeben werden, wenn dessen Verhalten kopiert werden soll.<br>
|
||||
<b>template:</b> eine der vorhandenen Vorlagen<br>
|
||||
<b>peer:</b> [long|short]:falls erforderlich muss der Peer angegeben werden. Wird kein Peer benötigt, '0' verwenden.
|
||||
Bei einem Peer muss für den Tastendruck long oder short angegeben werden.<br>
|
||||
<b>param:</b> Nummer und Bedeutung des Parameters hängt von der Vorlage ab.<br>
|
||||
Ein Beispiel könnte sein (theoretisch, ohne die Vorlage anzugeben)<br>
|
||||
<ul><code>
|
||||
set hm templateSet Licht1 staircase FB1:short 20 <br>
|
||||
set hm templateSet Licht1 staircase FB1:long 100 <br>
|
||||
</code></ul>
|
||||
Einschränkungen:<br>
|
||||
<ul>
|
||||
Der Benutzer muss aktuelle Register/Konfigurationen sicher stellen.<br>
|
||||
templateSet konfiguriert ggf. nur einzelne Register und keinen vollständigen Satz. Dies hängt vom Design der Vorlage ab.<br>
|
||||
<br>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</ul>
|
||||
<br>
|
||||
|
||||
|
||||
<a name="HMinfoattr"><b>Attribute</b></a>
|
||||
<ul>
|
||||
<li><a name="#HMinfosumStatus">sumStatus</a><br>
|
||||
erzeugt eine Liste von Warnungen. Die zu untersuchenden Readings werden mittels Komma separiert angegeben.
|
||||
Die Readings werden, so vorhanden, von allen Instanzen ausgewertet, gezählt und getrennt nach Readings mit
|
||||
gleichem Inhalt ausgegeben.<br>
|
||||
Beispiel:<br>
|
||||
<ul><code>
|
||||
attr hm sumStatus battery,sabotageError<br>
|
||||
</code></ul>
|
||||
könnte nachfolgende Ausgaben erzeugen<br>
|
||||
W_sum_batterie ok:5 low:3<br>
|
||||
W_sum_sabotageError on:1<br>
|
||||
<br>
|
||||
Anmerkung: Zähler mit Werten von '0' werden nicht angezeigt. HMinfo findet alle vorhanden Werte selbstständig.<br>
|
||||
Das Setzen des Attributes ermöglicht einen schnellen Überblick über systemkritische Werte.<br>
|
||||
</li>
|
||||
<li><a name="#HMinfosumERROR">sumERROR</a>
|
||||
Ähnlich sumStatus, jedoch mit dem Fokus auf signifikante Fehler.
|
||||
Hier können Reading <b>Werte</b> angegeben werden, die dazu führen, dass diese <b>nicht angezeigt</b> werden.
|
||||
Damit kann beispielsweise verhindert werden, dass der zu erwartende Normalwert oder ein anderer nicht
|
||||
kritischer Wert angezeigt wird.<br>
|
||||
Beispiel:<br>
|
||||
<ul><code>
|
||||
attr hm sumERROR battery:ok,sabotageError:off,overheat:off,Activity:alive:unknown<br>
|
||||
</code></ul>
|
||||
erzeugt folgende Ausgabe:<br>
|
||||
<ul><code>
|
||||
ERR_batterie low:3<br>
|
||||
ERR_sabotageError on:1<br>
|
||||
ERR_overheat on:3<br>
|
||||
ERR_Activity dead:5<br>
|
||||
</code></ul>
|
||||
</li>
|
||||
<li><a name="#HMinfoautoUpdate">autoUpdate</a>
|
||||
führt den Befehl periodisch aus.<br>
|
||||
Beispiel:<br>
|
||||
<ul><code>
|
||||
attr hm autoUpdate 00:10<br>
|
||||
</code></ul>
|
||||
führt den Befehl alle 10 Minuten aus<br>
|
||||
</li>
|
||||
<li><a name="#HMinfoautoArchive">autoArchive</a>
|
||||
Sobald neue Daten verfügbar sind, wird das configFile aktualisiert.
|
||||
Für die Aktualisierung ist <a ref="#HMinfoautoUpdate">autoUpdate</a> zwingend erforderlich.<br>
|
||||
siehe auch <a ref="#HMinfoarchConfig">archConfig</a>
|
||||
<br>
|
||||
</li>
|
||||
<li><a name="#HMinfohmAutoReadScan">hmAutoReadScan</a>
|
||||
definiert die Zeit in Sekunden bis zum nächsten autoRead durch CUL_HM. Trotz dieses Zeitwertes stellt
|
||||
FHEM sicher, dass zu einem Zeitpunkt immer nur ein Gerät gelesen wird, auch wenn der Minimalwert von 1
|
||||
Sekunde eingestellt ist. Mit dem Timer kann der Zeitabstand
|
||||
ausgeweitet werden - bis zu 300 Sekunden zwischen zwei Ausführungen.<br>
|
||||
Das Herabsetzen erhöht die Funkbelastung, Heraufsetzen erhöht die Wartzezeit.<br>
|
||||
</li>
|
||||
<li><a name="#HMinfohmIoMaxDly">hmIoMaxDly</a>
|
||||
maximale Zeit in Sekunden für die CUL_HM Meldungen puffert, wenn das Gerät nicht sendebereit ist.
|
||||
Ist das Gerät nicht wieder rechtzeitig sendebereit, werden die gepufferten Meldungen verworfen und
|
||||
IOErr ausgelöst.<br>
|
||||
Hinweis: Durch die Pufferung kann es vorkommen, dass Aktivität lange nach dem Absetzen des Befehls stattfindet.<br>
|
||||
Standard ist 60 Sekunden, maximaler Wert ist 3600 Sekunden.<br>
|
||||
</li>
|
||||
<li><a name="#HMinfoconfigDir">configDir</a>
|
||||
Verzeichnis für das Speichern und Lesen der Konfigurationsdateien, sofern in einem Befehl nur ein Dateiname ohne
|
||||
Pfad angegen wurde.<br>
|
||||
Verwendung beispielsweise bei <a ref="#HMinfotempList">tempList</a> oder <a ref="#HMinfosaveConfig">saveConfig</a><br>
|
||||
</li>
|
||||
<li><a name="#HMinfoconfigFilename">configFilename</a>
|
||||
Standard Dateiname zur Verwendung von
|
||||
<a ref="#HMinfosaveConfig">saveConfig</a>,
|
||||
<a ref="#HMinfopurgeConfig">purgeConfig</a>,
|
||||
<a ref="#HMinfoloadConfig">loadConfig</a><br>
|
||||
</li>
|
||||
<li><a name="#HMinfohmManualOper">hmManualOper</a>
|
||||
auf 1 gesetzt, verhindert dieses Attribut jede automatische Aktion oder Aktualisierung seitens CUL_HM.<br>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
<br>
|
||||
<a name="HMinfovariables"><b>Variablen</b></a>
|
||||
<ul>
|
||||
<li><b>I_autoReadPend:</b> Info: Liste der Instanzen, für die das Lesen von Konfiguration und Status ansteht,
|
||||
üblicherweise ausgelöst durch autoReadReg.</li>
|
||||
<li><b>ERR___rssiCrit:</b> Fehler: Liste der Geräte mit kritischem RSSI Wert </li>
|
||||
<li><b>W_unConfRegs:</b> Warnung: Liste von Instanzen mit unbestätigten Änderungen von Registern.
|
||||
Die Ausführung von getConfig ist für diese Instanzen erforderlich.</li>
|
||||
<li><b>I_rssiMinLevel:</b> Info: Anzahl der niedrigen RSSI Werte je Gerät, in Blöcken angeordnet.</li>
|
||||
|
||||
<li><b>ERR__protocol:</b> Fehler: Anzahl nicht behebbarer Protokollfehler je Gerät.
|
||||
Protokollfehler sind NACK, IOerr, ResendFail, CmdDel, CmdPend.<br>
|
||||
Gezählt wird die Anzahl der Geräte mit Fehlern, nicht die Anzahl der Fehler!</li>
|
||||
<li><b>ERR__protoNames:</b> Fehler: Liste der Namen der Geräte mit nicht behebbaren Protokollfehlern</li>
|
||||
<li><b>I_HM_IOdevices:</b> Info: Liste der IO Geräte, die von CUL_HM Instanzen verwendet werden</li>
|
||||
<li><b>I_actTotal:</b> Info: Status des Actiondetectors, Zähler für Geräte mit bestimmten Status</li>
|
||||
<li><b>ERRactNames:</b> Fehler: Namen von Geräten, die der Actiondetector als ausgefallen meldet</li>
|
||||
<li><b>C_sumDefined:</b> Count: In CUL_HM definierte Instanzen. Instanzen können als Gerät UND
|
||||
als Kanal gezählt werden, falls die Funktion des Kanals durch das Gerät
|
||||
selbst abgedeckt ist. Ähnlich virtual</li>
|
||||
<li><b>ERR_<reading>:</b> Fehler: Anzahl mittels Attribut <a href="#HMinfosumERROR">sumERROR</a>
|
||||
definierter Readings, die nicht den Normalwert beinhalten. </li>
|
||||
<li><b>ERR_names:</b> Fehler: Namen von Instanzen, die in einem ERR_<reading> enthalten sind.</li>
|
||||
<li><b>W_sum_<reading></b> Warnung: Anzahl der mit Attribut <a href="#HMinfosumStatus">sumStatus</a> definierten Readings.</li>
|
||||
Beispiele:<br>
|
||||
<ul><code>
|
||||
ERR___rssiCrit LightKittchen,WindowDoor,Remote12<br>
|
||||
ERR__protocol NACK:2 ResendFail:5 CmdDel:2 CmdPend:1<br>
|
||||
ERR__protoNames LightKittchen,WindowDoor,Remote12,Ligth1,Light5<br>
|
||||
ERR_battery: low:2;<br>
|
||||
ERR_names: remote1,buttonClara,<br>
|
||||
I_rssiMinLevel 99>:3 80<:0 60<:7 59<:4<br>
|
||||
W_sum_battery: ok:5;low:2;<br>
|
||||
W_sum_overheat: off:7;<br>
|
||||
C_sumDefined: entities:23 device:11 channel:16 virtual:5;<br>
|
||||
</code></ul>
|
||||
</ul>
|
||||
</ul>
|
||||
=end html
|
||||
=cut
|
Loading…
x
Reference in New Issue
Block a user