From 731e21af12951c2f907be3755bcc8d1f3e4b7cd2 Mon Sep 17 00:00:00 2001 From: rudolfkoenig <> Date: Wed, 26 Feb 2014 08:29:44 +0000 Subject: [PATCH] structure: conditional set from justme1968 git-svn-id: https://svn.fhem.de/fhem/trunk@5050 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/98_structure.pm | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/fhem/FHEM/98_structure.pm b/fhem/FHEM/98_structure.pm index cfce47624..fdc9191b6 100755 --- a/fhem/FHEM/98_structure.pm +++ b/fhem/FHEM/98_structure.pm @@ -329,8 +329,16 @@ structure_Set($@) $hash->{INSET} = 1; - $hash->{STATE} = join(" ", @list[1..@list-1]) - if($list[1] ne "?"); + my $filter; + if($list[1] ne "?") { + $hash->{STATE} = join(" ", @list[1..@list-1]); + + if( $hash->{STATE} =~ /^\[(FILTER=.*)]/ ) { + $filter = $1; + @list = split(" ", + $list[0] ." ". substr($hash->{STATE}, length($filter)+2)); + } + } foreach my $d (sort keys %{ $hash->{CONTENT} }) { next if(!$defs{$d}); @@ -345,7 +353,14 @@ structure_Set($@) } $list[0] = $d; - my $sret .= CommandSet(undef, join(" ", @list)); + my $sret; + if($filter) { + my $ret = AnalyzeCommand(undef, + "set $list[0]:$filter ". join(" ", @list[1..@list-1]) ); + $sret .= $ret if( $ret ); + } else { + $sret .= CommandSet(undef, join(" ", @list)); + } if($sret) { $ret .= "\n" if($ret); $ret .= $sret; @@ -449,7 +464,10 @@ structure_Attr($@)
@@ -599,7 +617,10 @@ structure_Attr($@)