zurück

Raspberry Pi & IoT

06.07.2019

(siehe: Setup des RPi)

Verwendete Bauteile

Aufbau

siehe: Aufbau und Anschluss der DHT22 Temperatur-Sensors.
(Hinweis: Es muss auch die Library zum Ansteuern der DHT22 installiert werden)

ThingSpeak Account einrichten

Zunächst legt man sich einen Account bei ThingSpeak an. Dieser ist kostenlos und bedarf nur weniger Schritte. Anschließend erstellt man einen neuen Channel.

Anlegen eines Channels in Thingspeak

Nach dem Speichern des Channels wird man automatisch zu der Ansicht "Private View" im neu erstellten Channel weitergeleitet. Hier werden die vergebenen Felder als Diagramme angezeigt. Im oberen Bereich der Seite befindet sich auch die "Channel ID", welche man für diesen Versuch benötigt.
Auch sollte man sich "Write API Key" und "Read API Key" speichern, die über den Reiter "API Keys" zu erreichen sind.

Code

Der Einfachheit halber wird hier die ThingSpeak-Library verwendet. (Um den Service nutzen zu können, ist jedoch auch alternativ ein einfaches Senden der Daten per POST möglich).
sudo pip install thingspeak
(Der Python Package Installer »pip« muss dazu schon installiert sein)

Das folgende Python-Script liest alle 15 Sekunden die Temperatur und Luftfeuchtigkeit des DHT22 aus und sendet diese Wert an den vorher angelegten Channel in ThingSpeak.
Hinweis: Im kostenlosen Account von ThingSpeak werden Werte nur max. einmal pro 15 Sekunden entgegengenommen.

#!/usr/bin/python

import thingspeak
import time
import Adafruit_DHT

CHANNEL_ID = XXXXXXXX # insert your ThingSpeak Channel ID here
WRITE_KEY  = 'XXXXXXXXXXXXXXXX' # insert your ThingSpeak write key here
READ_KEY   = 'XXXXXXXXXXXXXXXX' # insert your ThingSpeak read key here
PIN_DHT22  = 4  # =GPIO4

def measure(channel):
    try:
        humidity, temperature = Adafruit_DHT.read_retry(Adafruit_DHT.DHT22, PIN_DHT22)
        response = channel.update({'field1': temperature, 'field2': humidity})
        print response
    except:
        print("ThingSpeak: connection failed!")

if __name__ == "__main__":
    channel = thingspeak.Channel(id=CHANNEL_ID, write_key=WRITE_KEY, api_key=READ_KEY)
    while True:
        measure(channel)
        time.sleep(15)

Resultat

Wird der obige Code nun ausgeführt, z.B.:
sudo python dht22_iot.py
so erhält man ein Resultat, welches ähnlich dem folgenden Bild sein dürfte.

Messwerte im eigenen Channel von Thingspeak
Abb.: Messwerte im eigenen Channel von Thingspeak