From 81d3b8b83bb9e1e7d3f2b0f7dcfe294015f4eab7 Mon Sep 17 00:00:00 2001 From: robert-hh Date: Tue, 25 Oct 2022 11:41:57 +0200 Subject: [PATCH 1/2] drivers/sensor/dht: Change the sequence for importing dht_readinto. Check the machine module first, then search in previous places. --- micropython/drivers/sensor/dht/dht.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/micropython/drivers/sensor/dht/dht.py b/micropython/drivers/sensor/dht/dht.py index 411e9a8d2..dca1bd8b4 100644 --- a/micropython/drivers/sensor/dht/dht.py +++ b/micropython/drivers/sensor/dht/dht.py @@ -2,8 +2,11 @@ # MIT license; Copyright (c) 2016 Damien P. George import sys +import machine -if sys.platform.startswith("esp"): +if hasattr(machine, "dht_readinto"): + from machine import dht_readinto +elif sys.platform.startswith("esp"): from esp import dht_readinto elif sys.platform == "mimxrt": from mimxrt import dht_readinto @@ -12,8 +15,9 @@ elif sys.platform == "pyboard": from pyb import dht_readinto else: - from machine import dht_readinto + raise Exception("no dht_readinto()") +del machine class DHTBase: def __init__(self, pin): From 106b3a1128d614ce5726b941e0a8e9cb3c516025 Mon Sep 17 00:00:00 2001 From: robert-hh Date: Thu, 27 Oct 2022 13:16:41 +0200 Subject: [PATCH 2/2] drivers/sensor/dht: Simplify the test for supported ports. As @dpgeorge suggested. If the import fails, the error message is somewhat cryptic. It says: `AttributeError: no such attribute` But that's anyhow only a transitional state of the driver. --- micropython/drivers/sensor/dht/dht.py | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/micropython/drivers/sensor/dht/dht.py b/micropython/drivers/sensor/dht/dht.py index dca1bd8b4..0327ba386 100644 --- a/micropython/drivers/sensor/dht/dht.py +++ b/micropython/drivers/sensor/dht/dht.py @@ -8,14 +8,8 @@ from machine import dht_readinto elif sys.platform.startswith("esp"): from esp import dht_readinto -elif sys.platform == "mimxrt": - from mimxrt import dht_readinto -elif sys.platform == "rp2": - from rp2 import dht_readinto -elif sys.platform == "pyboard": - from pyb import dht_readinto else: - raise Exception("no dht_readinto()") + dht_readinto = __import__(sys.platform).dht_readinto del machine