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

fhem.pl: add set magic to stateFormat (Forum #38276)

git-svn-id: https://svn.fhem.de/fhem/trunk@13917 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2017-04-07 10:51:47 +00:00
parent 885a8ca20a
commit 73d2ef4e0d
3 changed files with 10 additions and 3 deletions

View File

@ -457,7 +457,8 @@ attribute list if you want to know if a device supports these attributes. <br>
If set, then every word in the argument is replaced by the value of the
reading if such a reading for the current device exists. If the value of
this attribute is enclused in {}, then it is evaluated. This attribute is
evaluated each time a reading is updated.
evaluated each time a reading is updated.<br>
The "set magic" described <a href="#set">here</a> is also applied.
</li>
<p>
@ -1109,6 +1110,7 @@ The following local attributes are used by a wider range of devices:
name.
</li>
</ul>
These replacements are also known as "set magic".
<br><br>
<a name="setExtensions"></a>

View File

@ -467,7 +467,8 @@ Ger&auml;t dokumentiert.
alle W&ouml;rter im Wert des Attributes durch das entsprechende Reading des
Ger&auml;tes ersetzt (soweit vorhanden). Falls der Wert in {}
eingeschlossen ist, dann wird es als Perl Ausdruck ausgewertet. Die
Auswertung passiert bei jeder &Auml;nderung eines Readings.
Auswertung passiert bei jeder &Auml;nderung eines Readings.<br>
Die <a href="#set">hier</a> beschriebene "set magic" wird auch angewendet.
</li>
<a name="event-on-update-reading"></a>
@ -1175,6 +1176,7 @@ Die folgenden lokalen Attribute werden von mehreren Ger&auml;ten verwendet:
$DEV wird dabei mit dem Namen des vom set betroffenen Ger&auml;tes ersetzt.
</li>
</ul>
Diese Ersetzungen sind unter dem Namen "set magic" bekannt.
<br><br>
<a name="setExtensions"></a>

View File

@ -4165,7 +4165,10 @@ evalStateFormat($)
# Substitute reading names with their values, leave the rest untouched.
$st = $sr;
my $r = $hash->{READINGS};
$st =~ s/\b([A-Za-z\d_\.-]+)\b/($r->{$1} ? $r->{$1}{VAL} : $1)/ge;
$st =~ s/\$name/$name/g;
(undef, $st) = ReplaceSetMagic($hash, 1, $st);
$st =~ s/\b([A-Za-z\d_\.-]+)\b/($r->{$1} ? $r->{$1}{VAL} : $1)/ge
if($st eq $sr);
}
$hash->{STATE} = ReplaceEventMap($name, $st, 1) if(defined($st));