Files
weather-base-station/environment/local_sensors.py
T

47 lines
1.3 KiB
Python

# environment/local_sensors.py
import logging
logger = logging.getLogger(__name__)
try:
import board
from adafruit_bme280 import basic as adafruit_bme280
except ImportError as e:
logger.warning(
f"BME280 dependencies not installed (Normal for test environments) | {e}"
)
except Exception as e:
logger.error(f"Error importing Raspberry Pi specific dependencies | {e}")
class Sensors:
def __init__(self):
self._bme280 = None
self._data = {}
try:
if "adafruit_bme280" in globals():
self._bme280 = adafruit_bme280.Adafruit_BME280_I2C(
board.I2C(), address=0x76
)
except Exception as e:
logger.error(f"BME280 hardware not found on I2C bus! | {e}")
def _get_data(self):
if self._bme280 is None:
return
try:
self._data = {
"indoor_temp": round(self._bme280.temperature, 1),
"indoor_humidity": round(self._bme280.relative_humidity, 1),
"pressure": round(self._bme280.pressure, 1),
}
except Exception as e:
logger.error(f"Failed getting indoor sensor data: {e}")
def get(self) -> dict:
logger.debug("Measuring environment indoors...")
self._get_data()
return self._data