|
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);
}