2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-07 19:04:20 +00:00

10_ZWave.pm: Handling extra bytes for the new UZB firmware (Forum #79659)

git-svn-id: https://svn.fhem.de/fhem/trunk@15445 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2017-11-18 10:29:25 +00:00
parent cbbc6b0f60
commit 21bfd25bae

View File

@ -1481,12 +1481,12 @@ ZWave_thermostatSetpointParse ($$)
my $scale = (((hex($2) & 0x18)>>3) == 1) ? "F": "C";
my $size = (hex($2) & 0x07);
if (length($3) < $size*2) {
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
my $sp = hex($3);
$sp -= (2 ** ($size*8)) if $sp >= (2 ** ($size*8-1));
$sp = $sp / (10 ** $prec);
@ -4821,6 +4821,16 @@ ZWave_Parse($$@)
return ""
}
if($arg =~ m/^(..)(.*)/) {
my $l1 = hex($1);
my $l2 = length($2)/2;
if($l1 > $l2) {
Log3 $ioName, $2, "Packet with short length ($arg)";
return "";
}
$arg = substr($arg, 0, ($l1+1)*2) if($l1 < $l2); #79659
}
if($arg =~ m/^(..)(..)(.*)/ && $2 eq "c6") { # Danfoss Living Strangeness
Log3 $ioName, 4, "Class mod for Danfoss ($2)";
$arg = sprintf("%s%02x%s", $1, hex($2) & 0x7f, $3);