From 56a1484dfd47c3acaa93b24c409a5423f1ad27af Mon Sep 17 00:00:00 2001 From: klausw <> Date: Thu, 1 Mar 2018 18:21:42 +0000 Subject: [PATCH] 52_I2C_LM75A: overflow fixed git-svn-id: https://svn.fhem.de/fhem/trunk@16302 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/52_I2C_LM75A.pm | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/fhem/FHEM/52_I2C_LM75A.pm b/fhem/FHEM/52_I2C_LM75A.pm index 20d70ef8b..d92b6c087 100644 --- a/fhem/FHEM/52_I2C_LM75A.pm +++ b/fhem/FHEM/52_I2C_LM75A.pm @@ -193,14 +193,18 @@ sub I2C_LM75A_GetTemp ($$) { my @raw = split(" ",$rawdata); my $temperature = 0; - if(($raw[0] & 0x80) > 0) { - $temperature = 0xffffff00; - } +# if(($raw[0] & 0x80) > 0) { +# $temperature = 0xffffff00; +# } # $temperature |= ($raw[0] & 0x7f) << 1; # $temperature |= (($raw[1] >> 7) & 1); - my $temperature_11_bit = ($raw[0]<<8 | $raw[1]) >> 5; # Compute 11-bit temperature output value + my $temperature_11_bit = ($raw[0] << 8 | $raw[1]) >> 5; # Compute 11-bit temperature output value $temperature = ($temperature_11_bit) * 0.125; # Compute temperature in °C + if(($raw[0] & 0x80) > 0) { # check for negative value +# $temperature *= -1; + $temperature -= 256.000; + } # $temperature = $temperature / 2; Log3 $hash, 5, "temperature: $temperature";