• Bis zu 30 Jahre Haft im Urlaub: Infografik zeigt die kuriosesten Drohnen-Gesetze weltweit 18. August 2019
    Drohnen werden immer beliebter. Laut Schätzungen von Experten wurden bereits mehr als eine halbe Million Hobby-Drohnen in Deutschland verkauft. Unzählige Familien wollen ihre fliegende Kamera diesen Sommer mit in den Urlaub nehmen, um unvergessliche Erinnerungen für das Familienalbum festzuhalten. Doch was ist im Ausland überhaupt erlaubt?
NOV 24 2018

MQTT Temperatursensor

Arduino, FHEM, MQTT

Schlagwörter: , ,

In der Haus-Automatisation eignet sich MQTT (Message Queuing Telemetry Transport) perfekt.

Hardware:

    • Arduino
    • Ethernet-Shield
    • Dallas/Maxim DS1820

Der One-Wire-Temperatur-Sensor DS1820 habe ich an Pin D2 angeschlossen.

Die Anbindung an FHEM erfolgt wie im Wiki beschrieben an die MQTT-Bridge

Auf dem Arduino wird das Skript geladen:

/********************************************************************
 *  Temperatur-Sensor
 *  
 *  MQTT-Client mit DS18x20 Sensor
 *  
 *  
 */
#include                                                         // Serial Peripheral Interface
#include                                                    // Ethernet Bibliothek
#include                                                // MQTT Bibliothek
#include                                                     // OneWire
#include                                           // Dallas Temperatursensor

#define ONE_WIRE_BUS 2


IPAddress server(192, 168, 178, 122);                                   // MQTT-Broker
char inTopic[] = "DL8MA";                                               // Topic

byte mac[]    = {  0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED };

char msg[100];                                                          // Buffer

OneWire oneWire(ONE_WIRE_BUS);                                          // TEmperatursensor einbinden
DallasTemperature sensors(&oneWire);

EthernetClient ethClient;                                               // Ethernet-Client aktivieren
PubSubClient client(ethClient);                                         // MQTT-Klasse

void reconnect() {                                                      // automatischer Reconnect 
  while (!client.connected()) {
    Serial.print("Versuch des MQTT Verbindungsaufbaus...");

    if (client.connect("arduinoClient")) {
      Serial.println("Erfolgreich verbunden!");
      client.publish( inTopic,"Temperatursensor");

      client.subscribe(inTopic);
    } else { 
      Serial.print("Fehler, rc=");
      Serial.print(client.state());
      Serial.println(" Nächster Versuch in 5 Sekunden");
      delay(5000);
    }
  }
}

void setup()
{
  Serial.begin(9600);                 
  sensors.begin();                                                      // Sensor initialisieren
  client.setServer(server, 1883);                                       // Adresse des MQTT-Brokers setzen
  Ethernet.begin(mac );                                                 // Ethernet-Vebindung aufbauen
  delay(1000);

}

void loop()
{  

  static char floatStr[15];
  String payLoad;
  String tempWertString;
  float  tempWertFloat;
  
  if (!client.connected()) {
    reconnect();
  }
  client.loop();

  sensors.requestTemperatures();                                        // Temperatur messen

  tempWertFloat = sensors.getTempCByIndex(0);                           // Messwert holen
  dtostrf( tempWertFloat,7, 2, floatStr);                               // Zahlenwert in String wandeln
  tempWertString = floatStr;
  tempWertString.trim();
  payLoad = "{\"Temperatur\":\"";                                       // Nachricht zusammenbauen
  payLoad = payLoad + tempWertString + "\"}";                           // Messwert dazufügen
  payLoad.toCharArray(msg, 100 );                                       // für publish-Funktion umwandeln

  client.publish( inTopic, msg );                                       // MQTT-Nachricht an Brocker senden

  Serial.println( msg );                                                

  delay( 1000 );
  
}

Die Verdrahtung:

DS18B20

Der Aufbau hier mit einem Arduino UNO

Anschluss am Arduino UNO

Arduino UNO

MQTT Debugging

FHEM und Arduino

There are no comments

Leave a Reply