• „5G ja, aber mit geblockten Frequenzbereichen für die Industrie“ 13. Dezember 2018
    Wenige Wochen ist die Entscheidung der Frequenzvergabe für den 5G-Mobilfunk nun her, doch der mediale Rummel um das Thema scheint nicht abzuebben. Braucht man 5G für die Industrie oder reichen nicht auch andere, traditionelle oder bewährte Kommunikationsverfahren? Auch auf der SPS IPC Drives 2018 in Nürnberg war das ein Thema.
Know-how für alle
NOV 24 2018

MQTT Temperatursensor

Arduino, 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

Sport's by Runnerinn

Trek Bike TrekkInn FR

Tennis Smashinn

Count per Day
  • 78Besucher heute: