Eines der wichtigsten Zubehörteile unserer selbst hergestellten Smart Home-Geräte ist der ioBroker MQTT-Adapter. MQTT ermöglicht eine ressourcenarme bidirektionale Kommunikation, daher ist das MQTT-Protokoll eine gute Option für den Datenaustausch zwischen einem Server und einem Mikrocontroller.
werbung – amazon.de
Wenn ioBroker noch nicht installiert ist, klick hier.
Wir müssen zuerst den MQTT-Adapter installieren. Geben wir dazu MQTT in den Sucher im Adapterfenster ein und wählen wir den MQTT Broker / Client-Adapter aus.
Klicken wir auf die Schaltfläche „+“:
Wenn wir fertig sind, wählen wir Server / Broker und anschließend die unten stehende IP-Adresse. Wir können einen Benutzernamen und ein Kennwort festlegen, dies ist jedoch in einem internen Netzwerk nicht unbedingt notwendig.
Wir sind fertig. Wir können den MQTT-Adapter verwenden. Klicken wir auf die Schaltfläche „Abspielen“.
Im Objektfenster befindet sich der MQTT-Adapter, noch ist nichts angeschlossen.
Sehen wir uns unser erstes Tool wie dieses an.
Und der Code:
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
const char* ssid = "SSID";
const char* password = "Wifi passwort";
const char* mqtt_server = "192.168.xxx.xxx";
int Led = D5;
WiFiClient espClient;
PubSubClient client(espClient);
void setup()
{
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
}
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
pinMode(Led, OUTPUT);
digitalWrite(Led, LOW);
}
void loop()
{
if (!client.connected())
{
reconnect();
}
client.loop();
}
void reconnect()
{
while (!client.connected())
{
String clientId = "ESP8266_LED_Client";
if (client.connect(clientId.c_str()))
{
client.subscribe("LEDtopic");
}
else
{
delay(6000);
}
}
}
void callback(char* topic, byte* payload, unsigned int length)
{
payload[length] = '#include <ESP8266WiFi.h>
#include <PubSubClient.h>
const char* ssid = "SSID";
const char* password = "Wifi passwort";
const char* mqtt_server = "192.168.xxx.xxx";
int Led = D5;
WiFiClient espClient;
PubSubClient client(espClient);
void setup()
{
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
}
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
pinMode(Led, OUTPUT);
digitalWrite(Led, LOW);
}
void loop()
{
if (!client.connected())
{
reconnect();
}
client.loop();
}
void reconnect()
{
while (!client.connected())
{
String clientId = "ESP8266_LED_Client";
if (client.connect(clientId.c_str()))
{
client.subscribe("LEDtopic");
}
else
{
delay(6000);
}
}
}
void callback(char* topic, byte* payload, unsigned int length)
{
payload[length] = '\0';
String strTopic = String(topic);
String strPayload = String((char * ) payload);
if(strTopic == "LEDtopic")
{
if(strPayload == "false")
{
digitalWrite(Led, LOW);
}
if(strPayload == "true")
{
digitalWrite(Led, HIGH);
}
}
}
';
String strTopic = String(topic);
String strPayload = String((char * ) payload);
if(strTopic == "LEDtopic")
{
if(strPayload == "false")
{
digitalWrite(Led, LOW);
}
if(strPayload == "true")
{
digitalWrite(Led, HIGH);
}
}
}
ESP8266 ESP-01S mit USB-Adapter
werbung – amazon.de
Lassen wir uns schnell hochladen auf NodeMCU Esp8266 , und das Ergebnis sehen.
Unser Gerät wurde freigegeben, jetzt können wir es steuern. Geben wir in das Textfeld „true“ ein, zum einzuschalten, oder „false“, zum auszuschalten.
Mit dieser einfachen kleinen MQTT- Client-App können wir von unsere Android-Handy zum MQTT-Server verbinden
Das MQTT-Praxisbuch: Mit ESP8266 und Node-RED
Das MQTT-Praxisbuch führt Schritt für Schritt in die praktische Arbeit mit diesem ressourcensparenden Protokoll ein. Dabei widmet der Autor Walter Trojan dem Thema IoT-Sicherheit ein ausführliches Kapitel. Anhand von abgeschlossenen Projekten zum Nachbauen stellt der Autor in beeindruckender Weise die praktische Bedeutung des MQTT-Protokolls in modernen IoT-Anwendungen dar
werbung – amazon.de