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>
<h3>attr</h3>
<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>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
new.<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>
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
other values (state, attributes, etc) will remain intact.
After modify, the global event "MODIFIED" will be generated.<br>
With the -silent option the command is not recorded in the "save -?" list.
<br><br>
With the -silent option the command is not recorded in the "save -?" list.<br>
<br>
Example:
<ul>
<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>
<h3>attr</h3>
<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>
@ -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.
<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>
Beispiele:
@ -1117,9 +1119,9 @@ Die folgenden lokalen Attribute werden von mehreren Ger&auml;ten verwendet:
Werte (Stati, Attribute,&nbsp; etc) bleiben erhalten.<br>
Nach modify wird das global MODIFIED Event erzeugt.<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
eingetragen.
<br><br>
Mit der silent Option wird der Befehl nicht in die "save -?" Liste
eingetragen.<br>
<br>
Beispiel:
<ul>

View File

@ -2950,13 +2950,14 @@ CommandAttr($$)
{
my ($cl, $param) = @_;
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);
return "Usage: attr [-a|-r] <name> <attrname> [<attrvalue>]\n$namedef"
if(@a < 2 || ($append && $remove));
return "Usage: attr [$optRegexp] <name> <attrname> [<attrvalue>]\n$namedef"
if(@a < 2 || ($opt{a} && $opt{r}));
my $a1 = $a[1];
return "$a[0]: bad attribute name '$a1' (allowed chars: A-Za-z/\\d_\\.-)"
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 =~ m/^,/ ? $attrVal : " $attrVal");
}
if($remove && $attr{$sdev} && $attr{$sdev}{$attrName}) {
if($opt{r} && $attr{$sdev} && $attr{$sdev}{$attrName}) {
my $v = $attr{$sdev}{$attrName};
$v =~ s/\b$attrVal\b//;
$attrVal = $v;
@ -3118,7 +3119,7 @@ CommandAttr($$)
evalStateFormat($hash);
}
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);
}