diff --git a/fhem/docs/commandref_frame.html b/fhem/docs/commandref_frame.html index 3078f94fe..e54be62b4 100644 --- a/fhem/docs/commandref_frame.html +++ b/fhem/docs/commandref_frame.html @@ -457,7 +457,8 @@ attribute list if you want to know if a device supports these attributes.
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.
+ The "set magic" described here is also applied.

@@ -1109,6 +1110,7 @@ The following local attributes are used by a wider range of devices: name. + These replacements are also known as "set magic".

diff --git a/fhem/docs/commandref_frame_DE.html b/fhem/docs/commandref_frame_DE.html index 2c8c1ab25..795d75d58 100644 --- a/fhem/docs/commandref_frame_DE.html +++ b/fhem/docs/commandref_frame_DE.html @@ -467,7 +467,8 @@ Gerät dokumentiert. alle Wörter im Wert des Attributes durch das entsprechende Reading des Gerätes ersetzt (soweit vorhanden). Falls der Wert in {} eingeschlossen ist, dann wird es als Perl Ausdruck ausgewertet. Die - Auswertung passiert bei jeder Änderung eines Readings. + Auswertung passiert bei jeder Änderung eines Readings.
+ Die hier beschriebene "set magic" wird auch angewendet. @@ -1175,6 +1176,7 @@ Die folgenden lokalen Attribute werden von mehreren Geräten verwendet: $DEV wird dabei mit dem Namen des vom set betroffenen Gerätes ersetzt. + Diese Ersetzungen sind unter dem Namen "set magic" bekannt.

diff --git a/fhem/fhem.pl b/fhem/fhem.pl index fa6376062..e9ccdc910 100755 --- a/fhem/fhem.pl +++ b/fhem/fhem.pl @@ -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));