DHT22 auslesen

  • Werte Forengemeinschaft,


    noch bis vor kurzem habe ich einen DHT22 mit dem nachstehenden Script ausgelesen bekommen:


    #!/bin/bash

    i=0

    while [ $i -le 1 ]; do

    i=$[$i+1]

    WERTE=$(/home/pi/Adafruit_Python_DHT/examples/AdafruitDHT.py 22 12 | grep Humidity)

    # Temp=20.4* Humidity=37.4%

    [[ ! -z "$WERTE" ]] && break

    sleep 2

    done

    if [ "$WERTE" = "" ]; then

    echo "Keine Werte! Temperaturfühler angeschlossen?"

    exit

    fi

    if [[ ! -z "$WERTE" ]]; then

    Temp=$(echo $WERTE | awk {'print $1'})

    Hum=$(echo $WERTE | awk {'print $2'})

    echo "Temperatur $Temp Celsius"

    echo "Luftfeuche/ $Hum"

    fi


    Doch nach einem Update/Upgrade meines Raspberry Pi4B (Buster) funktioniert es NICHT mehr, scheinbar ist das Adafruit veraltet ,sodass ich durch Suche hier im Forum nun das Circuit Python installiert habe.

    Durch die Eingabe von "python3 dht_simpletest.py" auf der Konsole werden auch die Werte für Temperatur u. Luftfeuchtigkeit ausgegeben:

    Temp: 22.4 *C Humidity: 40.3%


    Allsdann habe ich im obigen Script, in der Zeile "WERTE=$(/home/pi/AdafruitDHT.py....Humidity)" durch die Eingabe "WERTE=$(pyhton3 dht_simple...)" ersetzt.

    Leider funktioniert das NICHT, das Script bleibt nun schon in der "WERTE"-Zeile hängen, sprich, es gibt keine Werte.


    Meine Frage und Bitte ist: "Kann mir hierzu jemand helfen das obige "alte" Script entsprechend anzupassen oder hat vielleicht jemand von euch ein anderes geeignetes (Shell) Script zum Auslesen des DHT22? Ich brauche eigentlich nur die Temperatur in Celsius für meine Anwendung.

    Vielen Dank vorab


    Meisengeier

  • Hallo,


    "WERTE=$(pyhton3 dht_simple...)"

    Ob das so geht :conf:

    Versuche mal dein neues Pythonprogramm ausführbar zu machen:

    chmod +x PROGRAMMNAME.PY


    und setzte dann in das bash-Skript ein:

    "WERTE=$(PFADDESPROGRAMMS/PROGRAMMNAME.PY)"


    Darauf achte das absolute Pfade, also der komplette Pfad verwendet wird.


    Grüße

    Dennis

    🎵🎸Die Nordsee schlägt dir ins Gesicht, trotzdem hast du verloren, du bist nicht weit gekommen, du läufst weiter nach vorn 🎵🎸

  • Meisengeier Anmerkungen zum Bash-Skript: Warum ist das eine ``while``-Schleife statt einer ``for``-Schleife?


    Warum wird Werte auf zwei verschiedene Art und weisen auf die leere Zeichenkette geprüft? Und beim zweiten ``if`` genau gegenteilig wie beim ersten ``if``? Das zweite ``if`` braucht doch dann diese Prüfung gar nicht — das ist ein ``else``. Und damit wird dann auch das ``exit`` überflüssig.


    Das die geschweiften Klammern für die AWK-Programme ausserhalb der Zeichenkettenbegrenzer stehen ist IMHO verwirrend. AWK ist aber auch schon mit Kanonen auf Spatzen geschossen, denn das sollte sich rein über die Bash bereits mit Arrays erreichen lassen.


    Ungetestet:

    “If debugging is the process of removing software bugs, then programming must be the process of putting them in.” — Edsger Dijkstra

  • Hallo Dennis89, blackjack,


    erst einmal danke für eure Antworten.

    Habe "chmod" ausgeführt, keine Änderung!


    Bitte lasst mal die Schleife außen vor. Es geht einzig nur darum, den Temp. Wert (python3) über das "alte" Adafruit-Shell-Script ausgelesen zu bekommen.

    Oder, wie ich schon schrieb, vielleicht hat jemand auch eine ganz andere Lösung zum Auslesen des DHT22 Sensors. Hauptsache wäre nur, es läßt sich per -bash- aufrufen.


    Meisengeier

  • Hallo,


    vorab ich habe noch nie ein Bash-Skript erstellt und deswegen erst mal die Frage: Zu was brauchst du das Bash-Skript?

    Verstehe ich das richtig, dass dir damit die Sensorwerte im Terminal ausgegeben werden? Wenn ja, ist dass dein Ziel des Vorhabens?


    Wenn das so ist, dann kannst du doch einfach das Python-Skript direkt aufrufen?


    Es ist immer hilfreich die ausgegebene Fehlermeldung und auch die Python-Dateien hier zu veröffentlichen. Dann kann man schneller und gezielter helfen.

    Sollte es ein Bash-Problem sein, dann wünsche ich dir viel Glück, davon weis ich leider noch nichts.


    Grüße

    Dennis

    🎵🎸Die Nordsee schlägt dir ins Gesicht, trotzdem hast du verloren, du bist nicht weit gekommen, du läufst weiter nach vorn 🎵🎸

  • Hallo Denis89,


    vielen Dank, dass du mir helfen möchtest. Bitte nimm es mir nicht übel, aber jemand, der sich AKTUELL auch mit dem DHT22 o.ä. in Verbindung mit einem Raspi 4B (Buster) beschäftigt bzw. vorher Adafruit benutzt hat, wird mein Problem auch haben oder besser schon gehabt haben und weiß sofort was ich suche.


    Meisengeier

  • Bitte nimm es mir nicht übel

    Kein Problem.


    Mein aktuelles Projekt

    DHT22 mit Adafruit in Python geschrieben, ohne Probleme.


    Das es mit dem Pi4 zusammenhängt kann ich mir nicht vorstellen, aber ich verfolge es hier auf jeden Fall weiter mit und bin gespannt wie dein Problem gelöst wird :thumbup:


    Grüße

    Dennis

    🎵🎸Die Nordsee schlägt dir ins Gesicht, trotzdem hast du verloren, du bist nicht weit gekommen, du läufst weiter nach vorn 🎵🎸

  • Hallo Dennis89,


    nochmals danke.

    "Das es mit dem Pi4 zusammenhängt kann ich mir nicht vorstellen..."


    Doch, genauso ist es aber leider jetzt bei mir. Auf meinem Pi 4B ist auch Adafruit installiert, ging noch bis vor kurzem einwandfrei, aber NACH dem letzten Update, Upgrade war Schluss!!! Darum ja jetzt die Umstellung auf dieses "Circuit Python" mit den geschilderten Problemen!


    Aber wenn du auch aktuell Adafruit installiert hast, dann wäre, sofern du einen Pi4B (mit Buster) hast meine Bitte: Mach doch mal ein Update/Upgrade und berichte, ob bei dir dann das Adafruit noch "läuft", sprich noch Werte ausgegeben werden. Würde mich echt interessieren.


    Meisengeier

  • Hallo,


    der Pi4 dient momentan als Cloud-Server und ist für Pi-hole zuständig.

    Gerade wäre es ungünstig, das abzustellen da ich ihn gerade benötige.


    Wenn ich die Woche dazu komme, dann kann ich das mal testen. Sofern ich noch ein Buster-Image habe. Stand der Dinge ist ja Raspberry Pi OS


    Ansonsten noch viel Erfolg.


    Grüße

    Dennis

    🎵🎸Die Nordsee schlägt dir ins Gesicht, trotzdem hast du verloren, du bist nicht weit gekommen, du läufst weiter nach vorn 🎵🎸

  • Hallo Dennis,


    danke. Es ist aus meiner Sicht schon ein Krampf mit den ewigen Änderungen, man kommt gar nicht hinterher mit aktualisieren, wie ich ja jetzt wieder "erleben" darf. Eigentlich banale Dinge, wie einen Temp-Sensor auslesen, funktionieren dann nicht mehr. Und so geht das schon seit Jahren. Na ja, ist eben so.

    Ich kann inzwischen das Python-Script aus dem bash-Script aufrufen, kann aber immer noch nicht die Werte daraus extrahieren.


    Meisengeier

  • Ich persoenlich update meine Raspis auch immer regelmaessig. Ausser einer die 443MHz Steuerung von Schaltdosen beherbergt. Die lasse ich zufrieden (never touch a running System). Solange die Raspi nur intern benutzt wird ist das ein valider approach. Wenn Deine Raspi aus dem Internet erreichbar ist natuerlich absolut nicht :no_sad:. Da die Raspis nicht so teuer sind kann man ruhig mal eine Raspi dediziert fuer eine Aufgabe nicht mehr updaten ... solange sie - ich betone noch mal - nicht aus dem Netz erreichbar ist .

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect."

    Linus Benedict Torvalds, 28.9.2003


    Hast Du die Woche schon Deine Raspberry gesichert =O Bei mir tut das raspiBackup automatisch ;)

    Edited once, last by framp ().

  • Hallo Bernd666,


    dein Tipp war genau der richtige, vielen Dank!

    -lohldht- funktionierte (zumindest bei mir) schon seit 04/2018 NICHT mehr, dafür kam dann AdafruitDHT. Aus reiner Verzweiflung habe ich mir gedacht, ich habe schon soviel Zeit "verplempert", installiere -lohldht- doch einfach noch mal und siehe da: FUNKTIONIERT jetzt mit meinem Raspi Pi 4 = 1A, kann sogar die alten Scripte wieder verwenden! Unglaublich, aber wahr.

    Damit ist mein Problem im Prinzip "vom Tisch" und ich könnte das Thema eigentlich "als erledigt beenden". Aber ich werde noch ein bißchen warten, denn vielleicht hat ja doch noch jemand eine Lösung für mein Eingangsanliegen, zum Auslesen der Werte bei Verwendung von Circuit-Python.


    Ansonsten bedanke ich mich hiermit bei allen, die mir geholfen haben.


    Meisengeier