From 17ae183a466528f7468ce651911628aa1b8799d2 Mon Sep 17 00:00:00 2001 From: andi291 Date: Thu, 14 Jun 2018 10:25:48 +0000 Subject: [PATCH] 10_KNX.pm: fixed scaling algo part 2 git-svn-id: https://svn.fhem.de/fhem/trunk@16868 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/10_KNX.pm | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/fhem/FHEM/10_KNX.pm b/fhem/FHEM/10_KNX.pm index 935ac2c83..626553678 100644 --- a/fhem/FHEM/10_KNX.pm +++ b/fhem/FHEM/10_KNX.pm @@ -25,6 +25,7 @@ # ABU 20180606 Fixed dpt18, fixed offset-addition in decode (was "-" instead of "+"), fixed issue with slider # ABU 20180607 seperated limit and scale from encode/decode in order to avoid warnings and clean up # ABU 20180613 fixed scaling algo +# ABU 20180613 fixed scaling algo part 2 package main; @@ -1496,6 +1497,10 @@ KNX_limit ($$$$) { { if ($direction =~ m/^encode/i) { + #limitValue + $retVal = $min if (defined ($min) and ($retVal < $min)); + $retVal = $max if (defined ($max) and ($retVal > $max)); + #correct value $retVal /= $factor if (defined ($factor)); $retVal -= $offset if (defined ($offset)); @@ -1505,22 +1510,21 @@ KNX_limit ($$$$) { #correct value $retVal += $offset if (defined ($offset)); $retVal *= $factor if (defined ($factor)); + + #limitValue + $retVal = $min if (defined ($min) and ($retVal < $min)); + $retVal = $max if (defined ($max) and ($retVal > $max)); } - Log3 ($name, 5, "limit: FACTOR: $factor" ) if (defined ($factor)); - Log3 ($name, 5, "limit: OFFSET: $offset" ) if (defined ($offset)); - Log3 ($name, 5, "limit: scaled... Output: $retVal, Input: $value, Model: $model") if ($retVal != $value); + my $logString = "limit:"; + $logString .= " DIR: $direction" if (defined ($direction)); + $logString .= " FACTOR: $factor" if (defined ($factor)); + $logString .= " OFFSET: $factor" if (defined ($offset)); + $logString .= " MIN: $factor" if (defined ($min)); + $logString .= " MAX: $factor" if (defined ($max)); + Log3 ($name, 5, $logString); + Log3 ($name, 5, "limit: modified... Output: $retVal, Input: $value, Model: $model") if ($retVal != $value); } - - #backup for later check - my $checkVal = $retVal; - #limitValue - $retVal = $min if (defined ($min) and ($retVal < $min)); - $retVal = $max if (defined ($max) and ($retVal > $max)); - - Log3 ($name, 5, "limit: MIN: $min" ) if (defined ($min)); - Log3 ($name, 5, "limit: MAX: $max" ) if (defined ($max)); - Log3 ($name, 5, "limit: casted... Output: $retVal, Input: $value, Model: $model" ) if ($checkVal != $value); } else {