Quantcast
Channel: Arduino – Fluuux – TechBlog
Viewing all articles
Browse latest Browse all 40

Arduino – Temperatur- und Luftfeuchte auf Twitter posten

$
0
0

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

DHT22 - Arduino Anschlussbelegung

  • 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:

DHT22-Tweet

The post Arduino – Temperatur- und Luftfeuchte auf Twitter posten appeared first on Fluuux - TechBlog.


Viewing all articles
Browse latest Browse all 40

Trending Articles