ESP8266 Webserver mit mDNS Grundgerüst - Tutorial

ESP8266 Okt. 27, 2021
https://my.makesmart.net/topic/230/esp8266-webserver-mit-mdns-grundger%C3%BCst-tutorial

Im Zuge eines kommenden Videos auf meinem YouTube Kanal in dem es um den Webserver auf dem ESP8266 geht, stelle ich hier schon mal die passenden Codes bereit. Neben dem bereits erwähnten Webserver wird ebenfalls ein mDNS-Server auf dem ESP8266 eingerichtet. Das ermöglicht es uns den ESP neben der IP-Adresse auch über eine lokale Domain zu erreichen. (Ein längt überfälliger Codeschnipsel btw. \":heh:\")

\n

Der Vorteil an solchen lokalen Domains ist, dass selbst wenn sich die IP-Adresse des ESPs durch dementsprechende Netzwerkeinstellungen mal ändern sollte, bleibt die Domain statisch und es gibt keine Probleme bei Einbindungen o.ä.
\nWichtig zu erwähnen wäre evtl., dass so ein mDNS bei vielen (oder allen(?)) Android-Geräten leider nicht unterstützt wird, sodass in diesem Fall dann auf die IP-Adresse zurückgegriffen werden muss.

\n

Lokale Domains enden auf .local und eine Domain über die der ESP8266 erreicht werden kann, sieht dann zum Beispiel so aus:

\n\n
\n

Für den gleich folgenden Code müssen keine Libraries installiert werden. Alles was wir brauchen wird bereits standardmäßig mit dem Installieren der ESP8266 Boards mitgeliefert. Falls du das noch nicht getan hast, kannst du dir dazu gerne mein anschauen oder diese Anleitung verwenden.

\n

\n

Der Code

\n
#include <ESP8266WiFi.h>\n#include <ESP8266WebServer.h>\n#include <ESP8266mDNS.h>\n\nESP8266WebServer server(80);\n\nconst char* ssid = \"WLAN-SSID\";\nconst char* password = \"WLAN-PSK\";\n\n// == http://makesmartesp.local/ \nconst char* dns_name = \"makesmartesp\";\n\nvoid eigeneFunktion();\n\nvoid setup()\n{\n  Serial.begin(115200);\n  Serial.println(\"ESP Gestartet\");\n\n  WiFi.begin(ssid, password);\n\n  Serial.print(\"Verbindung wird hergestellt ...\");\n  while (WiFi.status() != WL_CONNECTED)\n  {\n    delay(500);\n    Serial.print(\".\");\n  }\n  Serial.println();\n\n  Serial.print(\"Verbunden! IP-Adresse: \");\n  Serial.println(WiFi.localIP());\n\n  // Bei Android-Geräten wird der mDNS oft nicht unterstützt, dann muss auf die IP-Adresse zurückgegriffen werden\n  if (MDNS.begin(dns_name)) {\n    Serial.println(\"DNS gestartet, erreichbar unter: \");\n    Serial.println(\"http://\" + String(dns_name) + \".local/\");\n  }\n\n  server.onNotFound([](){\n    server.send(404, \"text/plain\", \"Link wurde nicht gefunden!\");  \n  });\n\n  server.on(\"/\", []() {\n    server.send(200, \"text/plain\", \"ESP-Startseite!\");\n  });\n\n  server.on(\"/custom\", []() {\n    server.send(200, \"text/plain\", \"Nur eine Beispiel-Route\");\n    eigeneFunktion();\n  });\n\n  server.begin();\n  Serial.println(\"Webserver gestartet.\");\n}\n\nvoid loop() {\n  server.handleClient();  \n  MDNS.update();\n}\n\nvoid eigeneFunktion(){\n  Serial.println(\"unsere eigene Funktion wird ausgeführt ...\");\n}\n
\n

Der Code kann Plug- & Play verwendet werden, lediglich die WLAN-Zugangsdaten müssen angepasst werden.

\n
const char* ssid = \"WLAN-SSID\";\nconst char* password = \"WLAN-PSK\";\n
\n

Der Name der Domain wird direkt in der darauf folgenden Zeile definiert:

\n
// == http://makesmartesp.local/ \nconst char* dns_name = \"makesmartesp\";\n
\n

Sobald man das Programm auf den ESP8266 hochgeladen hat, erfolgen folgende (hoffentlich selbsterklärende) Meldungen im seriellen Monitor:

\n
Verbindung wird hergestellt ..........\nVerbunden! IP-Adresse: 192.168.178.89\nDNS gestartet, erreichbar unter: \nhttp://makesmartesp.local/\nWebserver gestartet.\n
\n

Und dann ist der Webserver auch schon erfolgreich im lokalen Netzwerk online.

\n
\n

Weitere Erläuterungen

\n

Der Webserver wurde mit zwei Routen definiert. Einmal / und einmal /custom. Auf der Startseite / erfolgt eine einfache Textausgabe im Webbrowser.

\n
server.on(\"/\", []() {\n    server.send(200, \"text/plain\", \"ESP-Startseite!\");\n});\n
\n

Bei der Route /custom wird Beispielhaft gezeigt, wie man Abläufe im Programm per Webseite initiieren kann. In diesem Fall beschränkt sich der Ablauf auf eine Ausgabe im seriellen Monitor.

\n
server.on(\"/custom\", []() {\n    server.send(200, \"text/plain\", \"Nur eine Beispiel-Route\");\n    eigeneFunktion();\n});\n\nvoid eigeneFunktion(){\n  Serial.println(\"unsere eigene Funktion wird ausgeführt ...\");\n}\n
\n

Beim Callen der Route erscheint die Ausgabe im seriellen Monitor:
\nunsere eigene Funktion wird ausgeführt ...

\n
\n

Dieser Codeschnipsel ist auf das bare Minimum gekürzt worden und dient als Grundlage für einfache Webserver-Projekte mit dem ESP8266.

\n

Hast du schon ein wenig mehr Erfahrung mit dem ESP8266? Dann lohnt sich ein Blick in folgende Beiträge, die sich allesamt mit HTTP und Webservern beschäftigen.

\n\n

Ich wünsche euch viel Spaß beim Umsetzen eurer Projekte! Peace \"🤞\"

\n

Unterstütze mich mit dem Kauf deines Zubehörs im makesmart.shop \"❤\"
\n-> zum ESP8266 D1 Mini Starterset-Warenkorb

\n

¹Produktempfehlungen

Produkte zum Warenkorb hinzufügen

¹Affiliate Link. Affiliate Links sind Referenzen des Autors. Bei Kauf wird eine Provision ausgeschüttet. Mehr Informationen.


Community

Die makesmart Community ist der Ort, an dem du deine Ideen mitteilen und deine Erfahrungen austauschen kannst.

Großartig! Das Abonnement wurde erfolgreich abgeschlossen.
Großartig! Schließe als Nächstes die Kaufabwicklung ab, um vollen Zugriff zu erhalten.
Willkommen zurück! Du hast dich erfolgreich angemeldet.
Erfolg! Dein Konto ist vollständig aktiviert, du hast jetzt Zugang zu allen Inhalten.