NEWS
DHT21/AM2301 an RaspberryPi
-
Ich hatte in der Vergangenheit bereits Erfolg damit, den Sensor DHT21 (Temperatur/Luftfeuchte) in IOBroker einzulesen (Raspberry Pi 4B, Adapter rpi2 v2.4.0). Nun versuche ich das an einem weiteren Gerät (Raspberry Pi 5B, rpi2 v3.0.2) und bekomme einfach keine Daten. In den Logs steht nur "Failed to read DHTxx/AM23xx: 22/2".
Das Leseintervall habe ich auf 10'000ms gesetzt - manche Quellen schreiben, der Sensor brauche mindestens 5s zur Erholung zwischen den Messungen.Wenn ich recht lese, braucht der DHT21 keinen Pull-Up-Widerstand, weil der bereits eingebaut sei (die Angaben sind da aber etwas widersprüchlich).
Verkabelt habe ich an beiden gleich:
- VDD an Pin4 (5V)
- SDA an Pin3 (GPIO2). Kein Pull-Up.
Alternativ habe ich es bereits an 3,3v und anderen GPIOs (z.B. 17) versucht und auch einen weiteren Sensor getestet, außerdem 4k7 als Pull-Up.
Ist es mit der Installation des rpi2-Adapters getan oder braucht es auf Betriebssystemebene noch etwas? Stichworte libgpiod oder pigpio?) Welche anderen Fehlerquellen kommen noch in Betracht?
-
Ich hatte in der Vergangenheit bereits Erfolg damit, den Sensor DHT21 (Temperatur/Luftfeuchte) in IOBroker einzulesen (Raspberry Pi 4B, Adapter rpi2 v2.4.0). Nun versuche ich das an einem weiteren Gerät (Raspberry Pi 5B, rpi2 v3.0.2) und bekomme einfach keine Daten. In den Logs steht nur "Failed to read DHTxx/AM23xx: 22/2".
Das Leseintervall habe ich auf 10'000ms gesetzt - manche Quellen schreiben, der Sensor brauche mindestens 5s zur Erholung zwischen den Messungen.Wenn ich recht lese, braucht der DHT21 keinen Pull-Up-Widerstand, weil der bereits eingebaut sei (die Angaben sind da aber etwas widersprüchlich).
Verkabelt habe ich an beiden gleich:
- VDD an Pin4 (5V)
- SDA an Pin3 (GPIO2). Kein Pull-Up.
Alternativ habe ich es bereits an 3,3v und anderen GPIOs (z.B. 17) versucht und auch einen weiteren Sensor getestet, außerdem 4k7 als Pull-Up.
Ist es mit der Installation des rpi2-Adapters getan oder braucht es auf Betriebssystemebene noch etwas? Stichworte libgpiod oder pigpio?) Welche anderen Fehlerquellen kommen noch in Betracht?
-
@luas Infos
cat /etc/os-release node -v apt-cache policy libgpiod-dev groups iobroker cd /opt/iobroker npm ls iobroker.rpi2 node-dht-sensor opengpiocat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 13 (trixie)"
NAME="Debian GNU/Linux"
VERSION_ID="13"
VERSION="13 (trixie)"
VERSION_CODENAME=trixie
DEBIAN_VERSION_FULL=13.4
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"node -v
v22.22.2apt-cache policy libgpiod-dev
libgpiod-dev:
Installed: 2.2.1-2+deb13u1
Candidate: 2.2.1-2+deb13u1
Version table:
*** 2.2.1-2+deb13u1 500
500 http://deb.debian.org/debian trixie/main arm64 Packages
100 /var/lib/dpkg/statusgroups iobroker
iobroker : iobroker tty dialout audio video plugdev bluetooth i2c gpiocd /opt/iobroker/
npm ls iobroker.rpi2 node-dht-sensor opengpio
iobroker.inst@3.0.0 /opt/iobroker
└─┬ iobroker.rpi2@3.0.2
├── node-dht-sensor@0.4.5
└── opengpio@2.0.2 -
cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 13 (trixie)"
NAME="Debian GNU/Linux"
VERSION_ID="13"
VERSION="13 (trixie)"
VERSION_CODENAME=trixie
DEBIAN_VERSION_FULL=13.4
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"node -v
v22.22.2apt-cache policy libgpiod-dev
libgpiod-dev:
Installed: 2.2.1-2+deb13u1
Candidate: 2.2.1-2+deb13u1
Version table:
*** 2.2.1-2+deb13u1 500
500 http://deb.debian.org/debian trixie/main arm64 Packages
100 /var/lib/dpkg/statusgroups iobroker
iobroker : iobroker tty dialout audio video plugdev bluetooth i2c gpiocd /opt/iobroker/
npm ls iobroker.rpi2 node-dht-sensor opengpio
iobroker.inst@3.0.0 /opt/iobroker
└─┬ iobroker.rpi2@3.0.2
├── node-dht-sensor@0.4.5
└── opengpio@2.0.2VDD -> Pin 1 = 3,3V GND -> Pin 6 = GND DATA -> Pin 11 = GPIO17 / BCM17 4,7k Pull-up von DATA nach 3,3V, ist anscheinend schon drin?Nicht GPIO2/Pin3 verwenden. Im rpi2-Adapter dann 17 eintragen, nicht 11.
Test ob libgpiod.so verwendet wurde
find /opt/iobroker/node_modules/iobroker.rpi2/node_modules/node-dht-sensor -name "*.node" -print -exec ldd {} \;Hast du die Voraussetzungen erfüllt?
For gpio to work, you need to install libgpiod in version 2.x, before installing the adapter (see below)!https://github.com/iobroker-community-adapters/ioBroker.rpi2

-
Danke @mcu
Es klappt leider nicht.
Verkabelt habe ich wie von dir vorgeschlagen. Wenn ich Pin11/GPIO17 mit dem Oszilloskop beobachte, sehe ich ohne Pull-Up konstant ca. 500 mV, mit ca. 3V. Aber keinerlei Aktivität, also kein Pollen des Sensors.find /opt/iobroker/node_modules/iobroker.rpi2/node_modules/node-dht-sensor -name "*.node" -print -exec ldd {} ;
Ergebnis:
find: ‘/opt/iobroker/node_modules/iobroker.rpi2/node_modules/node-dht-sensor’: No such file or directoryFor gpio to work, you need to install libgpiod in version 2.x, before installing the adapter (see below)!
Diesen Fehler kann ich nicht ausschließen. Aber libgpiod ist installiert:
libgpiod-dev is already the newest version (2.2.1-2+deb13u1)Und um die korrekte Reihenfolge sicherzustellen, habe ich den Adapter noch mal deinstalliert und neu installiert.
Vielleicht aber auch hier ein Problem?
sudo apt install -y build-essential python Package python is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source However the following packages replace it: python-is-python3 Error: Package 'python' has no installation candidateDie Fehlermeldung im Log hat sich jetzt so verändert:
Failed to read DHTxx/AM23xx: 22/17 -
Danke @mcu
Es klappt leider nicht.
Verkabelt habe ich wie von dir vorgeschlagen. Wenn ich Pin11/GPIO17 mit dem Oszilloskop beobachte, sehe ich ohne Pull-Up konstant ca. 500 mV, mit ca. 3V. Aber keinerlei Aktivität, also kein Pollen des Sensors.find /opt/iobroker/node_modules/iobroker.rpi2/node_modules/node-dht-sensor -name "*.node" -print -exec ldd {} ;
Ergebnis:
find: ‘/opt/iobroker/node_modules/iobroker.rpi2/node_modules/node-dht-sensor’: No such file or directoryFor gpio to work, you need to install libgpiod in version 2.x, before installing the adapter (see below)!
Diesen Fehler kann ich nicht ausschließen. Aber libgpiod ist installiert:
libgpiod-dev is already the newest version (2.2.1-2+deb13u1)Und um die korrekte Reihenfolge sicherzustellen, habe ich den Adapter noch mal deinstalliert und neu installiert.
Vielleicht aber auch hier ein Problem?
sudo apt install -y build-essential python Package python is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source However the following packages replace it: python-is-python3 Error: Package 'python' has no installation candidateDie Fehlermeldung im Log hat sich jetzt so verändert:
Failed to read DHTxx/AM23xx: 22/17@luas ChatGPT:
Sehr wichtiger Punkt: nicht mit 5V an DATA arbeiten
Der AM2301/DHT21 kann zwar oft mit 3,3–5V versorgt werden, aber bei manchen Modulen liegt der DATA-Pegel auf Höhe der Versorgungsspannung. Ein Händler beschreibt z. B., dass der Logikpegel dem Eingang/VDD entspricht und dass ein 5,1-kΩ-Pull-up bereits eingebaut ist.
Das heißt: Wenn du den Sensor mit 5V versorgst und der Pull-up intern nach 5V geht, kann am Raspberry-GPIO eine 5V-Datenleitung anliegen. Das ist für Raspberry-GPIOs nicht sauber bzw. riskant; GPIO arbeitet mit 3,3V-Logik.
Darum: VDD auf 3,3V, Pull-up falls nötig nur von DATA nach 3,3V, nicht nach 5V.
Software-Seite beim Raspberry Pi 5
Der rpi2-Adapter 3.x ist grundsätzlich für Debian Trixie vorgesehen. Laut README braucht GPIO mit diesem Adapter libgpiod Version 2.x vor der Adapterinstallation.
Das passt auch zum Raspberry Pi 5: node-dht-sensor sagt selbst, dass auf Pi 5 / Debian 12+ die alte BCM2835-Methode wegen des RP1-Chips nicht passt und stattdessen mit libgpiod kompiliert werden muss.
Im Forum ist verdächtig, dass der Nutzer kein Polling-Signal am GPIO17 sieht. Das spricht dafür, dass das native Modul eventuell nicht korrekt mit libgpiod gebaut wurde oder der Pfad beim Prüfen falsch war. Der dort genannte Befehl sucht hier vermutlich im falschen Unterordner.
Besser prüfen mit:
cd /opt/iobroker
find node_modules -path "node-dht-sensor" -name "*.node" -print -exec ldd {} ;
In der Ausgabe sollte sinngemäß etwas mit libgpiod.so auftauchen. Wenn nicht, wurde node-dht-sensor wahrscheinlich nicht korrekt für Pi 5/libgpiod gebaut.
Das würde ich als nächstes machen
sudo apt update
sudo apt install -y build-essential python-is-python3 pkg-config libgpiod-dev gpiodDann prüfen:
groups iobroker
gpiodetect
gpioinfo
cd /opt/iobroker
npm ls iobroker.rpi2 node-dht-sensor opengpio
find node_modules -path "node-dht-sensor" -name "*.node" -print -exec ldd {} ;Falls libgpiod nicht im ldd auftaucht: rpi2-Adapter nach installierten Voraussetzungen nochmal sauber neu installieren oder rebuilden.
Fazit
Die Hardware-Empfehlung im Forum ist richtig:
VDD -> 3,3V
GND -> GND
DATA -> GPIO17 / Pin 11
Adapter-Wert: 17Aber wenn danach am Oszilloskop keine Aktivität zu sehen ist, liegt der Fehler sehr wahrscheinlich nicht mehr an der Verkabelung, sondern an der Pi-5/libgpiod/node-dht-sensor-Kompilierung. Außerdem würde ich GPIO2/Pin3 komplett vermeiden und den Sensor nicht mit 5V betreiben.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden