From 1350f78d3571d97e91b44728b4e248ed3ab61c03 Mon Sep 17 00:00:00 2001 From: justme-1968 Date: Tue, 27 Aug 2013 19:19:22 +0000 Subject: [PATCH] apply valueFormat for longpoll updates git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@3811 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- FHEM/33_readingsGroup.pm | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/FHEM/33_readingsGroup.pm b/FHEM/33_readingsGroup.pm index 60d4df214..f47704b27 100644 --- a/FHEM/33_readingsGroup.pm +++ b/FHEM/33_readingsGroup.pm @@ -186,7 +186,10 @@ readingsGroup_2html($) if( $value_format ) { my $value_format = $value_format; if( ref($value_format) eq 'HASH' ) { - $value_format = $value_format->{$n}; + my $vf; + $vf = $value_format->{$n} if( defined($value_format->{$n}) ); + $vf = $value_format->{$name.".".$n} if( defined($value_format->{$name.".".$n}) ); + $value_format = $vf; } elsif( $value_format =~ m/^{.*}$/) { my $DEVICE = $name; my $READING = $n; @@ -250,7 +253,10 @@ readingsGroup_2html($) if( $value_format ) { my $value_format = $value_format; if( ref($value_format) eq 'HASH' ) { - $value_format = $value_format->{$n}; + my $vf; + $vf = $value_format->{$n} if( defined($value_format->{$n}) ); + $vf = $value_format->{$name.".".$n} if( defined($value_format->{$name.".".$n}) ); + $value_format = $vf; } elsif( $value_format =~ m/^{.*}$/) { my $DEVICE = $name; my $READING = $n; @@ -360,6 +366,28 @@ readingsGroup_Notify($$) next if( $dev->{NAME} ne $h->{NAME} ); my $regex = @{$device}[1]; next if( defined($regex) && $reading !~ m/^$regex$/); + + my $value_format = AttrVal( $name, "valueFormat", "" ); + if( $value_format =~ m/^{.*}$/ ) { + my $vf = eval $value_format; + $value_format = $vf if( $vf ); + } + if( $value_format ) { + my $value_format = $value_format; + if( ref($value_format) eq 'HASH' ) { + my $vf; + $vf = $value_format->{$reading} if( defined($value_format->{$reading}) ); + $vf = $value_format->{$dev->{NAME}.".".$reading} if( defined($value_format->{$dev->{NAME}.".".$reading}) ); + $value_format = $vf; + } elsif( $value_format =~ m/^{.*}$/) { + my $DEVICE = $dev->{NAME}; + my $READING = $reading; + my $VALUE = $value; + $value_format = eval $value_format; + } + $value = sprintf( $value_format, $value ) if( $value_format ); + } + CommandTrigger( "", "$name $dev->{NAME}.$reading: $value" ); } }