From de8752a3549e31a704142dbb3a80f4619307a29c Mon Sep 17 00:00:00 2001 From: loredo Date: Fri, 30 Dec 2016 11:22:02 +0000 Subject: [PATCH] Unit.pm: use pure txt unit value in Unit_DbLog_split git-svn-id: https://svn.fhem.de/fhem/trunk@12910 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/Unit.pm | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/fhem/FHEM/Unit.pm b/fhem/FHEM/Unit.pm index 7490ea96d..c85f6620b 100644 --- a/fhem/FHEM/Unit.pm +++ b/fhem/FHEM/Unit.pm @@ -726,7 +726,10 @@ my $rtypes = { nl => [ 'stabiel', 'stijgend', 'dalend' ], pl => [ 'stabilne', 'rośnie', 'spada' ], }, - scope => [ '^(=|0)$', '^(\+|1)$', '^(-|2)$' ], + scope => [ + '^(=|steady|stable|0)$', '^(\+|rising|up|1)$', + '^(-|falling|down|2)$' + ], tmpl => '%symbol%', tmpl_long => '%txt_long%', rtype_description => 'Trend', @@ -3232,7 +3235,7 @@ sub replaceTemplate ($$$$;$) { # find text template if ( looks_like_number($value) - && ( $value eq "0" || $value > 1 ) + && ( $value eq "0" || $value > 1 || $value < -1 ) && $desc->{txt_long_pl} ) { $txt_long = '%value%' . chr(0x00A0) . '%txt_long_pl%'; @@ -3240,7 +3243,7 @@ sub replaceTemplate ($$$$;$) { if ( $desc->{tmpl_long_pl} ); } elsif (looks_like_number($value) - && ( $value eq "0" || $value > 1 ) + && ( $value eq "0" || $value > 1 || $value < -1 ) && $desc->{txt_pl} ) { $txt_long = '%value%' . chr(0x00A0) . '%txt_pl%'; @@ -3333,6 +3336,8 @@ sub Unit_verifyValueNumber($$) { $value = $scope->{eq} if ( !$scope->{keep} || $scope->{strict} ); } + $value_num = $scope->{value_num} + if ( defined( $scope->{value_num} ) ); } elsif ( !$scope->{regex} && !defined( $scope->{eq} ) ) { $log .= " '$value' is not a number." @@ -3386,6 +3391,17 @@ sub Unit_verifyValueNumber($$) { if ( !$scope->{keep} || $scope->{strict} ); } } + elsif ( $_ eq 'eq' ) { + if ( $value ne $scope->{$_} ) { + $log .= " $value is not equal to $scope->{$_}."; + $value = $scope->{$_} + if ( !$scope->{keep} || $scope->{strict} ); + } + else { + $log = undef; + last; + } + } } return ( $verified, $value, $value_num, $log ); @@ -3708,6 +3724,7 @@ sub formatValue($$$;$$$$) { } } + #TODO: wenn nummer out of scope, dann muss ein maximalwert gesetzt sein else { Unit_Log3( $device, $reading, $desc, 9, "formatValue $device $reading: scope: " @@ -3716,11 +3733,10 @@ sub formatValue($$$;$$$$) { my ( $verified, $tval, $tval_num, $log ) = Unit_verifyValueNumber( $value, $_ ); - if ( !$verified && $log ) { + if ($log) { Unit_Log3( $device, $reading, $desc, 4, "formatValue $device $reading: scope: WARNING -$log" ); - } elsif ( $verified && !$log ) { @@ -4336,8 +4352,7 @@ sub Unit_DbLog_split($$) { $txt =~ s/\s*$val\s*//; $txt_long =~ s/\s*$val\s*//; $value = defined($val_num) ? $val_num : $val; - $unit = "$txt_long ($txt)" if ($txt_long); - $unit = "$txt" if ( !$txt_long ); + $unit = "$txt"; } }