From c3b2b8605568cceb0a59f327c9944c92e64bbe2d Mon Sep 17 00:00:00 2001 From: ntruchsess Date: Fri, 4 Apr 2014 20:26:08 +0000 Subject: [PATCH] OWMULTI_BinValues: process only calles with expected readdata git-svn-id: svn://svn.code.sf.net/p/fhem/code/trunk@5436 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/21_OWMULTI.pm | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/fhem/FHEM/21_OWMULTI.pm b/fhem/FHEM/21_OWMULTI.pm index 3ad40bbc2..2f6adbe89 100644 --- a/fhem/FHEM/21_OWMULTI.pm +++ b/fhem/FHEM/21_OWMULTI.pm @@ -747,17 +747,24 @@ sub OWXMULTI_BinValues($$$$$$$$) { my ($hash, $context, $success, $reset, $owx_dev, $command, $numread, $res) = @_; #-- always check for success, unused are reset, numread - return unless ($success and $context); + return unless ($success and $context =~ /^ds2438.getv[ad]d$/); + #Log 1,"OWXMULTI_BinValues context = $context"; #-- process results my @data=split(//,$res); - Log 1, "invalid data length, ".int(@data)." instead of 9 bytes" - if (@data != 9); - Log 1, "conversion not complete or data invalid" - if ((ord($data[0]) & 112)!=0); - Log 1, "invalid CRC" - if (OWX_CRC8(substr($res,0,8),$data[8])==0); + if (@data != 9) { + Log 1, "invalid data length, ".int(@data)." instead of 9 bytes"; + return; + } + if ((ord($data[0]) & 112)!=0) { + Log 1, "conversion not complete or data invalid"; + return; + } + if (OWX_CRC8(substr($res,0,8),$data[8])==0) { + Log 1, "invalid CRC"; + return; + } #-- this must be different for the different device types # family = 26 => DS2438