ESP8266 Webserver mit mDNS Grundgerüst - 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. )
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.
Lokale Domains enden auf .local
und eine Domain über die der ESP8266 erreicht werden kann, sieht dann zum Beispiel so aus:
\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 \nDer 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
\nDer Code kann Plug- & Play verwendet werden, lediglich die WLAN-Zugangsdaten müssen angepasst werden.
\nconst char* ssid = \"WLAN-SSID\";\nconst char* password = \"WLAN-PSK\";\n
\nDer Name der Domain wird direkt in der darauf folgenden Zeile definiert:
\n// == http://makesmartesp.local/ \nconst char* dns_name = \"makesmartesp\";\n
\nSobald man das Programm auf den ESP8266 hochgeladen hat, erfolgen folgende (hoffentlich selbsterklärende) Meldungen im seriellen Monitor:
\nVerbindung wird hergestellt ..........\nVerbunden! IP-Adresse: 192.168.178.89\nDNS gestartet, erreichbar unter: \nhttp://makesmartesp.local/\nWebserver gestartet.\n
\nUnd dann ist der Webserver auch schon erfolgreich im lokalen Netzwerk online.
\n\n
Weitere Erläuterungen
\nDer Webserver wurde mit zwei Routen definiert. Einmal /
und einmal /custom
. Auf der Startseite /
erfolgt eine einfache Textausgabe im Webbrowser.
server.on(\"/\", []() {\n server.send(200, \"text/plain\", \"ESP-Startseite!\");\n});\n
\nBei 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.
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
\nBeim Callen der Route erscheint die Ausgabe im seriellen Monitor:
\nunsere eigene Funktion wird ausgeführt ...
\n
Dieser Codeschnipsel ist auf das bare Minimum gekürzt worden und dient als Grundlage für einfache Webserver-Projekte mit dem ESP8266.
\nHast 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
- ESP8266 GET-Variablen auslesen \n
- ESP8266 HTTP-GET Request \n
- ESP8266 Webserver echte HTML Dateien ausliefern - Tutorial \n
- Websockets auf dem ESP8266 nutzen - Template \n
Ich wünsche euch viel Spaß beim Umsetzen eurer Projekte! Peace
Unterstütze mich mit dem Kauf deines Zubehörs im makesmart.shop
\n-> zum ESP8266 D1 Mini Starterset-Warenkorb
¹Produktempfehlungen
Produkte zum Warenkorb hinzufügen
¹Affiliate Link. Affiliate Links sind Referenzen des Autors. Bei Kauf wird eine Provision ausgeschüttet. Mehr Informationen.