Diese Variante findet im Erdgeschoss meines Hauses Verwendung.
Hardware Basis
Hardware Liste:
1 Arduino Uno (bei mir ein R3 kompatibles Board) samt USB-Anschlusskabel
1 Arduino Ethernet Shield
1 Kondensator 100 nF
1 Widerstand 10 kOhm
1 DHT-22 Sensor zur Messung von Temperatur und Luftfeuchtigkeit
Als Hardware Basis, um Sensoren in meine Messung einzubinden, verwende ich einen Arduino Uno R3, Kosten im 1-stelligen EUR-Bereich, wenn man China Klone wie z.B. in ebay erhälltich, verwendet).
Nun müssen die Daten auch noch ins Internet übertragen werden. Gottseidank bot sich bei mir bei 2 von den 3 gebauten Temperaturmessstationen eine direkte Anbindung an vorhandene Switches an. Ich verwende somit ein Arduino Ethernet Shield („Shield“ nennen sich die „Huckepack“-Boards, die auf andere Arduinos aufgesteckt werden können). Als China Klon unter 10 EUR. Mit diesem Shield habe ich sehr gute Erfahrungen hinsichtlich Stabilität gemacht. Wenn kein Switch in der Nähe vorhanden gewesen wäre, wäre auch die Verwendung eines Wifi Shields denkbar gewesen, mit welchem ich allerdings stabilitätstechnisch keine sehr guten Erfahrungen gemacht habe – dazu aber später.

Als Sensor verwende ich einen DHT-22, der sowohl Temperatur als auch Luftfeuchtigkeit messen kann. Der DHT-22 ist ein Low Cost Sensor mit einem 1-wire-Interface (das „1 wire“ bezieht sich auf 1 notwendige Datenleitung). Der Sensor ist vorkalibriert und benötigt ausser einem Widerstand keine extra Komponenten, sodass sofort mit der Messung von Temperatur und Luftfeuchtigkeit begonnen werden kann.

Verdrahtungsschema
Code
Wenn man nun noch das Thingspeak Tutorial zum Einbinden eines Arduino Boards als Referenz heranzieht und den entsprechenden Code anpasst, kommt man dann sehr schnell zum gewünschten Ergebnis.
Hier nun mein Arduino Code im PDF Format aus Codebender bzw. im Word Format (der Text kann direkt in die Arduino Software oder in Codebender kopiert werden) – ein paar Extra Erklärungen hier – die Zeilennummern beziehen sich auf die Zeilennummern im PDF-Code:
Nach dem allgemeinen Teil des Programms werden in Zeilen 41 bis 44 die libraries inkludiert. Die ersten 3 libraries sind Codebender bereits bekannt, die DHT library, die die Arbeit mit dem DHT-22 Modul erleichtert, gibt es hier zum Download – sie kann in Codebender eingebunden werden.
Zeile 46: Als Arduino Pin für die Anbindung des DHT-22 Sensors wird Pin 2 verwendet – wie im Adafruit Tutorial auch.
Zeile 48-51: Hier ist der verwendete DHT Sensor zu definieren
Zeile 53-57: Bei meinem Programm findet alle 30 sec eine Messung statt. Nur wenn sich der gemessene Temperaturwert vom letzten gemessenen Wert um min 0,2 °C (ERKENNUNGSSCHWELLE) unterscheidet, wird dieser Wert alle 5 min (updateThingSpeakInterval) in thingspeak.com gespeichert. Wenn der Unterschied zum letzten Wert < 0,2 °C beträgt, wird kein Wert gespeichert. Sollte der Wert sehr lange konstant bleiben, wird alle 30 min (maxThingSpeakInterval) ein Wert gespeichert. All dies dient dazu, die Datenmenge in Thingspeak nicht explodieren zu lassen.
Zeile 75: Hier ist der eigene API-Key, den man bei der Registrierung in Thingspeak erhält, einzutragen
Zeile 88-90: Hier sind IP-Adressen des Ethernet Shields und des Gateway Routers sowie die Subnet Adresse einzutragen
Zeile 97: wird nicht benötigt
Zeile 109-117: Hier werden Vorhandensein und Funktion des Ethernet Shields getestet, wenn irgendetwas nicht funktioniert, stoppt das Programm hier
Zeile 119-126: Zeigt die aktuelle IP Adresse auf der seriellen Ausgabe an
Zeile 136-137: Hier werden vom DHT-22 Sensor Luftfeuchtigkeit und Temperatur eingelesen
Zeile 139-145: Manchmal kam es bei mir vor, dass kein Wert gelesen werden konnte – nach einigen Wiederholungen funktioniert’s dann irgendwann mal
Zeile 148: Ich berechne hier einen Hitzeindex („gefühlte Temperatur“)
Zeile 150-152: …wenn man zum Testen die Daten auf dem seriellen Monitor ausgeben will
Zeile 154-156: Wandelt die numerischen Werte für die Ausgabe auf Thingspeak in formatierte Strings um
Zeile 159-163: Wenn noch irgendwelche Meldungen auf dem Ethernet Client vorhanden sind, werden diese hier ausgegeben. ACHTUNG: Im originalen Code lt. Thingspeak Tutorial befand sich ein Fehler (es war ein IF statt dem WHILE vorhanden)
Zeile 173-174: Hier wird der Überlauf des Arduino Zeitbasis der alle rund 50 Tage stattfindet, korrigiert
Zeile 182-190: Wenn die Temperaturänderung seit der letzten Ausgabe in Thingspeak min. 0,2 °C beträgt oder schon 30 min her ist, findet eine Ausgabe in Thingspeak statt; ansonsten werden in
Zeile 191-197 die Daten auf dem seriellen Monitor ausgegeben
Zeile 198-203: Wenn sich das Ethernet Shield mal aufhängen sollte, wird hier ein Neustart durchgeführt
Zeile 208-245: In dieser Prozedur erfolgt die eigentliche Ausgabe auf Thingspeak, diese Zeilen sind gegenüber dem Tutorial auf der Thingspeak-Seite unverändert.
Foto der Schaltung
Wenn man das ganze mal in Betrieb genommen hat, sieht das Ergebnis wie folgt aus – gut zu erkennen sind der Widerstand zwischen + und der Datenleitung (links unten). Weiters habe ich (der fehlt im Adafruit Tutorial) noch einen 100 nF Kondensator zwischen + und GND geschaltet wie vom DHT-22 Hersteller empfohlen – auch dieser ist auf dem Foto ersichtlich.
Foto der Schaltung mit DHT-22 Sensor, ersichtlich sind das Ethernet Kabel und das Stromanschlusskabel
So sieht dann das Ergebnis auf Thingspeak.com aus (Detail). Hier ein Live Link zu meinen Messdaten.
Zusammenfassung
Kosten: Max. 30-40 EUR inkl. Arduino Uno, Ethernet Shield und DHT-22 Sensor.
Aufwand: Wenn keine Änderungen an der Software durchgeführt werden, sollte das in wenigen Stunden komplett machbar sein (exkl. Registrierung bei Codebender und Thingspeak)
Voraussetzungen: Ein wenig elektrotechnische und/oder IT-Kenntnisse schaden nicht, um den Umgang mit einem Arduino Board, das Software uploaden etc. in kurzer Zeit bewerkstelligen zu können, man kann sich aber auch ohne diese Kenntnisse in die Materie einlesen. Hierzu wird das Studium einer oder auch mehrerer Arduino Einführungen im Internet empfohlen.
Genauigkeit: Lt. DHT-22 Hersteller +/-0,5°C und +/- 2% Luftfeuchtigkeit. Insgesamt ist mir die Genauigkeit hier weniger wichtig, da ich die Schaltung mit einem Digitalthermometer bei mir zuhause abgeglichen habe – die Abweichung war genau 0,0°C, dies hätte man ansonsten aber einfach mit einem Korrekturfaktor in der Software korrigieren können. Wichtiger als die Genauigkeit ist mir, dass sich all meine Temperaturmessungen auf dasselbe Referenzniveau beziehen d.h. direkt vergleichbar sind.
Referenzen:
– Plattform für die Kodierung: www.codebender.com
– Internet of Things Platform für Temperaturdatenspeicherung und -visualisierung: www.thingspeak.com
– Lieferanten für Hardware: Ebay, Amazon und viele andere