From 4a5daf0bb5ef6d417d48dd8dbd7c0873e3091fca Mon Sep 17 00:00:00 2001 From: robert-hh Date: Mon, 26 Nov 2018 07:52:37 +0100 Subject: [PATCH 1/2] adafruit_bme680.py: Fix compensation of pressure values Compared the ot reference code, one expression in the lengthy calculation was split in two lines. Since a previous interim value was used in the expression twice and replaced by the first part of the split expression, the overall result was different to the reference code. The resulting pressure was not that different, 10 hPa at 1000hPa absolute value, but clearly outside of the spec with 1hPa absolute pressure error. --- adafruit_bme680.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/adafruit_bme680.py b/adafruit_bme680.py index 75a1393..f8cd1ce 100644 --- a/adafruit_bme680.py +++ b/adafruit_bme680.py @@ -189,8 +189,8 @@ def pressure(self): var2 = (var2 * self._pressure_calibration[5]) / 4 var2 = var2 + (var1 * self._pressure_calibration[4] * 2) var2 = (var2 / 4) + (self._pressure_calibration[3] * 65536) - var1 = ((var1 / 4) * (var1 / 4)) / 8192 - var1 = (((var1 * self._pressure_calibration[2] * 32) / 8) + + var1 = (((((var1 / 4) * (var1 / 4)) / 8192) * + (self._pressure_calibration[2] * 32) / 8) + ((self._pressure_calibration[1] * var1) / 2)) var1 = var1 / 262144 var1 = ((32768 + var1) * self._pressure_calibration[0]) / 32768 From 10b6f918d9dacd715f7a45a482ecd276388b58a8 Mon Sep 17 00:00:00 2001 From: Scott Shawcroft Date: Thu, 29 Nov 2018 15:01:47 -0800 Subject: [PATCH 2/2] Added space for pylint --- adafruit_bme680.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adafruit_bme680.py b/adafruit_bme680.py index f8cd1ce..d69a786 100644 --- a/adafruit_bme680.py +++ b/adafruit_bme680.py @@ -190,7 +190,7 @@ def pressure(self): var2 = var2 + (var1 * self._pressure_calibration[4] * 2) var2 = (var2 / 4) + (self._pressure_calibration[3] * 65536) var1 = (((((var1 / 4) * (var1 / 4)) / 8192) * - (self._pressure_calibration[2] * 32) / 8) + + (self._pressure_calibration[2] * 32) / 8) + ((self._pressure_calibration[1] * var1) / 2)) var1 = var1 / 262144 var1 = ((32768 + var1) * self._pressure_calibration[0]) / 32768