|
Damit ein MQTT-Broker angesteuert werden kann, kann die Bibliothek „MQTT“ verwendet werden. Derzeit ist die Version 2.5.2 die aktuelle. Diese Bibliothek sollte dem Projekt hinzugefügt werden oder in der IDE installiert werden. |
|
|
In der nebenstehenden Schaltung sieht man die Verdrahtung der vier LEDs jeweils über die Widerstände mit den Pins des ESP verbunden (GPIO04-rot, GPIO00-gelb, GPIO02-grün und GPIO15-blau). Die Farbe der Kabel muss nicht der der LEDs entsprechen. Dies wurde nur der Übersicht wegen so gewählt.
|
|
#include <Arduino.h>
/* -------------------------------------
Praxis 20
Nutzung des MQTT-Brokers
zum Schalten von vier LEDs
-----------------------------------*/
#include <WiFi.h>
#include <MQTT.h>
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 = "";
void callback(String &topic, String &payload);
void connect();
// LED Pin
const int ledPin1 = 4;
const int ledPin2 = 0;
const int ledPin3 = 2;
const int ledPin4 = 15;
void setup() {
Serial.begin(115200);
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
connect();
}
WiFiClient net;
MQTTClient client;
void loop() {
if (!client.connected()) {
connect();
}
client.loop();
}
void callback(String &topic, String &payload) {
Serial.print("Neue Nachricht im Topic: ");
Serial.print(topic);
Serial.print(". Nachricht: ");
Serial.println(payload);
if (topic == "esp32nxxxx/rot") {
if(payload == "on"){
digitalWrite(ledPin1, HIGH);
} else if(payload == "off"){
digitalWrite(ledPin1, LOW);
}
}
if (topic == "esp32nxxxx/gelb") {
if(payload == "on"){
digitalWrite(ledPin2, HIGH);
} else if(payload == "off"){
digitalWrite(ledPin2, LOW);
}
}
if (topic == "esp32nxxxx/gruen") {
if(payload == "on"){
digitalWrite(ledPin3, HIGH);
} else if(payload == "off"){
digitalWrite(ledPin3, LOW);
}
}
if (topic == "esp32nxxxx/blau") {
if(payload == "on"){
digitalWrite(ledPin4, HIGH);
} else if(payload == "off"){
digitalWrite(ledPin4, LOW);
}
}
}
void connect() {
WiFi.begin(ssid, password);
Serial.print("checking wifi");
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(1000);
}
Serial.print("\nconnecting...");
client.begin(mqtt_server, mqtt_port, net);
client.onMessage(callback);
while (!client.connect("ESP32Clientxxxx")) {
Serial.print(".");
delay(1000);
}
Serial.println("\nconnected!");
client.subscribe("esp32nxxxx/#", 0);
}

