mirror of
https://github.com/cmur2/python-bme680.git
synced 2025-06-29 00:30:31 +02:00
Test suites and code QA fixes
This commit is contained in:
@ -1,11 +1,10 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import bme680
|
||||
import time
|
||||
|
||||
print("""Estimate indoor air quality
|
||||
|
||||
Runs the sensor for a burn-in period, then uses a
|
||||
Runs the sensor for a burn-in period, then uses a
|
||||
combination of relative humidity and gas resistance
|
||||
to estimate indoor air quality as a percentage.
|
||||
|
||||
@ -15,7 +14,7 @@ Press Ctrl+C to exit
|
||||
|
||||
sensor = bme680.BME680()
|
||||
|
||||
# These oversampling settings can be tweaked to
|
||||
# These oversampling settings can be tweaked to
|
||||
# change the balance between accuracy and noise in
|
||||
# the data.
|
||||
|
||||
@ -29,7 +28,7 @@ sensor.set_gas_heater_temperature(320)
|
||||
sensor.set_gas_heater_duration(150)
|
||||
sensor.select_gas_heater_profile(0)
|
||||
|
||||
# start_time and curr_time ensure that the
|
||||
# start_time and curr_time ensure that the
|
||||
# burn_in_time (in seconds) is kept track of.
|
||||
|
||||
start_time = time.time()
|
||||
@ -42,13 +41,13 @@ try:
|
||||
# Collect gas resistance burn-in values, then use the average
|
||||
# of the last 50 values to set the upper limit for calculating
|
||||
# gas_baseline.
|
||||
print("Collecting gas resistance burn-in data for 5 mins\n")
|
||||
print('Collecting gas resistance burn-in data for 5 mins\n')
|
||||
while curr_time - start_time < burn_in_time:
|
||||
curr_time = time.time()
|
||||
if sensor.get_sensor_data() and sensor.data.heat_stable:
|
||||
gas = sensor.data.gas_resistance
|
||||
burn_in_data.append(gas)
|
||||
print("Gas: {0} Ohms".format(gas))
|
||||
print('Gas: {0} Ohms'.format(gas))
|
||||
time.sleep(1)
|
||||
|
||||
gas_baseline = sum(burn_in_data[-50:]) / 50.0
|
||||
@ -56,11 +55,13 @@ try:
|
||||
# Set the humidity baseline to 40%, an optimal indoor humidity.
|
||||
hum_baseline = 40.0
|
||||
|
||||
# This sets the balance between humidity and gas reading in the
|
||||
# This sets the balance between humidity and gas reading in the
|
||||
# calculation of air_quality_score (25:75, humidity:gas)
|
||||
hum_weighting = 0.25
|
||||
|
||||
print("Gas baseline: {0} Ohms, humidity baseline: {1:.2f} %RH\n".format(gas_baseline, hum_baseline))
|
||||
print('Gas baseline: {0} Ohms, humidity baseline: {1:.2f} %RH\n'.format(
|
||||
gas_baseline,
|
||||
hum_baseline))
|
||||
|
||||
while True:
|
||||
if sensor.get_sensor_data() and sensor.data.heat_stable:
|
||||
@ -72,22 +73,31 @@ try:
|
||||
|
||||
# Calculate hum_score as the distance from the hum_baseline.
|
||||
if hum_offset > 0:
|
||||
hum_score = (100 - hum_baseline - hum_offset) / (100 - hum_baseline) * (hum_weighting * 100)
|
||||
hum_score = (100 - hum_baseline - hum_offset)
|
||||
hum_score /= (100 - hum_baseline)
|
||||
hum_score *= (hum_weighting * 100)
|
||||
|
||||
else:
|
||||
hum_score = (hum_baseline + hum_offset) / hum_baseline * (hum_weighting * 100)
|
||||
hum_score = (hum_baseline + hum_offset)
|
||||
hum_score /= hum_baseline
|
||||
hum_score *= (hum_weighting * 100)
|
||||
|
||||
# Calculate gas_score as the distance from the gas_baseline.
|
||||
if gas_offset > 0:
|
||||
gas_score = (gas / gas_baseline) * (100 - (hum_weighting * 100))
|
||||
gas_score = (gas / gas_baseline)
|
||||
gas_score *= (100 - (hum_weighting * 100))
|
||||
|
||||
else:
|
||||
gas_score = 100 - (hum_weighting * 100)
|
||||
|
||||
# Calculate air_quality_score.
|
||||
# Calculate air_quality_score.
|
||||
air_quality_score = hum_score + gas_score
|
||||
|
||||
print("Gas: {0:.2f} Ohms,humidity: {1:.2f} %RH,air quality: {2:.2f}".format(gas, hum, air_quality_score))
|
||||
print('Gas: {0:.2f} Ohms,humidity: {1:.2f} %RH,air quality: {2:.2f}'.format(
|
||||
gas,
|
||||
hum,
|
||||
air_quality_score))
|
||||
|
||||
time.sleep(1)
|
||||
|
||||
except KeyboardInterrupt:
|
||||
|
@ -1,23 +1,28 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import bme680
|
||||
import time
|
||||
|
||||
print("""Display Temperature, Pressure, Humidity and Gas
|
||||
|
||||
Press Ctrl+C to exit
|
||||
|
||||
""")
|
||||
|
||||
sensor = bme680.BME680()
|
||||
|
||||
# These calibration data can safely be commented
|
||||
# out, if desired.
|
||||
|
||||
print("Calibration data:")
|
||||
print('Calibration data:')
|
||||
for name in dir(sensor.calibration_data):
|
||||
|
||||
if not name.startswith('_'):
|
||||
value = getattr(sensor.calibration_data, name)
|
||||
|
||||
if isinstance(value, int):
|
||||
print("{}: {}".format(name, value))
|
||||
print('{}: {}'.format(name, value))
|
||||
|
||||
# These oversampling settings can be tweaked to
|
||||
# These oversampling settings can be tweaked to
|
||||
# change the balance between accuracy and noise in
|
||||
# the data.
|
||||
|
||||
@ -27,12 +32,12 @@ sensor.set_temperature_oversample(bme680.OS_8X)
|
||||
sensor.set_filter(bme680.FILTER_SIZE_3)
|
||||
sensor.set_gas_status(bme680.ENABLE_GAS_MEAS)
|
||||
|
||||
print("\n\nInitial reading:")
|
||||
print('\n\nInitial reading:')
|
||||
for name in dir(sensor.data):
|
||||
value = getattr(sensor.data, name)
|
||||
|
||||
if not name.startswith('_'):
|
||||
print("{}: {}".format(name, value))
|
||||
print('{}: {}'.format(name, value))
|
||||
|
||||
sensor.set_gas_heater_temperature(320)
|
||||
sensor.set_gas_heater_duration(150)
|
||||
@ -43,14 +48,19 @@ sensor.select_gas_heater_profile(0)
|
||||
# sensor.set_gas_heater_profile(200, 150, nb_profile=1)
|
||||
# sensor.select_gas_heater_profile(1)
|
||||
|
||||
print("\n\nPolling:")
|
||||
print('\n\nPolling:')
|
||||
try:
|
||||
while True:
|
||||
if sensor.get_sensor_data():
|
||||
output = "{0:.2f} C,{1:.2f} hPa,{2:.2f} %RH".format(sensor.data.temperature, sensor.data.pressure, sensor.data.humidity)
|
||||
output = '{0:.2f} C,{1:.2f} hPa,{2:.2f} %RH'.format(
|
||||
sensor.data.temperature,
|
||||
sensor.data.pressure,
|
||||
sensor.data.humidity)
|
||||
|
||||
if sensor.data.heat_stable:
|
||||
print("{0},{1} Ohms".format(output, sensor.data.gas_resistance))
|
||||
print('{0},{1} Ohms'.format(
|
||||
output,
|
||||
sensor.data.gas_resistance))
|
||||
|
||||
else:
|
||||
print(output)
|
||||
|
8
examples/setup.cfg
Normal file
8
examples/setup.cfg
Normal file
@ -0,0 +1,8 @@
|
||||
[flake8]
|
||||
ignore =
|
||||
E501 # line too long
|
||||
F403
|
||||
F405
|
||||
# Don't require docstrings in example code
|
||||
D100 # Missing docstring in public module
|
||||
D103 # Missing docstring in public function
|
@ -15,25 +15,29 @@ 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)
|
||||
output = '{0:.2f} C, {1:.2f} hPa, {2:.3f} %RH'.format(
|
||||
sensor.data.temperature,
|
||||
sensor.data.pressure,
|
||||
sensor.data.humidity)
|
||||
print(output)
|
||||
print("")
|
||||
print('')
|
||||
|
||||
print("Initial readings")
|
||||
|
||||
print('Initial readings')
|
||||
display_data()
|
||||
|
||||
print("SET offset 4 degrees celsius")
|
||||
print('SET offset 4 degrees celsius')
|
||||
display_data(4)
|
||||
|
||||
print("SET offset -1.87 degrees celsius")
|
||||
print('SET offset -1.87 degrees celsius')
|
||||
display_data(-1.87)
|
||||
|
||||
print("SET offset -100 degrees celsius")
|
||||
print('SET offset -100 degrees celsius')
|
||||
display_data(-100)
|
||||
|
||||
print("SET offset 0 degrees celsius")
|
||||
print('SET offset 0 degrees celsius')
|
||||
display_data(0)
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
#!/usr/bin/env python
|
||||
import bme680
|
||||
import time
|
||||
|
||||
print("""Display Temperature, Pressure and Humidity
|
||||
|
||||
@ -22,15 +21,17 @@ sensor.set_pressure_oversample(bme680.OS_4X)
|
||||
sensor.set_temperature_oversample(bme680.OS_8X)
|
||||
sensor.set_filter(bme680.FILTER_SIZE_3)
|
||||
|
||||
print("Polling:")
|
||||
print('Polling:')
|
||||
try:
|
||||
while True:
|
||||
if sensor.get_sensor_data():
|
||||
|
||||
output = "{0:.2f} C,{1:.2f} hPa,{2:.3f} %RH".format(sensor.data.temperature, sensor.data.pressure, sensor.data.humidity)
|
||||
output = '{0:.2f} C,{1:.2f} hPa,{2:.3f} %RH'.format(
|
||||
sensor.data.temperature,
|
||||
sensor.data.pressure,
|
||||
sensor.data.humidity)
|
||||
|
||||
print(output)
|
||||
|
||||
except KeyboardInterrupt:
|
||||
pass
|
||||
|
||||
|
Reference in New Issue
Block a user