2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-01-31 06:39:11 +00:00

fhem.pl: add -silent to the attr command (Forum #57691)

git-svn-id: https://svn.fhem.de/fhem/trunk@24261 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2021-04-16 16:32:54 +00:00
parent 123f68c620
commit 0baaa2ea44
3 changed files with 18 additions and 14 deletions

View File

@ -716,7 +716,7 @@ The following local attributes are used by a wider range of devices:
<a name="attr"></a> <a name="attr"></a>
<h3>attr</h3> <h3>attr</h3>
<ul> <ul>
<code>attr [-a] [-r] &lt;devspec&gt; &lt;attrname&gt; [&lt;value&gt;]</code> <code>attr [-a|-r|-silent] &lt;devspec&gt; &lt;attrname&gt; [&lt;value&gt;]</code>
<br> <br>
<br>Set an attribute for a device defined by <a href="#define">define</a>. <br>Set an attribute for a device defined by <a href="#define">define</a>.
@ -734,6 +734,7 @@ The following local attributes are used by a wider range of devices:
space will be added automatically to the old value before appending the space will be added automatically to the old value before appending the
new.<br> new.<br>
With the -r option one can remove a part of an attribute value.<br> With the -r option one can remove a part of an attribute value.<br>
With the -silent option the command is not recorded in the "save -?" list.<br>
<br> <br>
Examples: Examples:
@ -1059,8 +1060,8 @@ The following local attributes are used by a wider range of devices:
case of a notify type definition, only the regex part will be changed. All case of a notify type definition, only the regex part will be changed. All
other values (state, attributes, etc) will remain intact. other values (state, attributes, etc) will remain intact.
After modify, the global event "MODIFIED" will be generated.<br> After modify, the global event "MODIFIED" will be generated.<br>
With the -silent option the command is not recorded in the "save -?" list. With the -silent option the command is not recorded in the "save -?" list.<br>
<br><br> <br>
Example: Example:
<ul> <ul>
<code>define lampon at 19:00 set lamp on</code><br> <code>define lampon at 19:00 set lamp on</code><br>

View File

@ -725,7 +725,7 @@ Die folgenden lokalen Attribute werden von mehreren Ger&auml;ten verwendet:
<a name="attr"></a> <a name="attr"></a>
<h3>attr</h3> <h3>attr</h3>
<ul> <ul>
<code>attr [-a] [-r] &lt;devspec&gt; &lt;attrname&gt; [&lt;value&gt;]</code> <code>attr [-a|-r|-silent] &lt;devspec&gt; &lt;attrname&gt; [&lt;value&gt;]</code>
<br> <br>
<br> <br>
@ -749,6 +749,8 @@ Die folgenden lokalen Attribute werden von mehreren Ger&auml;ten verwendet:
anf&auml;ngt, dann wird es mit einem Leerzeichen angeh&auml;ngt. anf&auml;ngt, dann wird es mit einem Leerzeichen angeh&auml;ngt.
<br> <br>
Mit der -r Option kann man Teile eines Attributes wieder entfernen.<br> Mit der -r Option kann man Teile eines Attributes wieder entfernen.<br>
Mit der silent Option wird der Befehl nicht in die "save -?" Liste
eingetragen.<br>
<br> <br>
Beispiele: Beispiele:
@ -1117,9 +1119,9 @@ Die folgenden lokalen Attribute werden von mehreren Ger&auml;ten verwendet:
Werte (Stati, Attribute,&nbsp; etc) bleiben erhalten.<br> Werte (Stati, Attribute,&nbsp; etc) bleiben erhalten.<br>
Nach modify wird das global MODIFIED Event erzeugt.<br> Nach modify wird das global MODIFIED Event erzeugt.<br>
Nach der Durchf&uuml;hrung das globale Ereignis "MODIFIED" wird generiert.<br> Nach der Durchf&uuml;hrung das globale Ereignis "MODIFIED" wird generiert.<br>
Mit der silent Option wird der modify Befehl nicht in die "save -?" Liste Mit der silent Option wird der Befehl nicht in die "save -?" Liste
eingetragen. eingetragen.<br>
<br><br> <br>
Beispiel: Beispiel:
<ul> <ul>

View File

@ -2950,13 +2950,14 @@ CommandAttr($$)
{ {
my ($cl, $param) = @_; my ($cl, $param) = @_;
my ($ret, $append, $remove, @a); my ($ret, $append, $remove, @a);
my %opt;
my $optRegexp = '-a|-r|-silent';
$param = cmd_parseOpts($param, $optRegexp, \%opt);
$append = ($param =~ s/^-a //);
$remove = ($param =~ s/^-r //);
@a = split(" ", $param, 3) if($param); @a = split(" ", $param, 3) if($param);
return "Usage: attr [-a|-r] <name> <attrname> [<attrvalue>]\n$namedef" return "Usage: attr [$optRegexp] <name> <attrname> [<attrvalue>]\n$namedef"
if(@a < 2 || ($append && $remove)); if(@a < 2 || ($opt{a} && $opt{r}));
my $a1 = $a[1]; my $a1 = $a[1];
return "$a[0]: bad attribute name '$a1' (allowed chars: A-Za-z/\\d_\\.-)" return "$a[0]: bad attribute name '$a1' (allowed chars: A-Za-z/\\d_\\.-)"
if($featurelevel > 5.9 && !goodReadingName($a1) && $a1 ne "?"); if($featurelevel > 5.9 && !goodReadingName($a1) && $a1 ne "?");
@ -2998,11 +2999,11 @@ CommandAttr($$)
} }
} }
if($append && $attr{$sdev} && $attr{$sdev}{$attrName}) { if($opt{a} && $attr{$sdev} && $attr{$sdev}{$attrName}) {
$attrVal = $attr{$sdev}{$attrName} . $attrVal = $attr{$sdev}{$attrName} .
($attrVal =~ m/^,/ ? $attrVal : " $attrVal"); ($attrVal =~ m/^,/ ? $attrVal : " $attrVal");
} }
if($remove && $attr{$sdev} && $attr{$sdev}{$attrName}) { if($opt{r} && $attr{$sdev} && $attr{$sdev}{$attrName}) {
my $v = $attr{$sdev}{$attrName}; my $v = $attr{$sdev}{$attrName};
$v =~ s/\b$attrVal\b//; $v =~ s/\b$attrVal\b//;
$attrVal = $v; $attrVal = $v;
@ -3118,7 +3119,7 @@ CommandAttr($$)
evalStateFormat($hash); evalStateFormat($hash);
} }
addStructChange("attr", $sdev, "$sdev $attrName $attrVal") addStructChange("attr", $sdev, "$sdev $attrName $attrVal")
if(!defined($oVal) || $oVal ne $attrVal); if(!$opt{silent} && (!defined($oVal) || $oVal ne $attrVal));
DoTrigger("global", "ATTR $sdev $attrName $attrVal", 1) if($init_done); DoTrigger("global", "ATTR $sdev $attrName $attrVal", 1) if($init_done);
} }