Skip to content

Commit 1c9ba41

Browse files
committed
added set_temp_offset function and example
1 parent 40b4b63 commit 1c9ba41

2 files changed

Lines changed: 61 additions & 2 deletions

File tree

examples/temp-offset.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#!/usr/bin/env python
2+
import bme680
3+
4+
print("""Display Temperature, Pressure and Humidity with different offsets.
5+
""")
6+
7+
sensor = bme680.BME680()
8+
9+
# These oversampling settings can be tweaked to
10+
# change the balance between accuracy and noise in
11+
# the data.
12+
13+
sensor.set_humidity_oversample(bme680.OS_2X)
14+
sensor.set_pressure_oversample(bme680.OS_4X)
15+
sensor.set_temperature_oversample(bme680.OS_8X)
16+
sensor.set_filter(bme680.FILTER_SIZE_3)
17+
18+
print("Initial readings")
19+
sensor.get_sensor_data()
20+
output = "{0:.2f} C,{1:.2f} hPa,{2:.3f} %RH".format(sensor.data.temperature, sensor.data.pressure, sensor.data.humidity)
21+
print(output)
22+
23+
print("SET offset 4 degrees celsius")
24+
sensor.set_temp_offset(4)
25+
sensor.get_sensor_data()
26+
output = "{0:.2f} C,{1:.2f} hPa,{2:.3f} %RH".format(sensor.data.temperature, sensor.data.pressure, sensor.data.humidity)
27+
print(output)
28+
29+
print("SET offset -10 degrees celsius")
30+
sensor.set_temp_offset(-10)
31+
sensor.get_sensor_data()
32+
output = "{0:.2f} C,{1:.2f} hPa,{2:.3f} %RH".format(sensor.data.temperature, sensor.data.pressure, sensor.data.humidity)
33+
print(output)
34+
35+
print("SET offset -100 degrees celsius")
36+
sensor.set_temp_offset(-100)
37+
sensor.get_sensor_data()
38+
output = "{0:.2f} C,{1:.2f} hPa,{2:.3f} %RH".format(sensor.data.temperature, sensor.data.pressure, sensor.data.humidity)
39+
print(output)
40+
41+
print("SET offset 0 degrees celsius")
42+
sensor.set_temp_offset(0)
43+
sensor.get_sensor_data()
44+
output = "{0:.2f} C,{1:.2f} hPa,{2:.3f} %RH".format(sensor.data.temperature, sensor.data.pressure, sensor.data.humidity)
45+
print(output)
46+

library/bme680/__init__.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ def __init__(self, i2c_addr=I2C_ADDR_PRIMARY, i2c_device=None):
3636
self.set_temperature_oversample(OS_8X)
3737
self.set_filter(FILTER_SIZE_3)
3838
self.set_gas_status(ENABLE_GAS_MEAS)
39-
39+
self.set_temp_offset(0)
4040
self.get_sensor_data()
4141

4242
def _get_calibration_data(self):
@@ -56,6 +56,19 @@ def soft_reset(self):
5656
self._set_regs(SOFT_RESET_ADDR, SOFT_RESET_CMD)
5757
time.sleep(RESET_PERIOD / 1000.0)
5858

59+
def set_temp_offset(self, value):
60+
"""Set temperature offset in celsius
61+
62+
If set, the temperature t_fine will be increased by given value in celsius.
63+
:param value: Temperature offset in Celsius, eg. 4, -8
64+
"""
65+
if value == 0:
66+
self.offset_temp_in_t_fine = 0
67+
elif value < 0:
68+
self.offset_temp_in_t_fine = -int((((abs(value) * 100) << 8) - 128) / 5)
69+
else:
70+
self.offset_temp_in_t_fine = int((((abs(value) * 100) << 8) - 128) / 5)
71+
5972
def set_humidity_oversample(self, value):
6073
"""Set humidity oversampling
6174
@@ -293,7 +306,7 @@ def _calc_temperature(self, temperature_adc):
293306
var3 = ((var3) * (self.calibration_data.par_t3 << 4)) >> 14
294307

295308
# Save teperature data for pressure calculations
296-
self.calibration_data.t_fine = (var2 + var3)
309+
self.calibration_data.t_fine = (var2 + var3) + self.offset_temp_in_t_fine
297310
calc_temp = (((self.calibration_data.t_fine * 5) + 128) >> 8)
298311

299312
return calc_temp

0 commit comments

Comments
 (0)