diff --git a/fhem/CHANGED b/fhem/CHANGED index f6c00c71d..0e522bbc7 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -1,5 +1,6 @@ # Add changes at the top of the list. Keep it in ASCII, and 80-char wide. # Do not insert empty lines here, update check depends on it. + - bugfix: 00_SIGNALduino: fixed ws7000 decoding - feature: 72_XiaomiDevice: predefined zones and points - bugfix: 88_xs1Bridge: blacklist PEARL Warning + Code mod - feature: 74_AMADDevice: add support to set and read Adaptive brightness diff --git a/fhem/FHEM/00_SIGNALduino.pm b/fhem/FHEM/00_SIGNALduino.pm index d6c5bf044..abc89e945 100644 --- a/fhem/FHEM/00_SIGNALduino.pm +++ b/fhem/FHEM/00_SIGNALduino.pm @@ -4441,7 +4441,7 @@ sub SIGNALduino_postDemo_WS2000($@) { do { $error += !$bit_msg[$index + $datastart]; # jedes 5. Bit muss 1 sein $dataindex = $index + $datastart + 1; - $data = oct( "0b".(join "", reverse @bit_msg[$dataindex .. $dataindex + 3])) if ($dataindex <= $datalength); + $data = oct( "0b".(join "", reverse @bit_msg[$dataindex .. $dataindex + 3])); if ($index == 5) {$adr = ($data & 0x07)} # Sensoradresse if ($datalength == 45 || $datalength == 46) { # Typ 1 ohne Summe if ($index <= $datalength - 5) { @@ -4454,7 +4454,7 @@ sub SIGNALduino_postDemo_WS2000($@) { } } $index += 5; - } until ($index >= $datalength); + } until ($index >= $datalength -1 ); } if ($error != 0) { Log3 $name, 4, "$name: WS2000 Sensortyp $typ Adr $adr - ERROR examination bit"; @@ -4464,7 +4464,7 @@ sub SIGNALduino_postDemo_WS2000($@) { return (0, undef); } else { if ($datalength < 45 || $datalength > 46) { # Summe prüfen, außer Typ 1 ohne Summe - $data = oct( "0b".(join "", reverse @bit_msg[$dataindex .. $dataindex + 3])) if ($dataindex <= $datalength); + $data = oct( "0b".(join "", reverse @bit_msg[$dataindex .. $dataindex + 3])); if ($data != ($sum & 0x0F)) { Log3 $name, 4, "$name: WS2000 Sensortyp $typ Adr $adr - ERROR sum"; return (0, undef);