• 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:)

    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.ä.
    Wichtig 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:


    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.

    Der Code

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

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

    const char* ssid = "makesmartWLAN";
    const char* password = "makesmart_passwort";
    

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

    // == http://makesmartesp.local/ 
    const char* dns_name = "makesmartesp";
    

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

    Verbindung wird hergestellt ..........
    Verbunden! IP-Adresse: 192.168.178.89
    DNS gestartet, erreichbar unter: 
    http://makesmartesp.local/
    Webserver gestartet.
    

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


    Weitere Erläuterungen

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

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

    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.

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

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


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

    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.

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

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

    ¹Produktempfehlungen

    Produkte zum Warenkorb hinzufügen



    Dieses Tutorial gibt es auch als Videoanleitung:

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

Ähnliche Themen

  • 1
  • 3
  • 14
  • 9
  • 1