Praxis

 

Praxis 21: Temperatur und Feuchtigkeit an den MQTT-Broker senden

 

Benötigtes Material:

  • ESP32 Dev Modul mit USB-Kabel
  • Breadboard
  • zwei Kabelstück (männlich↔männlich)
  • drei Kabelstücke (weiblich↔männlich)
  • einen DHT11-Sensor

 

 

 

 

Der Aufbau ist identisch zu Praxis 15. Allerdings ist der Sketch deutlich aufwändiger, da jetzt die Informationen an den MQTT-Broker übermittelt werden sollen.

#include <Arduino.h>
/* -------------------------------------
    Praxis 21
    Nutzung des MQTT-Brokers 
    Temperatur und Luftfeuchtigkeit
    publishen
  -----------------------------------*/

#include <WiFi.h>
#include <MQTT.h>
#include <DHT.h>
#define DHT_SENSOR_PIN 26      // ESP32 Pin GIOP26 führt zu DHT11 Sensor
#define DHT_SENSOR_TYPE DHT11  // Es ist ein DHT11

DHT dht_sensor(DHT_SENSOR_PIN, DHT_SENSOR_TYPE);

const char* ssid = "Labornetz";
const char* password = "ITLabor2024!";
const char* mqtt_server = "172.24.100.10";
const int mqtt_port = 1883;
const char* mqtt_user = "";
const char* mqtt_password = "";
const char* client_name = "ESP32Clientxxxx";

WiFiClient net;
MQTTClient client;

void connect() {
  WiFi.begin(ssid, password);
  Serial.print("Verbinde mit WLAN...");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(1000);
  }
  Serial.print("\nVerbinde mit MQTT-Broker...");
  client.begin(mqtt_server, mqtt_port, net);
  while (!client.connect(client_name, mqtt_user, mqtt_password)) {
    Serial.print(".");
    delay(1000);
  }
  Serial.println("\nVerbunden!");
}

void setup() {
  Serial.begin(115200);
  delay(1000);
  connect();  
  dht_sensor.begin();
}

void loop() {
  if (!client.connected()) {
    connect();
  }
  float humi = dht_sensor.readHumidity();
  float tempC = dht_sensor.readTemperature();
  if ( isnan(tempC) || isnan(humi)) {
    Serial.println("Fehler beim Lesen des Sensors!");
  } else {
    Serial.print("Feuchtigkeit: ");
    Serial.print(humi);
    Serial.print("% | Temperatur: ");
    Serial.print(tempC);
    Serial.println("°C ");
    char tempString[8];
    dtostrf(tempC, 1, 2, tempString);
    char humString[8];
    dtostrf(humi, 1, 2, humString);
    client.publish("esp32nxxxx/temp", tempString);
    client.publish("esp32nxxxx/humi", humString);
  }
  delay(5000);
}

 

Aufgaben

  1. Bauen Sie die die Schaltung mit den LEDs auf einem Breadboard auf.
  2. Geben Sie den Sketch in die IDE ein.
  3. Fügen Sie die benötigte „MQTT“-Bibliothek zum Projekt hinzu, oder laden Sie sie in die IDE.
  4. Ersetzen Sie die Sequenz xxxx (Zeilen 23, 69 und 70) durch eine eindeutige Zeichenfolge. Sprechen Sie sich dazu ggf. mit Ihren Klassenkammeraden ab. Dies ist nötig, da zum einen die Verbindung mit dem Broker eine eindeutige ClientID voraussetzt. Zum anderen sollten die Topics eindeutig sein, damit man jeweils seinen ESP über den Broker erreicht.
  5. Kompilieren und Übertragen Sie die Daten auf den ESP32.
  6. Prüfen Sie mit dem Seriellen Monitor bzw. Terminal die Verbindungsaufnahme Ihres ESP32 mit WLAN und MQTT-Broker. Achten Sie auf die richtige Baudrate.
  7. Verbinden Sie sich mit dem MQTT-Explorer und sehen Sie nach, ob Ihre Werte unter Ihren Topics dort ankommen.