Bme680 (#11892)
* Added documentation reference to code * Some code clean-ups suggested by @MartinHjelmare in PR#: 11695 after merging. * fixed minor typo in docstring * fixed another minor typo in same docstring... * fixed another minor typo in same docstring...
This commit is contained in:
parent
d65ac7421d
commit
a0a001db71
1 changed files with 51 additions and 52 deletions
|
@ -2,12 +2,16 @@
|
||||||
Support for BME680 Sensor over SMBus.
|
Support for BME680 Sensor over SMBus.
|
||||||
|
|
||||||
Temperature, humidity, pressure and volitile gas support.
|
Temperature, humidity, pressure and volitile gas support.
|
||||||
Air Qaulity calucaltion based on humidity and volatile gas.
|
Air Quality calculation based on humidity and volatile gas.
|
||||||
|
|
||||||
|
For more details about this platform, please refer to the documentation at
|
||||||
|
https://home-assistant.io/components/sensor.bme680/
|
||||||
"""
|
"""
|
||||||
import asyncio
|
import asyncio
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
from time import time, sleep
|
||||||
|
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
|
|
||||||
from homeassistant.components.sensor import PLATFORM_SCHEMA
|
from homeassistant.components.sensor import PLATFORM_SCHEMA
|
||||||
|
@ -100,18 +104,15 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None):
|
||||||
|
|
||||||
sensor_handler = yield from hass.async_add_job(_setup_bme680, config)
|
sensor_handler = yield from hass.async_add_job(_setup_bme680, config)
|
||||||
if sensor_handler is None:
|
if sensor_handler is None:
|
||||||
return False
|
return
|
||||||
|
|
||||||
dev = []
|
dev = []
|
||||||
try:
|
for variable in config[CONF_MONITORED_CONDITIONS]:
|
||||||
for variable in config[CONF_MONITORED_CONDITIONS]:
|
dev.append(BME680Sensor(
|
||||||
dev.append(BME680Sensor(
|
sensor_handler, variable, SENSOR_TYPES[variable][1], name))
|
||||||
sensor_handler, variable, SENSOR_TYPES[variable][1], name))
|
|
||||||
except KeyError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
async_add_devices(dev)
|
async_add_devices(dev)
|
||||||
return True
|
return
|
||||||
|
|
||||||
|
|
||||||
# pylint: disable=import-error
|
# pylint: disable=import-error
|
||||||
|
@ -119,7 +120,6 @@ def _setup_bme680(config):
|
||||||
"""Set up and configure the BME680 sensor."""
|
"""Set up and configure the BME680 sensor."""
|
||||||
from smbus import SMBus
|
from smbus import SMBus
|
||||||
import bme680
|
import bme680
|
||||||
from time import sleep
|
|
||||||
|
|
||||||
sensor_handler = None
|
sensor_handler = None
|
||||||
sensor = None
|
sensor = None
|
||||||
|
@ -232,50 +232,49 @@ class BME680Handler:
|
||||||
|
|
||||||
def _run_gas_sensor(self, burn_in_time):
|
def _run_gas_sensor(self, burn_in_time):
|
||||||
"""Calibrate the Air Quality Gas Baseline."""
|
"""Calibrate the Air Quality Gas Baseline."""
|
||||||
if not self._gas_sensor_running:
|
if self._gas_sensor_running:
|
||||||
self._gas_sensor_running = True
|
|
||||||
import time
|
|
||||||
|
|
||||||
# Pause to allow inital data read for device validation.
|
|
||||||
time.sleep(1)
|
|
||||||
|
|
||||||
start_time = time.time()
|
|
||||||
curr_time = time.time()
|
|
||||||
burn_in_data = []
|
|
||||||
|
|
||||||
_LOGGER.info(("Beginning %d second gas sensor burn in for "
|
|
||||||
"Air Quality"), burn_in_time)
|
|
||||||
while curr_time - start_time < burn_in_time:
|
|
||||||
curr_time = time.time()
|
|
||||||
if (
|
|
||||||
self._sensor.get_sensor_data() and
|
|
||||||
self._sensor.data.heat_stable
|
|
||||||
):
|
|
||||||
gas_resistance = self._sensor.data.gas_resistance
|
|
||||||
burn_in_data.append(gas_resistance)
|
|
||||||
self.sensor_data.gas_resistance = gas_resistance
|
|
||||||
_LOGGER.debug(("AQ Gas Resistance Baseline reading %2f "
|
|
||||||
"Ohms"), gas_resistance)
|
|
||||||
time.sleep(1)
|
|
||||||
|
|
||||||
_LOGGER.debug(("AQ Gas Resistance Burn In Data (Size: %d): "
|
|
||||||
"\n\t%s"), len(burn_in_data), burn_in_data)
|
|
||||||
self._gas_baseline = sum(burn_in_data[-50:]) / 50.0
|
|
||||||
_LOGGER.info("Completed gas sensor burn in for Air Quality")
|
|
||||||
_LOGGER.info("AQ Gas Resistance Baseline: %f", self._gas_baseline)
|
|
||||||
while True:
|
|
||||||
if (
|
|
||||||
self._sensor.get_sensor_data() and
|
|
||||||
self._sensor.data.heat_stable
|
|
||||||
):
|
|
||||||
self.sensor_data.gas_resistance = (
|
|
||||||
self._sensor.data.gas_resistance
|
|
||||||
)
|
|
||||||
self.sensor_data.air_quality = self._calculate_aq_score()
|
|
||||||
time.sleep(1)
|
|
||||||
else:
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
self._gas_sensor_running = True
|
||||||
|
|
||||||
|
# Pause to allow inital data read for device validation.
|
||||||
|
sleep(1)
|
||||||
|
|
||||||
|
start_time = time()
|
||||||
|
curr_time = time()
|
||||||
|
burn_in_data = []
|
||||||
|
|
||||||
|
_LOGGER.info("Beginning %d second gas sensor burn in for Air Quality",
|
||||||
|
burn_in_time)
|
||||||
|
while curr_time - start_time < burn_in_time:
|
||||||
|
curr_time = time()
|
||||||
|
if (
|
||||||
|
self._sensor.get_sensor_data() and
|
||||||
|
self._sensor.data.heat_stable
|
||||||
|
):
|
||||||
|
gas_resistance = self._sensor.data.gas_resistance
|
||||||
|
burn_in_data.append(gas_resistance)
|
||||||
|
self.sensor_data.gas_resistance = gas_resistance
|
||||||
|
_LOGGER.debug("AQ Gas Resistance Baseline reading %2f Ohms",
|
||||||
|
gas_resistance)
|
||||||
|
sleep(1)
|
||||||
|
|
||||||
|
_LOGGER.debug("AQ Gas Resistance Burn In Data (Size: %d): \n\t%s",
|
||||||
|
len(burn_in_data), burn_in_data)
|
||||||
|
self._gas_baseline = sum(burn_in_data[-50:]) / 50.0
|
||||||
|
_LOGGER.info("Completed gas sensor burn in for Air Quality")
|
||||||
|
_LOGGER.info("AQ Gas Resistance Baseline: %f", self._gas_baseline)
|
||||||
|
while True:
|
||||||
|
if (
|
||||||
|
self._sensor.get_sensor_data() and
|
||||||
|
self._sensor.data.heat_stable
|
||||||
|
):
|
||||||
|
self.sensor_data.gas_resistance = (
|
||||||
|
self._sensor.data.gas_resistance
|
||||||
|
)
|
||||||
|
self.sensor_data.air_quality = self._calculate_aq_score()
|
||||||
|
sleep(1)
|
||||||
|
|
||||||
def update(self, first_read=False):
|
def update(self, first_read=False):
|
||||||
"""Read sensor data."""
|
"""Read sensor data."""
|
||||||
if first_read:
|
if first_read:
|
||||||
|
|
Loading…
Add table
Reference in a new issue