Skip to content

Commit

Permalink
Retry Calibration with AHT20 command on failure
Browse files Browse the repository at this point in the history
If try-except around legacy calibrate command fails, try to send new one instead afterwards
  • Loading branch information
DemiVis committed Dec 15, 2023
1 parent c6c02ac commit 928f574
Showing 1 changed file with 17 additions and 4 deletions.
21 changes: 17 additions & 4 deletions adafruit_ahtx0.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,8 @@
__repo__: str = "https://github.com/adafruit/Adafruit_CircuitPython_AHTx0.git"

AHTX0_I2CADDR_DEFAULT: int = const(0x38) # Default I2C address
AHTX0_CMD_CALIBRATE: int = const(0xE1) # Calibration command
AHT10_CMD_CALIBRATE: int = const(0xE1) # Calibration command for AHT10 sensor
AHT20_CMD_CALIBRATE: int = const(0xBE) # Calibration command for AHT20 sensor
AHTX0_CMD_TRIGGER: int = const(0xAC) # Trigger reading command
AHTX0_CMD_SOFTRESET: int = const(0xBA) # Soft reset command
AHTX0_STATUS_BUSY: int = const(0x80) # Status bit for busy
Expand Down Expand Up @@ -107,15 +108,27 @@ def reset(self) -> None:

def calibrate(self) -> bool:
"""Ask the sensor to self-calibrate. Returns True on success, False otherwise"""
# Newer AHT20's may not succeed, so wrapping in try/except
self._buf[0] = AHTX0_CMD_CALIBRATE
self._buf[0] = AHT10_CMD_CALIBRATE
self._buf[1] = 0x08
self._buf[2] = 0x00
calibration_failed = False
with self.i2c_device as i2c:
try:
# Newer AHT20's may not succeed with old command, so wrapping in try/except
i2c.write(self._buf, start=0, end=3)
except Exception: # pylint: disable=broad-except
pass
calibration_failed = True

if calibration_failed:
# try another calibration command for newer AHT20's
time.sleep(0.01)
self._buf[0] = AHT20_CMD_CALIBRATE
with self.i2c_device as i2c:
try:
i2c.write(self._buf, start=0, end=3)
except Exception:

Check failure on line 129 in adafruit_ahtx0.py

View workflow job for this annotation

GitHub Actions / test

Catching too general exception Exception
pass

while self.status & AHTX0_STATUS_BUSY:
time.sleep(0.01)
if not self.status & AHTX0_STATUS_CALIBRATED:
Expand Down

0 comments on commit 928f574

Please sign in to comment.