Meine Freundin hat eine Wäscherei, in der es schon mal vorkommen kann, das über Nacht ein Schlauch platzt. Bei der ganzen Elektronik in diesem Geschäft könnte es aber auch passieren dass ein Brand entsteht. Nun habe ich mir Gedanken darüber gemacht, wie man so schnell wie möglich davon in Kenntnis gesetzt werden könnte wenn doch mal eines dieser Szenarien eintreten sollte.
Da meine Freundin nicht so viel investieren kann, kam ich auf die Idee, die Temperatur und die Luftfeuchte durch den sowieso vorhandenen DHT22 Sensor zu ermitteln. Sobald die Temperatur einen Wert von 50°C übersteigt oder die Luftfeuchte einen Wert von über 75% erreicht, sollen diese Werte automatisch an Twitter gesendet werden.
DHT22 Sensor mit dem Arduino verbinden
- Pin 1 (links) an +5V
- Pin 2 an digitalen Pin 9 am Arduino
- Pin 3 bleibt frei
- Pin 4 (rechts) an Ground
- Pin 2 (data) und Pin 1 (power) werden noch mit einem 10k Widerstand verbunden
Vorbereitungen
Twitter Token generieren
OAuth ist ein offenes Protokoll, das eine standardisierte, sichere API-Autorisierung erlaubt. Dieses Protokoll benötigen wir um unsere Werte auf Twitter veröffentlichen zu können. Anstatt dass man nun seine Twitter Userdaten preisgibt, sendet man einen Autorisierungstoken. Diesen Token können Sie ganz leicht über folgenden link generieren lassen. [Token generieren]
Arduino-Libraries installieren
Falls Ihnen eine der benötigten Arduino Libraries fehlt, können Sie diese hier herunter laden.
Arduino-Sketch
Das Sketch ermittelt ständig die aktuelle Temperatur und die Luftfeuchtigkeit.
Wenn die Temperatur oder die Luftfeuchte einen bestimmten Wert überschreiten, wird eine Verbindung zum Twitter-Server aufgebaut. Anschließend wird die Meldung wie im untersten Bild zu sehen bei Twitter gepostet. Die Variable sleep vom Typ boolean ist dafür zuständig, dass in der Zeit, in der einer der Werte zu hoch ist, nicht ständig ein neuer Eintrag auf Twitter generiert wird. Diese Variable hat standardmäßig den Wert false. Wenn die Temperatur oder die Luftfeuchte nun den maximalwert übersteigen, wird die Variable sleep auf true gesetzt. Der Wert der Variablen bleibt so lange auf true bis beide Werte wieder im Normbereich sind.
#include <SPI.h> #include <Ethernet.h> #include <Twitter.h> #include "DHT.h" #define DHTPIN 9 #define DHTTYPE DHT22 DHT dht(DHTPIN, DHTTYPE); byte mac[] = { 0x5A, 0xA2, 0xDA, 0x0D, 0x56, 0x7A }; boolean sleep = false; Twitter twitter("TWITTERTOKEN EINTRAGEN"); //Hier bitte den Twitter Token eintragen void setup() { delay(1000); Ethernet.begin(mac); Serial.begin(9600); dht.begin(); } void loop() { getDHT22(); delay(10000); } //Temperatur des DHT22 ermitteln void getDHT22() { int h = dht.readHumidity(); //Luftfeuchte auslesen int t = dht.readTemperature(); //Temperatur auslesen String tempString = String(t); //Temperatur String humiString = String(h); //Luftfeuchte //Prüfen ob eine gültige Zahl zurückgegeben wird. Wenn NaN (not a number) zurückgegeben wird, dann Fehler ausgeben. if (isnan(t) || isnan(h)) { Serial.println("DHT22 konnte nicht ausgelesen werden"); } else { Serial.println("FLUUUX - TechBlog | Temperatur: " + tempString + char(186) + String("C") + ", Luftfeuchte: " + humiString + "%"); if(t > 50 || h > 75) { if(sleep == false) { Serial.println("FLUUUX - TechBlog | Temperatur: " + tempString + char(186) + String("C") + ", Luftfeuchte: " + humiString + "%"); String TweetString = String("FLUUUX - TechBlog | Temperatur: " + tempString + char(186) + String("C") + ", Luftfeuchte: " + humiString + "%"); char TempTweet[TweetString.length() + 1]; TweetString.toCharArray(TempTweet, TweetString.length() + 1); sendTwitterMessage(TempTweet); sleep = true; } } else { sleep = false; } } } //Tweet an Twitter senden void sendTwitterMessage(char* tweet) { Serial.println("Verbinde zu Twitter..."); if (twitter.post(tweet)) { int status = twitter.wait(); if (status == 200) { Serial.println("Verbindung hergestellt..."); } else { Serial.print("Fehler: code "); Serial.println(status); } } else { Serial.println("Verbindung fehlgeschlagen."); } }
Ergebnis:
The post Arduino – Temperatur- und Luftfeuchte auf Twitter posten appeared first on Fluuux - TechBlog.