2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-02-26 17:04:59 +00:00

displayattr command added

git-svn-id: https://svn.fhem.de/fhem/trunk@3601 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2013-08-07 11:18:15 +00:00
parent 2bdb3e39d0
commit a96e1d1416
4 changed files with 155 additions and 56 deletions

View File

@ -1,5 +1,6 @@
# Add changes at the top of the list. Keep it in ASCII # Add changes at the top of the list. Keep it in ASCII
- SVN - SVN
- feature: displayattr command added
- feature: SYSSTAT: allow (remote) monitoring system uptime - feature: SYSSTAT: allow (remote) monitoring system uptime
- feature: new module 98_openweathermap.pm added (betateilchen) - feature: new module 98_openweathermap.pm added (betateilchen)
- feature: WeatherAsHtmlH(), WeatherAsHtmlD() added to 59_Weather.pm (Boris) - feature: WeatherAsHtmlH(), WeatherAsHtmlD() added to 59_Weather.pm (Boris)

View File

@ -38,6 +38,7 @@
<a href="#delete">delete</a> &nbsp; <a href="#delete">delete</a> &nbsp;
<a href="#deleteattr">deleteattr</a> &nbsp; <a href="#deleteattr">deleteattr</a> &nbsp;
<a href="#deletereading">deletereading</a> &nbsp; <a href="#deletereading">deletereading</a> &nbsp;
<a href="#displayattr">displayattr</a> &nbsp;
<a href="#fheminfo">fheminfo</a> &nbsp; <a href="#fheminfo">fheminfo</a> &nbsp;
<a href="#get">get</a> &nbsp; <a href="#get">get</a> &nbsp;
<a href="#getstate">getstate</a> &nbsp; <a href="#getstate">getstate</a> &nbsp;
@ -250,6 +251,7 @@ A line ending with \ will be concatenated with the next one, so long lines
The commands The commands
<a href="#attr">attr</a>, <a href="#attr">attr</a>,
<a href="#deleteattr">deleteattr</a>, <a href="#deleteattr">deleteattr</a>,
<a href="#displayattr">displayattr</a>,
<a href="#delete">delete</a>, <a href="#delete">delete</a>,
<a href="#get">get</a>, <a href="#get">get</a>,
<a href="#list">list</a>, <a href="#list">list</a>,
@ -569,6 +571,7 @@ A line ending with \ will be concatenated with the next one, so long lines
<br> <br>
</ul> </ul>
<a name="deletereading"></a> <a name="deletereading"></a>
<h3>deletereading</h3> <h3>deletereading</h3>
<ul> <ul>
@ -589,6 +592,33 @@ A line ending with \ will be concatenated with the next one, so long lines
<br> <br>
</ul> </ul>
<a name="displayattr"></a>
<h3>displayattr</h3>
<ul>
<code>displayattr &lt;devspec&gt; [&lt;attrname&gt;]</code> <br>
<br>
Display either the value of a single attribute (see the <a href="#attr">attr</a> command)
or all attributes for a device (if no &lt;attrname&gt; is defined).
See the <a href="#devspec">Device specification</a> section for details on
&lt;devspec&gt;.<br>
If more then one device is specified, then the device name will also included
in the output.
<br>
Examples:
<ul>
<code>
fhem&gt; di WEB<br>
menuEntries AlarmOn,/fhem?cmd=set%20alarm%20on<br>
room Misc.<br>
fhem&gt di WEB room<br>
Misc.<br>
</code>
</ul>
<br>
</ul>
<a name="get"></a> <a name="get"></a>
<h3>get</h3> <h3>get</h3>
<ul> <ul>

View File

@ -201,8 +201,7 @@ telnet-Prompt eingegeben werden:
SHELL-Kommandos werden im Hintergrund ausgef&uuml;hrt, SHELL-Kommandos werden im Hintergrund ausgef&uuml;hrt,
PERL-Ausdr&uuml;cke und FHEM-Kommandos werden im Haupt-"thread" ausgef&uuml;hrt. Um PERL-Ausdr&uuml;cke und FHEM-Kommandos werden im Haupt-"thread" ausgef&uuml;hrt. Um
PERL-Ausdr&uuml;cke leichter eingeben zu k&ouml;nnen, sind einige Spezialfunktionen und PERL-Ausdr&uuml;cke leichter eingeben zu k&ouml;nnen, sind einige Spezialfunktionen und
Variablen verf&uuml;gbar. Lesen Sie sich bitte die Abschnitte Variablen verf&uuml;gbar. Lesen Sie sich bitte die Abschnitte <a href="#perl">
<a href="file:///C:/Inetpub/wwwroot/www.fhem.de/commandref_frame_DE.html#perl" style="color: #278727; text-decoration: underline; text-underline: single">
Perl special</a> zum besseren Verst&auml;ndnis durch.</p> Perl special</a> zum besseren Verst&auml;ndnis durch.</p>
<p>Um FHEM-Befehle in einen SHELL-Script zu triggern (dies ist <p>Um FHEM-Befehle in einen SHELL-Script zu triggern (dies ist
eine "andere" M&ouml;glichkeit), benutzen Sie bitte die oben beschriebene Client-Form eine "andere" M&ouml;glichkeit), benutzen Sie bitte die oben beschriebene Client-Form
@ -251,16 +250,13 @@ Zeilen erstreckende Befehle, indem man keine \ am Zeilenende eingeben muss.</p>
<a name="devspec"></a> <a name="devspec"></a>
<h3>Ger&auml;te-Spezifikation (devspec)</h3> <h3>Ger&auml;te-Spezifikation (devspec)</h3>
<ul> <ul>
Die Befehle Befehle wie
<a href="#attr">attr</a>, <a href="#attr">attr</a>,
<a href="#deleteattr">deleteattr</a>,<a href="#delete">delete</a>,
<a href="#get">get</a>,
<a href="#list">list</a>,
<a href="#set">set</a>, <a href="#set">set</a>,
<a href="#setstate">setstate</a>,<a href="file:///C:/Inetpub/wwwroot/www.fhem.de/commandref_frame_DE.html#setstate"><span style="text-decoration: underline"> <a href="#get">get</a>, usw.
</span></a>k&ouml;nnen eine komplexere k&ouml;nnen eine komplexere Ger&auml;tespezifikation als Argumente enthalten,
Ger&auml;tespezifikation als Argumente enthalten, die auch eine Anzahl von Ger&auml;ten die auch eine Anzahl von Ger&auml;ten betreffen kann. Eine
betreffen kann. Eine Ger&auml;tespezifikation (Kurzfassung) kann z.B. so aussehen: Ger&auml;tespezifikation (Kurzfassung) kann z.B. so aussehen:
<ul> <ul>
<li>ein einzelner Ger&auml;tename. Dies ist der <li>ein einzelner Ger&auml;tename. Dies ist der
meist vorkommende Fall.</li> meist vorkommende Fall.</li>
@ -322,11 +318,15 @@ Zeilen erstreckende Befehle, indem man keine \ am Zeilenende eingeben muss.</p>
<code>attr &lt;devspec&gt; &lt;attrname&gt; [&lt;value&gt;] </code><br> <code>attr &lt;devspec&gt; &lt;attrname&gt; [&lt;value&gt;] </code><br>
<br> <br>
Dieser Befehl setzt ein Attribut f&uuml;r ein Ger&auml;t welches mit <a href="#define">define</a> definiert wurde. Sie k&ouml;nnen auch Dieser Befehl setzt ein Attribut f&uuml;r ein Ger&auml;t welches mit <a
Ihre eigenen Attribute definieren, um sie in anderen Applikationen anzuwenden. href="#define">define</a> definiert wurde. Sie k&ouml;nnen auch Ihre eigenen
Geben Sie "&lt;attr &lt;name&gt; ?" ein, um eine Liste verf&uuml;gbarer Attribute Attribute definieren, um sie in anderen Applikationen anzuwenden. Geben Sie
anzuzeigen. Bitte lesen Sie das Kapitel <a href="#devspec">Device specification</a>&nbsp; "&lt;attr &lt;name&gt; ?" ein, um eine Liste verf&uuml;gbarer Attribute
um Detail-Informationen zu &lt;devspec&gt; zu erhalten. anzuzeigen.
Siehe den Abschnitt &uuml;ber <a href="#devspec">Ger&auml;te-Spezifikation</a>
f&uuml;r Details der &lt;devspec&gt;.<br>
<p>Attribute, die f&uuml;r <p>Attribute, die f&uuml;r
alle Ger&auml;te anwendbar sind: </p> alle Ger&auml;te anwendbar sind: </p>
<ul> <ul>
@ -553,13 +553,14 @@ Zeilen erstreckende Befehle, indem man keine \ am Zeilenende eingeben muss.</p>
<ul> <ul>
<code>delete &lt;devspec&gt;</code> <br> <code>delete &lt;devspec&gt;</code> <br>
<br> <br>
L&ouml;scht etwas was mit dem <a href="#define">define</a> Befehl erstellt worden L&ouml;scht etwas was mit dem <a href="#define">define</a> Befehl erstellt
ist. worden ist.<br>
Lesen Sie sich bitte den Abschnitt <a href="#devspec">Device specification</a>&nbsp; f&uuml;r
Details von Siehe den Abschnitt &uuml;ber <a href="#devspec">Ger&auml;te-Spezifikation</a>
&lt;devspec&gt; durch.<br> f&uuml;r Details der &lt;devspec&gt;.<br>
Nach dem l&ouml;schen, wird das globale Ereignis "DELETED" erzeugt. Lesen Sie bitte
den Abschnitt zu &quot;notify&quot; f&uuml;r genauere Informationen durch.<br> Nach dem l&ouml;schen, wird das globale Ereignis "DELETED" erzeugt.<br>
Beispiel: Beispiel:
<ul> <ul>
<code>delete lamp</code><br> <code>delete lamp</code><br>
@ -572,12 +573,11 @@ Zeilen erstreckende Befehle, indem man keine \ am Zeilenende eingeben muss.</p>
<ul> <ul>
<code>deleteattr &lt;devspec&gt; [&lt;attrname&gt;]</code> <br> <code>deleteattr &lt;devspec&gt; [&lt;attrname&gt;]</code> <br>
<br> <br>
L&ouml;scht entweder ein einzelnes Attribut (siehe Abschnitt <a href="#attr">attr</a> ) L&ouml;scht entweder ein einzelnes Attribut (siehe Abschnitt <a
oder alle Attribute eines Ger&auml;tes (falls kein&nbsp; &lt;attrname&gt; angegeben href="#attr">attr</a> ) oder alle Attribute eines Ger&auml;tes (falls
wird). kein &lt;attrname&gt; angegeben wird).<br>
Lesen Sie bitte den&nbsp; <a href="#devspec">Device specification</a> Siehe den Abschnitt &uuml;ber <a href="#devspec">Ger&auml;te-Spezifikation</a>
Abschnitt f&uuml;r f&uuml;r Details der &lt;devspec&gt;.<br>
&lt;devspec&gt; durch.<br>
<br> <br>
Beispiele: Beispiele:
@ -593,14 +593,18 @@ Zeilen erstreckende Befehle, indem man keine \ am Zeilenende eingeben muss.</p>
<ul> <ul>
<code>deletereading &lt;devspec&gt; &lt;readingname&gt;</code> <br> <code>deletereading &lt;devspec&gt; &lt;readingname&gt;</code> <br>
<br> <br>
Delete the reading &lt;readingname&gt; Entfernt das Reading &lt;readingname&gt; f&uuml;r das spezifizierte
for a device. &lt;readingname&gt; is a perl regular expression that must match the whole name of the reading. Ger&auml;t. &lt;readingname&gt; ist ein perl Regular-Expression, was den
Use with greatest care! FHEM might crash if you delete vital readings of a device. vollst&auml;ndigen Namen des Readings erfassen muss.
See the <a href="#devspec">Device specification</a> section for details on
&lt;devspec&gt;.<br> Mit gr&ouml;&szlig;ter Sorgfalt verwenden! FHEM kann abst&uuml;rzen, falls
man lebenswichtige Readings entfernt.<br>
Siehe den Abschnitt &uuml;ber <a href="#devspec">Ger&auml;te-Spezifikation</a>
f&uuml;r Details der &lt;devspec&gt;.<br>
<br> <br>
Examples: Beispiele:
<ul> <ul>
<code>deletereading mySensor temp1</code><br> <code>deletereading mySensor temp1</code><br>
<code>deletereading mySensor temp\d+</code><br> <code>deletereading mySensor temp\d+</code><br>
@ -608,6 +612,34 @@ Zeilen erstreckende Befehle, indem man keine \ am Zeilenende eingeben muss.</p>
<br> <br>
</ul> </ul>
<a name="displayattr"></a>
<h3>displayattr</h3>
<ul>
<code>displayattr &lt;devspec&gt; [&lt;attrname&gt;]</code> <br>
<br>
Zeigt entweder den Wert eines Attributes an (falls &lt;attrname&gt;
spezifiziert wurde) oder alle Attribute eines Ger&auml;tes.
Siehe den Abschnitt &uuml;ber <a href="#devspec">Ger&auml;te-Spezifikation</a>
f&uuml;r Details der &lt;devspec&gt;.<br>
Falls mehrere Ger&auml;te spezifiziert wurden, dann enth&auml;lt die Ausgabe
den Namen der Ger&auml;te.
<br>
Beispiele:
<ul>
<code>
fhem&gt; di WEB<br>
menuEntries AlarmOn,/fhem?cmd=set%20alarm%20on<br>
room Misc.<br>
fhem&gt di WEB room<br>
Misc.<br>
</code>
</ul>
<br>
</ul>
<a name="get"></a> <a name="get"></a>
<h3>get</h3> <h3>get</h3>
<ul> <ul>
@ -617,10 +649,8 @@ Zeilen erstreckende Befehle, indem man keine \ am Zeilenende eingeben muss.</p>
Antwort. Eine allgemeine Liste m&ouml;glicher Paramter erhalten Sie mit<ul> Antwort. Eine allgemeine Liste m&ouml;glicher Paramter erhalten Sie mit<ul>
<code>get &lt;device&gt; ?</code> <code>get &lt;device&gt; ?</code>
</ul> </ul>
Lesen Sie den Abschnitt <a href="#devspec">Device specification</a> f&uuml;r Siehe den Abschnitt &uuml;ber <a href="#devspec">Ger&auml;te-Spezifikation</a>
Details zu f&uuml;r Details der &lt;devspec&gt;.<br>
&lt;devspec&gt; durch.<br>
<br>
Jedes Ger&auml;t hat unterschiedliche &quot;get&quot;-Parameter. Lesen Sie Details bitte im Jedes Ger&auml;t hat unterschiedliche &quot;get&quot;-Parameter. Lesen Sie Details bitte im
zugeh&ouml;rigen Abschnitt nach.<br> zugeh&ouml;rigen Abschnitt nach.<br>
<br> <br>
@ -685,13 +715,13 @@ Zeilen erstreckende Befehle, indem man keine \ am Zeilenende eingeben muss.</p>
<code>list [devspec] [value]</code> <code>list [devspec] [value]</code>
<br><br> <br><br>
Auflistung aller &quot;definitions&quot;, &quot;notify&quot; und &quot;at&quot;-Definitionen. Dies ist eines Auflistung aller &quot;definitions&quot;, &quot;notify&quot; und &quot;at&quot;-Definitionen. Dies ist eines
der wenigen Befehle, die im Normalfall eine Zeichenkette ausgeben. Bitte lesen der wenigen Befehle, die im Normalfall eine Zeichenkette ausgeben.<br>
Sie den Abschnitt <a href="#devspec">Device specification</a> f&uuml;r Details zu Siehe den Abschnitt &uuml;ber <a href="#devspec">Ger&auml;te-Spezifikation</a>
&lt;devspec&gt;. f&uuml;r Details der &lt;devspec&gt;.<br>
<br> <br>
Wenn value angegeben ist, der von ( DEF, TYPE, usw) oder Wenn value angegeben ist, der von ( DEF, TYPE, usw) oder reading (actuator,
reading (actuator, measured-temp) f&uuml;r alle Ger&auml;te die in devspec angegeben measured-temp) f&uuml;r alle Ger&auml;te die in devspec angegeben sind.
sind.
<br><br> <br><br>
Beispiel: Beispiel:
<pre><code> fhem&gt; list <pre><code> fhem&gt; list
@ -870,9 +900,10 @@ Zeilen erstreckende Befehle, indem man keine \ am Zeilenende eingeben muss.</p>
<ul> <ul>
<code>set &lt;name&gt; ?</code> <code>set &lt;name&gt; ?</code>
</ul> </ul>
Lesen Sie bitte den Abschnitt <a href="#devspec">Device specification</a> Siehe den Abschnitt &uuml;ber <a href="#devspec">Ger&auml;te-Spezifikation</a>
f&uuml;r Details zu &lt;devspec&gt;. Der &quot;set&quot;-Befehl gibt nur bei f&uuml;r Details der &lt;devspec&gt;.<br>
Fehler einen Wert zur&uuml;ck.
Der &quot;set&quot;-Befehl gibt nur bei Fehler einen Wert zur&uuml;ck.
<br><br> <br><br>
Jedes Ger&auml;t hat verschiedene Parameter die mit &quot;set&quot; gesetzt Jedes Ger&auml;t hat verschiedene Parameter die mit &quot;set&quot; gesetzt
werden k&ouml;nnen. Lesen Sie bitte den entsprechenden Abschnitt f&uuml;r werden k&ouml;nnen. Lesen Sie bitte den entsprechenden Abschnitt f&uuml;r
@ -936,11 +967,10 @@ Zeilen erstreckende Befehle, indem man keine \ am Zeilenende eingeben muss.</p>
Der Befehl setzt den "STATUS&quot; f&uuml;r <code>&lt;name&gt;</code> , wie im Befehl Der Befehl setzt den "STATUS&quot; f&uuml;r <code>&lt;name&gt;</code> , wie im Befehl
<a href="#list">list</a> beschrieben, auf den Wert <code>&lt;value&gt;</code> <a href="#list">list</a> beschrieben, auf den Wert <code>&lt;value&gt;</code>
ohne an das Ger&auml;t ein Signal zu senden. Dieser Befehl wird auch im <a href="#statefile">statefile</a> ohne an das Ger&auml;t ein Signal zu senden. Dieser Befehl wird auch im <a href="#statefile">statefile</a>
benutzt. benutzt.<br>
Lesen Sie bitte den Abschnitt <a href="#devspec">Device specification</a>&nbsp; f&uuml;r Siehe den Abschnitt &uuml;ber <a href="#devspec">Ger&auml;te-Spezifikation</a>
Details zu f&uuml;r Details der &lt;devspec&gt;.<br>
&lt;devspec&gt;. <br>
<br><br>
Examples: Examples:
<ul> <ul>
setstate lamp on setstate lamp on
@ -975,10 +1005,10 @@ Zeilen erstreckende Befehle, indem man keine \ am Zeilenende eingeben muss.</p>
<ul> <ul>
<code>trigger &lt;devspec&gt; &lt;state&gt;</code> <code>trigger &lt;devspec&gt; &lt;state&gt;</code>
<br><br> <br><br>
Triggert eine <a href="#notify">notify</a> Definition. Triggert eine <a href="#notify">notify</a> Definition.<br>
Siehe <a href="#devspec">Ger&auml;te-Spezifikation (devspec)</a>&nbsp; Siehe den Abschnitt &uuml;ber <a href="#devspec">Ger&auml;te-Spezifikation</a>
f&uuml;r Details zu &lt;devspec&gt;. f&uuml;r Details der &lt;devspec&gt;.<br>
<br><br> <br>
Beispiel: Beispiel:
<ul> <ul>
<code>trigger btn3 on</code> <code>trigger btn3 on</code>

View File

@ -231,6 +231,8 @@ $readingFnAttributes = "event-on-change-reading event-on-update-reading ".
Hlp=>"<devspec> [<attrname>],delete user defined reading for <devspec>" }, Hlp=>"<devspec> [<attrname>],delete user defined reading for <devspec>" },
"delete" => { Fn=>"CommandDelete", "delete" => { Fn=>"CommandDelete",
Hlp=>"<devspec>,delete the corresponding definition(s)"}, Hlp=>"<devspec>,delete the corresponding definition(s)"},
"displayattr"=> { Fn=>"CommandDisplayAttr",
Hlp=>"<devspec> [attrname],display attributes" },
"get" => { Fn=>"CommandGet", "get" => { Fn=>"CommandGet",
Hlp=>"<devspec> <type dependent>,request data from <devspec>" }, Hlp=>"<devspec> <type dependent>,request data from <devspec>" },
"help" => { Fn=>"CommandHelp", "help" => { Fn=>"CommandHelp",
@ -1490,6 +1492,42 @@ CommandDeleteAttr($$)
return join("\n", @rets); return join("\n", @rets);
} }
#############
sub
CommandDisplayAttr($$)
{
my ($cl, $def) = @_;
my @a = split(" ", $def, 2);
return "Usage: displayattr <name> [<attrname>]\n$namedef" if(@a < 1);
my @rets;
my @devspec = devspec2array($a[0]);
foreach my $sdev (@devspec) {
if(!defined($defs{$sdev})) {
push @rets, "Please define $sdev first";
next;
}
my $ap = $attr{$sdev};
next if(!$ap);
my $d = (@devspec > 1 ? "$sdev " : "");
if(defined($a[1])) {
push @rets, "$d$ap->{$a[1]}" if(defined($ap->{$a[1]}));
} else {
push @rets, map { "$d$_ $ap->{$_}" } sort keys %{$ap};
}
}
return join("\n", @rets);
}
############# #############
sub sub
CommandDeleteReading($$) CommandDeleteReading($$)