diff --git a/fhem/CHANGED b/fhem/CHANGED
index 484d3fd27..725710e74 100644
--- a/fhem/CHANGED
+++ b/fhem/CHANGED
@@ -1,5 +1,6 @@
# Add changes at the top of the list. Keep it in ASCII
- SVN
+ - feature: displayattr command added
- feature: SYSSTAT: allow (remote) monitoring system uptime
- feature: new module 98_openweathermap.pm added (betateilchen)
- feature: WeatherAsHtmlH(), WeatherAsHtmlD() added to 59_Weather.pm (Boris)
diff --git a/fhem/docs/commandref_frame.html b/fhem/docs/commandref_frame.html
index dfeec032a..47f24af2f 100644
--- a/fhem/docs/commandref_frame.html
+++ b/fhem/docs/commandref_frame.html
@@ -38,6 +38,7 @@
delete
deleteattr
deletereading
+ displayattr
fheminfo
get
getstate
@@ -250,6 +251,7 @@ A line ending with \ will be concatenated with the next one, so long lines
The commands
attr,
deleteattr,
+ displayattr,
delete,
get,
list,
@@ -569,6 +571,7 @@ A line ending with \ will be concatenated with the next one, so long lines
+
displayattr <devspec> [<attrname>]
+ fhem> di WEB
+ menuEntries AlarmOn,/fhem?cmd=set%20alarm%20on
+ room Misc.
+ fhem> di WEB room
+ Misc.
+
+ 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 lamp
deleteattr <devspec> [<attrname>]
deletereading <devspec> <readingname>
deletereading mySensor temp1
deletereading 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($$)