diff --git a/octoprint_enclosure/BME680.py b/octoprint_enclosure/BME680.py index c969018..e5eb39f 100644 --- a/octoprint_enclosure/BME680.py +++ b/octoprint_enclosure/BME680.py @@ -26,54 +26,54 @@ getgasreference_count = int(0) def GetGasReference(gas_reference): - # Now run the sensor for a burn-in period, then use combination of relative humidity and gas resistance to estimate indoor air quality as a percentage. - # print("Getting a new gas reference value") - readings = int(10) - while True: - sensor.get_sensor_data() - if sensor.data.heat_stable: - for i in range(1, readings): # // read gas for 10 x 0.150mS = 1.5secs + # Now run the sensor for a burn-in period, then use combination of relative humidity and gas resistance to estimate indoor air quality as a percentage. + # print("Getting a new gas reference value") + readings = int(10) + while True: sensor.get_sensor_data() - gas_reference = gas_reference + sensor.data.gas_resistance - gas_reference = gas_reference / readings - return + if sensor.data.heat_stable: + for i in range(1, readings): # // read gas for 10 x 0.150mS = 1.5secs + sensor.get_sensor_data() + gas_reference = gas_reference + sensor.data.gas_resistance + gas_reference = gas_reference / readings + return def CalculateIAQ(score): - IAQ_text = "Air quality is " - score = float((100 - score) * 5) - if score >= 301: - IAQ_text = IAQ_text + "Hazardous" - elif score >= 201 and score <= 300: - IAQ_text = IAQ_text + "Very Unhealthy" - elif score >= 176 and score <= 200: - IAQ_text = IAQ_text + "Unhealthy" - elif score >= 151 and score <= 175: - IAQ_text = IAQ_text + "Unhealthy for Sensitive Groups" - elif score >= 51 and score <= 150: - IAQ_text = IAQ_text + "Moderate" - elif score >= 00 and score <= 50: - IAQ_text = IAQ_text + "Good" - return IAQ_text + IAQ_text = "Air quality is " + score = float((100 - score) * 5) + if score >= 301: + IAQ_text = IAQ_text + "Hazardous" + elif score >= 201 and score <= 300: + IAQ_text = IAQ_text + "Very Unhealthy" + elif score >= 176 and score <= 200: + IAQ_text = IAQ_text + "Unhealthy" + elif score >= 151 and score <= 175: + IAQ_text = IAQ_text + "Unhealthy for Sensitive Groups" + elif score >= 51 and score <= 150: + IAQ_text = IAQ_text + "Moderate" + elif score >= 00 and score <= 50: + IAQ_text = IAQ_text + "Good" + return IAQ_text #Calculate humidity contribution to IAQ index current_humidity = float(sensor.data.humidity) if (current_humidity >= 38 and current_humidity <= 42): - hum_score = float(0.25*100) # Humidity +/-5% around optimum + hum_score = float(0.25*100) # Humidity +/-5% around optimum else: #sub-optimal - if (current_humidity < 38): - hum_score = float(0.25/hum_reference*current_humidity*100) - else: - hum_score = ((-0.25/(100-hum_reference)*current_humidity)+0.416666)*100 + if (current_humidity < 38): + hum_score = float(0.25/hum_reference*current_humidity*100) + else: + hum_score = ((-0.25/(100-hum_reference)*current_humidity)+0.416666)*100 #Calculate gas contribution to IAQ index gas_lower_limit = float(5000) # Bad air quality limit gas_upper_limit = float(50000) # Good air quality limit if (gas_reference > gas_upper_limit): - gas_reference = gas_upper_limit + gas_reference = gas_upper_limit if (gas_reference < gas_lower_limit): - gas_reference = gas_lower_limit + gas_reference = gas_lower_limit gas_score = float((0.75/(gas_upper_limit-gas_lower_limit)*gas_reference -(gas_lower_limit*(0.75/(gas_upper_limit-gas_lower_limit))))*100)