From ca1d19c7757017d47c16dad67fd21b830e763649 Mon Sep 17 00:00:00 2001
From: rudolfkoenig
+
deletereading
@@ -589,6 +592,33 @@ A line ending with \ will be concatenated with the next one, so long lines
+
+
+
displayattr
+
+
+
displayattr <devspec> [<attrname>]
+
+ Display either the value of a single attribute (see the attr command)
+ or all attributes for a device (if no <attrname> is defined).
+ See the Device specification section for details on
+ <devspec>.
+ If more then one device is specified, then the device name will also included
+ in the output.
+
+
+ Examples:
+
+
+
+ fhem> di WEB
+
+ menuEntries AlarmOn,/fhem?cmd=set%20alarm%20on
+ room Misc.
+ fhem> di WEB room
+ Misc.
+
+get
diff --git a/fhem/docs/commandref_frame_DE.html b/fhem/docs/commandref_frame_DE.html
index e035b6a20..e57a511bc 100644
--- a/fhem/docs/commandref_frame_DE.html
+++ b/fhem/docs/commandref_frame_DE.html
@@ -201,8 +201,7 @@ telnet-Prompt eingegeben werden:
SHELL-Kommandos werden im Hintergrund ausgeführt,
PERL-Ausdrücke und FHEM-Kommandos werden im Haupt-"thread" ausgeführt. Um
PERL-Ausdrücke leichter eingeben zu können, sind einige Spezialfunktionen und
-Variablen verfügbar. Lesen Sie sich bitte die Abschnitte
-
+Variablen verfügbar. Lesen Sie sich bitte die Abschnitte
Perl special zum besseren Verständnis durch.
Um FHEM-Befehle in einen SHELL-Script zu triggern (dies ist eine "andere" Möglichkeit), benutzen Sie bitte die oben beschriebene Client-Form @@ -251,16 +250,13 @@ Zeilen erstreckende Befehle, indem man keine \ am Zeilenende eingeben muss.
attr <devspec> <attrname> [<value>] Attribute, die für alle Geräte anwendbar sind:
delete <devspec> delete lampdeleteattr <devspec> [<attrname>] deletereading <devspec> <readingname> deletereading mySensor temp1deletereading mySensor temp\d+displayattr <devspec> [<attrname>]
+ fhem> di WEB
+ menuEntries AlarmOn,/fhem?cmd=set%20alarm%20on
+ room Misc.
+ fhem> di WEB room
+ Misc.
+
+ get <device> ?
list [devspec] [value]
fhem> list
@@ -870,9 +900,10 @@ Zeilen erstreckende Befehle, indem man keine \ am Zeilenende eingeben muss.
set <name> ?
- Lesen Sie bitte den Abschnitt Device specification
- für Details zu <devspec>. Der "set"-Befehl gibt nur bei
- Fehler einen Wert zurück.
+ Siehe den Abschnitt über Geräte-Spezifikation
+ für Details der <devspec>.
+
+ Der "set"-Befehl gibt nur bei Fehler einen Wert zurück.
Jedes Gerät hat verschiedene Parameter die mit "set" gesetzt
werden können. Lesen Sie bitte den entsprechenden Abschnitt für
@@ -936,11 +967,10 @@ Zeilen erstreckende Befehle, indem man keine \ am Zeilenende eingeben muss.
Der Befehl setzt den "STATUS" für <name> , wie im Befehl
list beschrieben, auf den Wert <value>
ohne an das Gerät ein Signal zu senden. Dieser Befehl wird auch im statefile
- benutzt.
- Lesen Sie bitte den Abschnitt Device specification für
- Details zu
- <devspec>.
-
+ benutzt.
+ Siehe den Abschnitt über Geräte-Spezifikation
+ für Details der <devspec>.
+
Examples:
setstate lamp on
@@ -975,10 +1005,10 @@ Zeilen erstreckende Befehle, indem man keine \ am Zeilenende eingeben muss.
trigger <devspec> <state>
- Triggert eine notify Definition.
- Siehe Geräte-Spezifikation (devspec)
- für Details zu <devspec>.
-
+ Triggert eine notify Definition.
+ Siehe den Abschnitt über Geräte-Spezifikation
+ für Details der <devspec>.
+
Beispiel:
trigger btn3 on
diff --git a/fhem/fhem.pl b/fhem/fhem.pl
index 59a221a60..808990163 100755
--- a/fhem/fhem.pl
+++ b/fhem/fhem.pl
@@ -231,6 +231,8 @@ $readingFnAttributes = "event-on-change-reading event-on-update-reading ".
Hlp=>" [],delete user defined reading for " },
"delete" => { Fn=>"CommandDelete",
Hlp=>",delete the corresponding definition(s)"},
+ "displayattr"=> { Fn=>"CommandDisplayAttr",
+ Hlp=>" [attrname],display attributes" },
"get" => { Fn=>"CommandGet",
Hlp=>" ,request data from " },
"help" => { Fn=>"CommandHelp",
@@ -1490,6 +1492,42 @@ CommandDeleteAttr($$)
return join("\n", @rets);
}
+#############
+sub
+CommandDisplayAttr($$)
+{
+ my ($cl, $def) = @_;
+
+ my @a = split(" ", $def, 2);
+ return "Usage: displayattr []\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
CommandDeleteReading($$)