I'm running into the same issue. Your reply seemed to address Min Temp. I put the TEMPE in the freezer to test. The TEMPE reacts faster than my EDGE 1030 ("Device"). It appears once the TEMPE dropped below 32F (0C), my MSB/LSB logic failed. Any ideas? Is this a signed/unsigned thing?
This seems to work for me for the 16-bit signed current temp. once I've added payload 7 to payload 6 to get the value... the value is good as-is unless either of these two conditions exist. Then just divide by 100.
if (value == 0x8000 || value > 0xffff) { value = null; } // invalid for 16-bit signed
else if (value >= 0x8001) { value = value - 0x10000; } // substract 65536
I figured it out...
if (value == 0x8000 || value > 0xffff) { value = null; } // invalid for 16-bit signed
else if (value >= 0x8001) { value = value - 0x10000; } // substract 65536