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 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 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 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> </li>
<p> <p>
@ -1109,6 +1110,7 @@ The following local attributes are used by a wider range of devices:
name. name.
</li> </li>
</ul> </ul>
These replacements are also known as "set magic".
<br><br> <br><br>
<a name="setExtensions"></a> <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 alle W&ouml;rter im Wert des Attributes durch das entsprechende Reading des
Ger&auml;tes ersetzt (soweit vorhanden). Falls der Wert in {} Ger&auml;tes ersetzt (soweit vorhanden). Falls der Wert in {}
eingeschlossen ist, dann wird es als Perl Ausdruck ausgewertet. Die 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> </li>
<a name="event-on-update-reading"></a> <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. $DEV wird dabei mit dem Namen des vom set betroffenen Ger&auml;tes ersetzt.
</li> </li>
</ul> </ul>
Diese Ersetzungen sind unter dem Namen "set magic" bekannt.
<br><br> <br><br>
<a name="setExtensions"></a> <a name="setExtensions"></a>

View File

@ -4165,7 +4165,10 @@ evalStateFormat($)
# Substitute reading names with their values, leave the rest untouched. # Substitute reading names with their values, leave the rest untouched.
$st = $sr; $st = $sr;
my $r = $hash->{READINGS}; 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)); $hash->{STATE} = ReplaceEventMap($name, $st, 1) if(defined($st));