Temperatursensor DHT11 am Raspberry Pi

Bestellung und Lieferung des Temperatursensors DHT11

Vor kurzem ist bei mir ein DHT11 Temperatursensor für 99 Cent aus China bei mir angekommen. Bestellt habe ich ihn bei Ebay. Wer ein paar Cent sparen möchte bestellt über ebay.com statt über ebay.de. Der Versand erfolgte bei mir Versandkostenfrei aus China und allzu lange hat die Lieferung nicht gedauert.

Doch jetzt soll der DHT11 auch  in Betrieb genommen werden.

Die obligatorische Google Suche

Die obligatorische Google Suche hat auf Adafruit eine eine prima Anleitung zur Einrichtung eines Temperatursensors zu Tage geführt, die mir als Grundlage für meine Experimente diente. Ganz ohne Hindernisse lief jedoch auch diesmal nicht alles ab … Aber daran bin ich ja mittlerweile gewöhnt.

https://github.com/adafruit/Adafruit_Python_DHT

Probleme und Lösungen

Temperatur und Luftfeuchtigkeit werden beim DHT11 nicht ausgelesen

Ein Fehler war, dass ich zunächst den DHT Treiber aus dem Paket https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code verwendet habe. In meiner Aufregung habe ich übersehen, dass der DHT Treiber hier deprecated ist. Wer lesen kann …. Der Temperatursensor hat zwar anfangs ein, zwei Mal ein Ergebnis geliefert, doch schließlich mehrten sich die Fehler, dass keine Temperatur ausgelesen wurde. Ich habe immer wieder Ausgaben wie diese erhalten:

pi@raspberrypi ~/Adafruit-Raspberry-Pi-Python-Code/Adafruit_DHT_Driver $ sudo ./Adafruit_DHT 11 4
Using pin #4
Data (39): 0x5c 0x0 0x32 0x0 0x44

Nur leider hat die Ausgabe auf der Konsole regelmäßig keine Temperatur und Luftfeuchtigkeit angezeigt. Offenbar bin ich aber nicht der Einzige, der dieses Problem hat oder hatte. Das gibt einem doch schon mal Hoffnung 😉

Nach einer kurzen Suche im Netz bin ich schließlich bei Chris Baume fündig geworden, mit dessen DHT11 Programm die Ausgabe von Temperatur und Luftfeuchtigkeit nun zuverlässig funktioniert.

Schließlich aber wollte ich doch auch die Daten in ein Google Spreadsheet hochladen und habe mir deshalb noch einmal die Adafruit Anleitung angeschaut. Hier ist mir dann mein Fehler aufgefallen. Nachdem ich das richtige Paket bei Adafruit geklont habe funktioniert auch hier das beigefügte fast direkt einwandfrei.

Punkt statt Komma in der Google Tabelle – das Problem mit dem Diagramm

Das Beispiel für das Google Spreadsheet von Adafruit schreibt als Temperaturwert z.B. „24.0“ in eine Tabelle. Soweit alles prima, solange nicht weiter tragisch, wenn man kein Diagramm ausgeben möchte. Denn hier gibt Google bei der Auswahl eines Liniendiagramms nur den Fehler „Das erforderliche Datenformat für „Liniendiagramm“ stimmt nicht mit den aktuellen Daten überein“ aus.

Klar, eine Zahl mit einem Punkt als Nachkommatrenner stimmt nicht mit dem Deutschen Zahlenformat überein. Auch hier eine Websuche zur Lösung bei Herr Thees geführt. Die Sprache der Tabelle muss in der Google Tabelle unter

Datei -> Tabelleneingenschaften -> Sprache

umgestellt werden. Ich habe hier „Vereinigte Staaten“ eingestellt und alles ist gut.

Also was hat zum Erfolg geführt?

Hier nochmal die Schritte, die bei mir zum erfolgreichen Auslesen des DHT11 mit dem Raspberry Pi geführt haben:

DHT11 mit einem 10K Ohm Wiederstand an den Raspberry Pi geknöpert. Ich verwende Pin 16 vom Pi, was GPIO4 entspricht. Außerdem noch mit GND und 3,3 V verbinden. Fertig. Der Raspberry ist dafür natürlich vom Strom entfernt.

DHT11 am Raspberry Pi_Steckplatine

Als nächstes das Adafruit DHT herunterladen, in das entsprechende Verzeichnis wechseln und das Installationsscript aufrufen (setzt installiertes Python und die notwendigen Python libraries voraus):

git clone https://github.com/adafruit/Adafruit_Python_DHT.git
cd Adafruit_Python_DHT
sudo python setup.py install

Im Ordner examples findet sich die Datei AdafruitDHT.py, mit der ein erster Test gemacht werden kann:

sudo ./AdafruitDHT.py 11 4

Die 11 steht dabei für den DHT11. Wer eine DHT22 verwendet muss hier eine 22 eingeben. Die 4 steht für den GPIO4. Das ganze führt zu folgender Ausgabe:

Temp=23.0*C  Humidity=46.0%

Prima, die Inbetriebnahme des DHT11 hat also funktioniert. Kuschelig warm. Ist halt Sommer 🙂

Als nächstes will ich die Daten noch in der Google Tabelle speichern. Also der OAuth2 Anleitung von hier gefolgt bis die notwendige JSON Datei auf meinem Rechner landete.

Die Datei habe ich mit Fugu (ich verwende einen Mac) auf den Raspberry in das Verzeichnis examples geschoben. Ach ja: ich verwende ein Mac-Book Air mit Intel Prozessor und Yosemite. Daher muss ich die Fugu unstable Version fugu-1.2.1pre1 verwenden. Aber fluppt prima.

Zwischendrin habe ich flott bei Google Docs eine neue Tabelle angelegt und ihr den Namen „DTH11 Temperatur und Luftfeuchtigkeit“ gegeben. Nicht vergessen, wie oben beschrieben die Google Tabelle auf Sprache „Vereinigte Staaten“ einzustellen.

In der JSON Datei findet sich ein Eintrag für „client_email“ etwa in der Form wie 12345678901-abcdefghijklmnop1234567890abcdefghijklmnop@developer.gserviceaccount.com

Für diese E-Mail muss die Google Tabelle zum lesen und schreiben freigegeben werden. Dazu in Google Spreadsheet auf „Freigeben“ klicken und diese E-Mail Adresse hineinkopieren.

Zuletzt muss noch die google_spreadsheet.py angepasst werden:

nano gogle_spreadsheet.py

Hier passe ich die folgenden Einträge an:

GDOCS_OAUTH_JSON       = 'DHT11Temprature-123456789012345.json' 

In der Zeile oben muss natürlich der Name der zuvor heruntergeladenen JSON Datei gegen euren Dateinamen ausgetauscht werden.

GDOCS_SPREADSHEET_NAME = 'DTH11 Temperatur und Luftfeuchtigkeit'

Und hier muss natürlich der Name eurer Google Tabelle eingetragen werden.

DHT_PIN = 4

Und hier schließlich der GPIO4. DHT_PIN ist etwas verwirrend wie ich finde. Tatsächlich muss hier der GPIO angegeben werden.  In meinem Beispiel von oben also 4.

Und los geht das Vergnügen:

sudo ./google_spreadsheet.py