Esp8266 Internetsteuerung über MQTT-Protokoll

Esp8266 Internetsteuerung über MQTT-Protokoll
Hallo zusammen! Dieser Artikel erklärt und demonstriert detailliert, wie man die Fernsteuerung des ESP8266-Moduls mithilfe einer App in nur 20 Minuten einrichtet. Android via MQTT-Protokoll.

Die Idee der Fernsteuerung und -überwachung hat schon immer die Köpfe von Menschen begeistert, die sich für Elektronik und Programmierung begeistern. Denn die Möglichkeit, jederzeit und ortsunabhängig die benötigten Daten empfangen oder versenden zu können, bietet zahlreiche Möglichkeiten. In meinen vorherigen Artikeln Artikel 1 и Artikel 2) Ich habe versucht, mehrere kostengünstige und relativ einfache Möglichkeiten zur Implementierung der Fernsteuerung von Mikrocontrollern über das Internet in Betracht zu ziehen. Doch die Zeit und die ganze Welt stehen nicht still – der Fortschritt setzt seine unaufhaltsame Bewegung fort. In dieser kurzen Zeit erfreute sich das Modul esp8266 großer Beliebtheit, das dank seines niedrigen Preises und des integrierten WLAN zu einem der Hauptbestandteile des Smart Home geworden ist.

MQTT ist derzeit das fortschrittlichste und beliebteste Datenübertragungsprotokoll zwischen einzelnen Geräten innerhalb von Smart Home-Systemen. Es hat mehrere Vorteile gegenüber anderen Protokollen:
— geringer Verkehrsverbrauch;
- Die Verbindung zwischen Client und Server ist immer offen;
- lädt den Internetkanal nicht;
— keine Verzögerungen bei der Datenübertragung;
— praktisches Abonnementsystem für Themen;
All dies ermöglicht eine Überwachung und Steuerung in Echtzeit. Allerdings erfordert MQTT einen eigenen Server, der als Vermittler zwischen Netzwerk-Clients fungiert. Es gibt zwei Möglichkeiten, entweder einen eigenen Server zu erstellen oder Dienste von Drittanbietern zu nutzen.

Das beschriebene Steuerungssystem besteht aus zwei Hauptkomponenten: einem MQTT-Server (üblicherweise nur einem) und Clients, von denen es mehrere geben kann. In unserem Fall handelt es sich bei den Clients um eine Anwendung, die auf einem System läuft. Android und das ESP8266-Modul selbst.

Der Systembetriebsalgorithmus ist wie folgt. Clients stellen eine Verbindung zum Server her und sofort nach der Verbindung abonniert jeder von ihnen die für ihn interessanten Themen. Die gesamte Kommunikation zwischen Clients läuft über den Server, der Daten basierend auf deren Abonnements an andere Clients umleitet.

MQTT-Server.

In unserem Fall nutzen wir einen äußerst komfortablen Service www.cloudmqtt.com das über einen kostenlosen Tarifplan (Cute Cat) verfügt, der den Bedarf für die Implementierung eines kleinen hausinternen Smart-Home-Systems vollständig abdeckt.
Esp8266 Internetsteuerung über MQTT-Protokoll
Registrieren wir uns auf der Website und erhalten die notwendigen Daten für den Zugriff auf den Server. Bei der Konfiguration von Clients müssen Sie einen regulären Port (ohne SSL und TLS) verwenden.
Esp8266 Internetsteuerung über MQTT-Protokoll

Antrag auf Android.

Unsere Anwendung fungiert als Bedienfeld für den Mikrocontroller und empfängt und zeigt alle vom esp8266 empfangenen Informationen an.

Die Anwendung wird aufgerufen IoT MQTT-Dashboard und ist ein fertiger MQTT-Client mit einer kleinen Anzahl sehr praktischer Widgets. Weitere Informationen zur Verwendung der App finden Sie im Video.

Esp8266.

Das Modul wird in der Arduino-Programmierumgebung geflasht, ich möchte jedoch darauf hinweisen, dass das Modul Probleme mit der Firmware in den neuesten Arduino-Versionen hat, daher empfehle ich die Verwendung von Version 1.6.4.
An den esp8266 sind beispielsweise eine LED (5 Pins) und ein Temperatursensor ds18b20 (2 Pins) angeschlossen.
Da zur Steuerung der LED Daten empfangen werden müssen, muss ESP nach dem Anschließen das entsprechende Thema „Test / LED“ abonnieren, da sonst alle gesendeten Daten an unserem Mikrocontroller vorbeigehen.
Sie benötigen kein Abonnement, um Temperaturdaten zu senden. Beim Senden von Temperaturwerten müssen Sie jedoch das Thema angeben, an das diese Daten gesendet werden sollen.

Unten finden Sie eine Skizze mit detaillierten Kommentaren.

Skizze Esp8266_mqtt.ino// Светодиод подлкючен к 5 пину
// Датчик температуры ds18b20 к 2 пину

#enthalten
#enthalten
#enthalten
#enthalten

#define ONE_WIRE_BUS 2
OneWire OneWire (ONE_WIRE_BUS);
DallasTemperatursensoren(&oneWire);

const char *ssid = "FLUGHAFEN"; // Name des WLAN-Zugangspunkts
const char *pass = "PASSWORT"; // Passwort vom Zugangspunkt

const char *mqtt_server = "Server"; // MQTT-Servername
const int mqtt_port = 11140; // Port für die Verbindung zum MQTT-Server
const char *mqtt_user = "Anmelden"; // Protokolle vom Server
const char *mqtt_pass = "Bestanden"; // Server-Passwort

#define BUFFER_SIZE 100

bool LedState = false;
int tm=300;
Gleitkommatemperatur = 0;

// Funktion zum Empfangen von Daten vom Server

void callback(const MQTT::Publish& pub)
{
Serial.print(pub.topic()); // Ausgabe des Themennamens an den seriellen Port
Serial.print(" => ");
Serial.print(pub.payload_string()); // den Wert der empfangenen Daten an den seriellen Port ausgeben

String-Nutzlast = pub.payload_string();

if(String(pub.topic()) == "test/led") // prüfen, ob die Daten aus dem Thema stammen, das wir brauchen
{
int stled = payload.toInt(); // Konvertieren Sie die empfangenen Daten in den Integer-Typ
digitalWrite(5,stle); // LED abhängig von den empfangenen Datenwerten ein- oder ausschalten
}
}

WiFiClient wclient;
PubSubClient-Client (wclient, mqtt_server, mqtt_port);

void setup () {

Sensoren.begin ();
Serial.begin (115200);
Verzögerung (10);
Serial.println ();
Serial.println ();
PinMode (5, OUTPUT);
}

void loop () {
// mit WLAN verbinden
wenn (WiFi.status() != WL_CONNECTED) {
Serial.print("Verbindung wird hergestellt mit ");
Serial.print(ssid);
Serial.println("...");
WiFi.begin(ssid, pass);

wenn (WiFi.waitForConnectResult() != WL_CONNECTED)
zurück;
Serial.println("WLAN verbunden");
}

// Verbindung zum MQTT-Server herstellen
wenn (WiFi.status() == WL_CONNECTED) {
wenn (!client.verbunden()) {
Serial.println("Verbindung zum MQTT-Server wird hergestellt");
wenn (client.connect(MQTT::Connect("arduinoClient2")
.set_auth(mqtt_user, mqtt_pass))) {
Serial.println("Mit MQTT-Server verbunden");
client.set_callback(Rückruf);
client.subscribe("test/led"); // Abonnieren Sie das Thema mit Daten für die LED
} Else {
Serial.println("Verbindung zum MQTT-Server konnte nicht hergestellt werden");
}
}

wenn (Client.verbunden()){
client.loop();
TempSend();
}

}
} // Ende der Hauptschleife

// Funktion zum Senden von Messwerten von einem Temperatursensor
void TempSend(){
wenn (tm==0)
{
Sensoren.requestTemperatures(); // wir holen den Temperaturwert vom Sensor
float temp = sensors.getTempCByIndex(0);
client.publish("test/temp",String(temp)); // Temperaturwert an das Topic für den Temperatursensor senden
Serial.println(temp);
tm = 300; // Pause zwischen dem Senden der Temperaturwerte ca. 3 Sekunden
}
tm--;
Verzögerung (10);
}

Als Ergebnis erhalten wir ein praktisches Tool zur Fernsteuerung und -überwachung von Daten, das recht einfach zu erlernen ist und auch für Anfänger geeignet ist.

Video, das die Funktionsweise des Steuerungssystems demonstriert

Video ansehen

Ausführliche Videoanleitung zum Einrichten des Systems

Video ansehen

Eine der Möglichkeiten, die ESP8266-Steuerung über das MQTT-Protokoll zu nutzen

Video ansehen

Internetsteuerung des LED-Streifens

Video ansehen

Wenn Sie Fragen zu diesem Material haben, empfehle ich Ihnen, sich den zweiten Teil des Videos anzusehen, in dem das Material klarer dargestellt wird.

Das Archiv enthält den Sketch und alle notwendigen Bibliotheken zum Flashen des Mikrocontrollers mit dem Sketch aus dem Beispiel.
Bitte beachten Sie, dass die Bibliothek ESP8266WiFi.h nicht in diesem Archiv enthalten ist, sondern über den Boards-Manager in der Arduino-Umgebung installiert wird.

ARCHIV

MQTT-Server - www.cloudmqtt.com

Link zur IoT MQTT Dashboard-App − play.google.com/store/apps/details?id=com.thn.iotmqttdashboard&hl=ru

Vielen Dank für Ihre Aufmerksamkeit.

Source: habr.com

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz und VPS-VDS-Servern 🔥 Kaufen Sie zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server | ProHoster