Beim Versuch, den Temperatur- / Feuchtigkeitssensor AM2302 auf dem Raspberry Pi mit Python mit dem Paket Adafruit_DHT zu handhaben, ist ein Fehler aufgetreten. Der Fehler zum Zeitpunkt der Installation kann durch Ausführen eines einfachen Vorgangs vermieden werden. Da jedoch der Fehler, der beim tatsächlichen Erfassen der Temperatur und Luftfeuchtigkeit auftritt, nicht vermieden werden konnte, wurde der Fehler ebenfalls vermieden.
Ich habe bestätigt, dass der Fehler sowohl auf Raspberry Pi 4B / 4 GB, OS Raspbian Lite als auch auf Ubuntu Server 20.04 aufgetreten ist. Python hat 3.8.5 von pyenv installiert und Pipenv verwendet.
Zunächst versuche ich gehorsam von pipenv zu installieren.
$ pipenv install Adafruit_DHT
Installing Adafruit_DHT…
Error: An error occurred while installing Adafruit_DHT!
Error text: Collecting adafruit_dht
Downloading Adafruit_DHT-1.4.0.tar.gz (15 kB)
Building wheels for collected packages: adafruit-dht
Building wheel for adafruit-dht (setup.py): started
Building wheel for adafruit-dht (setup.py): finished with status 'error'
Running setup.py clean for adafruit-dht
Failed to build adafruit-dht
Installing collected packages: adafruit-dht
Running setup.py install for adafruit-dht: started
Running setup.py install for adafruit-dht: finished with status 'error'
---
Unterlassung
---
✘ Installation Failed
Ich konnte bestätigen, dass die Installation fehlgeschlagen ist. Löschen Sie als Nächstes das Paket von GitHub, fügen Sie einen Parameter hinzu, der angibt, dass das von Ihnen verwendete Gerät ein Raspberry Pi ist, und installieren Sie es manuell.
$ git clone https://github.com/adafruit/Adafruit_Python_DHT.git
$ cd Adafruit_Python_DHT
$ python setup.py install --force-pi
Finished processing dependencies for Adafruit-DHT==1.4.0
Nachdem Sie bestätigt haben, dass die Installation abgeschlossen ist, ermitteln wir die Temperatur.
$python
>>> import Adafruit_DHT
>>> Adafruit_DHT.read_retry(Adafruit_DHT.AM2302, 2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/pi/Projects/temp/Adafruit_Python_DHT/Adafruit_DHT/common.py", line 94, in read_retry
humidity, temperature = read(sensor, pin, platform)
File "/home/pi/Projects/temp/Adafruit_Python_DHT/Adafruit_DHT/common.py", line 80, in read
platform = get_platform()
File "/home/pi/Projects/temp/Adafruit_Python_DHT/Adafruit_DHT/common.py", line 63, in get_platform
raise RuntimeError('Unknown platform.')
RuntimeError: Unknown platform.
Wird sein.
Beenden Sie die Verwendung von Python 3.8.5 und verwenden Sie Python 3.7.9.
Adafruit_DHT ist eine Standard-Python-Bibliothek zum Erkennen der Plattform, auf der ein Paket verwendet wird Informationen von der Plattform abrufen # L47). Eine von \ ('armv7l-with-debian', 'armv7l-with-ubuntu', 'armv7l-with-glibc2.4', 'armv7l-with-arch' ) in den hier erhaltenen plattformspezifischen Informationen Funktioniert wenn enthalten ist. Zu diesem Zeitpunkt war der Unterschied zwischen den Ausgaben von Python 3.8.5 und Python 3.7.9 die Ursache des Fehlers.
Nachfolgend finden Sie die tatsächlichen Plattforminformationen zu Raspbian Lite, die von jeder Python-Version bestätigt wurden.
Python3.8.5
>>> import platform
>>> platforfm.platform()
'Linux-5.4.51-v7l+-armv7l-with-glibc2.28'
Python3.7.9
>>> import platform
>>> platforfm.platform()
'Linux-5.4.51-v7l+-armv7l-with-debian-10.4'
Erstens zielt das Gerät mit dem Namen Beaglebone Black auf die oben genannte Erkennung ab, und Raspberry Pi ist [ein anderer Ort](https://github.com/adafruit/Adafruit_Python_DHT/blob/master/Adafruit_DHT/platform_detect.py# Ich strebe eine Erkennung mit L40 an. Das in / proc / cpuinfo auf dem Raspberry Pi 4B aufgeführte Hardwareelement ist jedoch BCM2711, das von diesem Programm nicht erkannt wird.
Zunächst wurde das Adafruit_Python_DHT-Repository derzeit archiviert und nicht verwaltet. Stattdessen gibt es ein Adafruit_CircuitPython_DHT-Repository. Verwenden Sie dieses also. Für diese Person konnte Python 3.8.5 problemlos installiert werden. Beachten Sie jedoch, dass Sie es nur importieren können, wenn Sie bei Verwendung auch das Paket RPi.GPIO installieren. Installieren Sie dazu Adafruit_CircuitPython_DHT und RPi.GPIO mit dem folgenden Befehl.
$ pip install adafruit-circuitpython-dht RPi.GPIO
Im Folgenden finden Sie den Fall, wenn Sie versuchen, adafruit-Circuitpython-dht in einer Umgebung zu importieren, in der RPI.GPIO nicht installiert ist.
>>> import adafruit_dht
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/pi/temp/.venv/lib/python3.8/site-packages/adafruit_dht.py", line 34, in <module>
from digitalio import DigitalInOut, Pull, Direction
File "/home/pi/temp/.venv/lib/python3.8/site-packages/digitalio.py", line 15, in <module>
from adafruit_blinka.microcontroller.bcm283x.pin import Pin
File "/home/pi/temp/.venv/lib/python3.8/site-packages/adafruit_blinka/microcontroller/bcm283x/pin.py", line 2, in <module>
import RPi.GPIO as GPIO
ModuleNotFoundError: No module named 'RPi'
Recommended Posts