1
0
mirror of https://github.com/cmur2/python-bme680.git synced 2025-07-06 11:11:26 +02:00

11 Commits

11 changed files with 184 additions and 7 deletions

21
LICENSE Normal file
View File

@ -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.

39
examples/temp-offset.py Executable file
View File

@ -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)

View File

@ -1,3 +1,8 @@
1.0.5
-----
* New: set_temp_offset to calibrate temperature offset in degrees C
1.0.4
-----

21
library/LICENSE.txt Normal file
View File

@ -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.

View File

@ -1,5 +1,5 @@
include CHANGELOG.txt
include LICENSE.txt
include README.txt
include README.rst
include setup.py
include bme680.py
recursive-include bme680 *.py

68
library/README.rst Normal file
View File

@ -0,0 +1,68 @@
BME680
======
https://shop.pimoroni.com/products/bme680
The state-of-the-art BME680 breakout lets you measure temperature,
pressure, humidity, and indoor air quality.
Installing
----------
Full install (recommended):
~~~~~~~~~~~~~~~~~~~~~~~~~~~
We've created an easy installation script that will install all
pre-requisites and get your BME680 up and running with minimal efforts.
To run it, fire up Terminal which you'll find in Menu -> Accessories ->
Terminal on your Raspberry Pi desktop, as illustrated below:
.. figure:: http://get.pimoroni.com/resources/github-repo-terminal.png
:alt: Finding the terminal
In the new terminal window type the command exactly as it appears below
(check for typos) and follow the on-screen instructions:
.. code:: bash
curl https://get.pimoroni.com/bme680 | bash
Manual install:
~~~~~~~~~~~~~~~
Library install for Python 3:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code:: bash
sudo pip3 install bme680
Library install for Python 2:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code:: bash
sudo pip2 install bme680
Development:
~~~~~~~~~~~~
If you want to contribute, or like living on the edge of your seat by
having the latest code, you should clone this repository, ``cd`` to the
library directory, and run:
.. code:: bash
sudo python3 setup.py install
(or ``sudo python setup.py install`` whichever your primary Python
environment may be)
In all cases you will have to enable the i2c bus.
Documentation & Support
-----------------------
- Guides and tutorials - https://learn.pimoroni.com/bme680
- Get help - http://forums.pimoroni.com/c/support

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

View File

@ -2,7 +2,7 @@ from .constants import *
import math
import time
__version__ = '1.0.4'
__version__ = '1.0.5'
class BME680(BME680Data):
"""BOSCH BME680
@ -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

View File

@ -39,11 +39,11 @@ classifiers = ['Development Status :: 5 - Production/Stable',
setup(
name = 'bme680',
version = '1.0.4',
version = '1.0.5',
author = 'Philip Howard',
author_email = 'phil@pimoroni.com',
description = """Python library for driving the Pimoroni BME680 Breakout""",
long_description= open('README.txt').read() + open('CHANGELOG.txt').read(),
long_description= open('README.rst').read() + "\n" + open('CHANGELOG.txt').read(),
license = 'MIT',
keywords = 'Raspberry Pi',
url = 'http://www.pimoroni.com',

View File

@ -1,3 +1,9 @@
bme680 (1.0.5) stable; urgency=low
* New: set_temp_offset to calibrate temperature offset in degrees C
-- Phil Howard <phil@pimoroni.com> Fri, 01 Jun 2018 00:00:00 +0000
bme680 (1.0.4) stable; urgency=low
* Fix to range_sw_err for extremely high gas readings

View File

@ -1,3 +1,9 @@
bme680 (1.0.5) stable; urgency=low
* New: set_temp_offset to calibrate temperature offset in degrees C
-- Phil Howard <phil@pimoroni.com> Fri, 01 Jun 2018 00:00:00 +0000
bme680 (1.0.4) stable; urgency=low
* Fix to range_sw_err for extremely high gas readings