From e5f06559e6762b00e36a66901ba092676cd8e019 Mon Sep 17 00:00:00 2001 From: ernitron Date: Mon, 31 Oct 2016 10:54:44 +0100 Subject: [PATCH] esp8266/modules: Fix negative temperature in ds18x20 driver. --- esp8266/modules/ds18x20.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/esp8266/modules/ds18x20.py b/esp8266/modules/ds18x20.py index eb22e2ae30..fc53048f8e 100644 --- a/esp8266/modules/ds18x20.py +++ b/esp8266/modules/ds18x20.py @@ -43,4 +43,7 @@ class DS18X20: t = buf[0] >> 1 return t - 0.25 + (buf[7] - buf[6]) / buf[7] else: - return (buf[1] << 8 | buf[0]) / 16 + t = buf[1] << 8 | buf[0] + if t & 0x8000: # sign bit set + t = -((t ^ 0xffff) + 1) + return t / 16