From 46f0a1660cb6d001246ea1afc7e160d0ff34b84f Mon Sep 17 00:00:00 2001 From: rudolfkoenig <> Date: Tue, 23 Jun 2015 17:32:08 +0000 Subject: [PATCH] fhem.pl: tune the set {} feature (Forum #38276) git-svn-id: https://svn.fhem.de/fhem/trunk@8808 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/00_FHZ.pm | 22 ++++++++++++++++++++++ fhem/fhem.pl | 32 +++++--------------------------- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/fhem/FHEM/00_FHZ.pm b/fhem/FHEM/00_FHZ.pm index ff54363b3..87b4069c7 100755 --- a/fhem/FHEM/00_FHZ.pm +++ b/fhem/FHEM/00_FHZ.pm @@ -161,6 +161,28 @@ FHZ_Ready($) return ($InBytes>0); } +##################################### +sub +CommandChain($$) +{ + my ($retry, $list) = @_; + my $ov = $attr{global}{verbose}; + my $oid = $init_done; + + $init_done = 0; + $attr{global}{verbose} = 1; + foreach my $cmd (@{$list}) { + for(my $n = 0; $n < $retry; $n++) { + Log 1, sprintf("Trying again $cmd (%d out of %d)", $n+1,$retry) if($n>0); + my $ret = AnalyzeCommand(undef, $cmd); + last if(!defined($ret) || $ret !~ m/Timeout/); + } + } + $attr{global}{verbose} = $ov; + $init_done = $oid; +} + + ##################################### sub FHZ_Set($@) diff --git a/fhem/fhem.pl b/fhem/fhem.pl index 74fbdcc54..90914ea3d 100755 --- a/fhem/fhem.pl +++ b/fhem/fhem.pl @@ -49,7 +49,6 @@ sub AssignIoPort($;$); sub AttrVal($$$); sub CallFn(@); sub CheckDuplicate($$@); -sub CommandChain($$); sub Debug($); sub DoSet(@); sub Dispatch($$$); @@ -1495,10 +1494,10 @@ ReplaceSetMagic(@) # Forum #38276 my $x = ReadingsVal($1,$2,""); $x eq "" ? "[$1:$2]" : $x }/egi; - $a =~ s/{([^}]+)}/{ + $a =~ s/({[^}]+})/{ my $x = eval $1; Log 1, "ReplaceSetMagic: $1 -> $@" if($@); - $@ ? "{$1}" : $x + ($@ || ref($x) eq "HASH") ? $1 : $x }/eg; return split(" ", $a); @@ -2780,27 +2779,6 @@ FmtTime($) return sprintf("%02d:%02d:%02d", $t[2], $t[1], $t[0]); } -##################################### -sub -CommandChain($$) -{ - my ($retry, $list) = @_; - my $ov = $attr{global}{verbose}; - my $oid = $init_done; - - $init_done = 0; # Rudi: ??? - $attr{global}{verbose} = 1; # ??? - foreach my $cmd (@{$list}) { - for(my $n = 0; $n < $retry; $n++) { - Log 1, sprintf("Trying again $cmd (%d out of %d)", $n+1,$retry) if($n>0); - my $ret = AnalyzeCommand(undef, $cmd); - last if(!defined($ret) || $ret !~ m/Timeout/); - } - } - $attr{global}{verbose} = $ov; - $init_done = $oid; -} - ##################################### sub ResolveDateWildcards($@) @@ -2856,7 +2834,7 @@ EvalSpecials($%) return $exec; } - $exec =~ s/%%/____/g if($featurelevel < 5.7); + $exec =~ s/%%/____/g if($featurelevel <= 5.6); # perform macro substitution @@ -2865,14 +2843,14 @@ EvalSpecials($%) $extsyntax+= ($exec =~ s/$special/$specials{$special}/g); } - if($featurelevel < 5.7) { + if($featurelevel <= 5.6) { if(!$extsyntax) { $exec =~ s/%/$specials{"%EVENT"}/g; } $exec =~ s/____/%/g; } - if($featurelevel < 5.7) { + if($featurelevel <= 5.6) { $exec =~ s/@@/____/g; $exec =~ s/@/$specials{"%NAME"}/g; $exec =~ s/____/@/g;