diff --git a/examples/temp-offset.py b/examples/temp-offset.py new file mode 100755 index 0000000..3f468b4 --- /dev/null +++ b/examples/temp-offset.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python +import bme680 + +print("""Display Temperature, Pressure and Humidity with different offsets. +""") + +sensor = bme680.BME680() + +# These oversampling settings can be tweaked to +# change the balance between accuracy and noise in +# the data. + +sensor.set_humidity_oversample(bme680.OS_2X) +sensor.set_pressure_oversample(bme680.OS_4X) +sensor.set_temperature_oversample(bme680.OS_8X) +sensor.set_filter(bme680.FILTER_SIZE_3) + +def display_data(offset=0): + sensor.set_temp_offset(offset) + sensor.get_sensor_data() + output = "{0:.2f} C, {1:.2f} hPa, {2:.3f} %RH".format(sensor.data.temperature, sensor.data.pressure, sensor.data.humidity) + print(output) + print("") + +print("Initial readings") +display_data() + +print("SET offset 4 degrees celsius") +display_data(4) + +print("SET offset -1.87 degrees celsius") +display_data(-1.87) + +print("SET offset -100 degrees celsius") +display_data(-100) + +print("SET offset 0 degrees celsius") +display_data(0) + diff --git a/library/LICENSE.txt b/library/LICENSE.txt new file mode 100644 index 0000000..b3e25b2 --- /dev/null +++ b/library/LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 Pimoroni Ltd + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/library/MANIFEST.in b/library/MANIFEST.in index 030f39d..e203acd 100644 --- a/library/MANIFEST.in +++ b/library/MANIFEST.in @@ -2,4 +2,4 @@ include CHANGELOG.txt include LICENSE.txt include README.txt include setup.py -include bme680.py +recursive-include bme680 *.py diff --git a/library/bme680/__init__.py b/library/bme680/__init__.py index ea19373..64d9f16 100644 --- a/library/bme680/__init__.py +++ b/library/bme680/__init__.py @@ -36,7 +36,7 @@ class BME680(BME680Data): self.set_temperature_oversample(OS_8X) self.set_filter(FILTER_SIZE_3) self.set_gas_status(ENABLE_GAS_MEAS) - + self.set_temp_offset(0) self.get_sensor_data() def _get_calibration_data(self): @@ -56,6 +56,17 @@ class BME680(BME680Data): self._set_regs(SOFT_RESET_ADDR, SOFT_RESET_CMD) time.sleep(RESET_PERIOD / 1000.0) + def set_temp_offset(self, value): + """Set temperature offset in celsius + + If set, the temperature t_fine will be increased by given value in celsius. + :param value: Temperature offset in Celsius, eg. 4, -8, 1.25 + """ + if value == 0: + self.offset_temp_in_t_fine = 0 + else: + self.offset_temp_in_t_fine = int(math.copysign((((int(abs(value) * 100)) << 8) - 128) / 5, value)) + def set_humidity_oversample(self, value): """Set humidity oversampling @@ -293,7 +304,7 @@ class BME680(BME680Data): var3 = ((var3) * (self.calibration_data.par_t3 << 4)) >> 14 # Save teperature data for pressure calculations - self.calibration_data.t_fine = (var2 + var3) + self.calibration_data.t_fine = (var2 + var3) + self.offset_temp_in_t_fine calc_temp = (((self.calibration_data.t_fine * 5) + 128) >> 8) return calc_temp