DEBUG mode identification changed + warning in case of debug-mode

This commit is contained in:
Dirk Alders 2025-08-17 15:48:12 +02:00
parent 2ffcdf2d59
commit 8efefc4843
2 changed files with 100 additions and 107 deletions

39
bmp.py
View File

@ -1,3 +1,5 @@
import smbus
from . import background_task
import logging import logging
import time import time
@ -8,16 +10,6 @@ except ImportError:
logger = logging.getLogger(ROOT_LOGGER_NAME).getChild(__name__) logger = logging.getLogger(ROOT_LOGGER_NAME).getChild(__name__)
from . import background_task
try:
import smbus
except ImportError:
logger.warning("Could not import smbus. DEBUG set to True.")
DEBUG = True
else:
from . import DEBUG
class bmp_180(background_task): class bmp_180(background_task):
RUN_SLEEP_TIME = 2.0 RUN_SLEEP_TIME = 2.0
@ -29,6 +21,7 @@ class bmp_180(background_task):
def __init__(self, data_callback=None): def __init__(self, data_callback=None):
self.__data_callback__ = data_callback self.__data_callback__ = data_callback
self.DEBUG = False
# Initialise background_task # Initialise background_task
background_task.__init__(self) background_task.__init__(self)
@ -42,42 +35,46 @@ class bmp_180(background_task):
logger.debug('BMP-Communication failed: No data received') logger.debug('BMP-Communication failed: No data received')
def __bmp_data_transmission__(self): def __bmp_data_transmission__(self):
if not DEBUG: if not self.DEBUG:
rv = {} rv = {}
# Get I2C bus # Get I2C bus
try:
bus = smbus.SMBus(1) bus = smbus.SMBus(1)
except PermissionError:
logger.warning("Switching to DEBUG mode due to permission error...")
self.DEBUG = True
else:
# BMP180 address, 0x77(119) # BMP180 address, 0x77(119)
# Read data back from 0xAA(170), 22 bytes # Read data back from 0xAA(170), 22 bytes
data = bus.read_i2c_block_data(0x77, 0xAA, 22) data = bus.read_i2c_block_data(0x77, 0xAA, 22)
# Convert the data # Convert the data
AC1 = data[0] * 256 + data[1] AC1 = data[0] * 256 + data[1]
if AC1 > 32767 : if AC1 > 32767:
AC1 -= 65535 AC1 -= 65535
AC2 = data[2] * 256 + data[3] AC2 = data[2] * 256 + data[3]
if AC2 > 32767 : if AC2 > 32767:
AC2 -= 65535 AC2 -= 65535
AC3 = data[4] * 256 + data[5] AC3 = data[4] * 256 + data[5]
if AC3 > 32767 : if AC3 > 32767:
AC3 -= 65535 AC3 -= 65535
AC4 = data[6] * 256 + data[7] AC4 = data[6] * 256 + data[7]
AC5 = data[8] * 256 + data[9] AC5 = data[8] * 256 + data[9]
AC6 = data[10] * 256 + data[11] AC6 = data[10] * 256 + data[11]
B1 = data[12] * 256 + data[13] B1 = data[12] * 256 + data[13]
if B1 > 32767 : if B1 > 32767:
B1 -= 65535 B1 -= 65535
B2 = data[14] * 256 + data[15] B2 = data[14] * 256 + data[15]
if B2 > 32767 : if B2 > 32767:
B2 -= 65535 B2 -= 65535
MB = data[16] * 256 + data[17] MB = data[16] * 256 + data[17]
if MB > 32767 : if MB > 32767:
MB -= 65535 MB -= 65535
MC = data[18] * 256 + data[19] MC = data[18] * 256 + data[19]
if MC > 32767 : if MC > 32767:
MC -= 65535 MC -= 65535
MD = data[20] * 256 + data[21] MD = data[20] * 256 + data[21]
if MD > 32767 : if MD > 32767:
MD -= 65535 MD -= 65535
time.sleep(self.SMBUS_DELAY) time.sleep(self.SMBUS_DELAY)
@ -133,7 +130,7 @@ class bmp_180(background_task):
pressure = 0.0 pressure = 0.0
if B7 < 2147483648: if B7 < 2147483648:
pressure = (B7 * 2) / B4 pressure = (B7 * 2) / B4
else : else:
pressure = (B7 / B4) * 2 pressure = (B7 / B4) * 2
X1 = (pressure / 256.0) * (pressure / 256.0) X1 = (pressure / 256.0) * (pressure / 256.0)
X1 = (X1 * 3038.0) / 65536.0 X1 = (X1 * 3038.0) / 65536.0

20
dht.py
View File

@ -1,3 +1,5 @@
import adafruit_dht
from . import background_task
import logging import logging
import time import time
@ -8,16 +10,6 @@ except ImportError:
logger = logging.getLogger(ROOT_LOGGER_NAME).getChild(__name__) logger = logging.getLogger(ROOT_LOGGER_NAME).getChild(__name__)
from . import background_task
try:
import adafruit_dht
except ImportError:
logger.warning("Could not import adafruit_dht. DEBUG set to True")
DEBUG = True
else:
from . import DEBUG
class dht_22(background_task): class dht_22(background_task):
RUN_SLEEP_TIME = 4.0 RUN_SLEEP_TIME = 4.0
@ -32,8 +24,12 @@ class dht_22(background_task):
self.__temp_monitor__ = gradient_monitor(.5) self.__temp_monitor__ = gradient_monitor(.5)
self.__hum_monitor__ = gradient_monitor(5) self.__hum_monitor__ = gradient_monitor(5)
self.__monitor__ = dht_22_monitor(300) self.__monitor__ = dht_22_monitor(300)
self.DEBUG = gpio is None
if self.DEBUG:
logger.warning("Switching to DEBUG mode due to gpio is None...")
# Initial the dht device, with data pin connected to: # Initial the dht device, with data pin connected to:
if not DEBUG: if not self.DEBUG:
self.__dht_device__ = adafruit_dht.DHT22(gpio, use_pulseio=False) self.__dht_device__ = adafruit_dht.DHT22(gpio, use_pulseio=False)
# Initialise background_task # Initialise background_task
background_task.__init__(self) background_task.__init__(self)
@ -55,7 +51,7 @@ class dht_22(background_task):
logger.debug("DHT-Communication failed: Gradient to high. Ignoring data %s!", repr(data)) logger.debug("DHT-Communication failed: Gradient to high. Ignoring data %s!", repr(data))
def __dht_data_transmission__(self): def __dht_data_transmission__(self):
if not DEBUG: if not self.DEBUG:
while self.__active__: while self.__active__:
try: try:
# Store the values # Store the values