diff --git a/FHEM/10_ZWave.pm b/FHEM/10_ZWave.pm index 12d75b923..2a3952c48 100644 --- a/FHEM/10_ZWave.pm +++ b/FHEM/10_ZWave.pm @@ -1481,12 +1481,13 @@ ZWave_thermostatSetpointParse ($$) my $scale = (((hex($2) & 0x18)>>3) == 1) ? "F": "C"; my $size = (hex($2) & 0x07); - my $sp = hex($3); - if(length($3) != $size*2) { - $sp = ($sp & 0xfff0000) >> 16; #79659, Temporary? - } else { - $sp -= (2 ** ($size*8)) if($sp >= (2 ** ($size*8-1))); + if (length($3) < $size*2) { + Log3 $name, 1, "$name: THERMOSTAT_SETPOINT_REPORT " + ."wrong number of bytes received"; + return; } + my $sp = hex(substr($3,0,$size*2)); # 79659 + $sp -= (2 ** ($size*8)) if $sp >= (2 ** ($size*8-1)); $sp = $sp / (10 ** $prec); # output temperature with variable decimals as reported (according to $prec)