ESP8266 Webserver: GET-Variablen auslesen

von cooper.bin
veröffentlicht am 17.02.2024 aktualisiert am 17.02.2024

In der Welt des Internets und insbesondere in der Entwicklung von Webanwendungen spielen GET-Variablen eine Schlüsselrolle. Sie sind ein einfaches aber mächtiges Werkzeug, um Daten über die URL an einen Webserver zu übermitteln. Du hast sicherlich schon einmal eine URL gesehen, die mit einem Fragezeichen ? endet. Das sind GET-Variablen.

Auch auf makesmart werden GET-Variablen verwendet. Mit GET-Variablen können einfach Informationen in der URL übergeben werden, zum Beispiel https://makesmart.net/blog?tag=esp8266.

Wenn man diese URL aufruft, wird dem Webserver mitgeteilt, dass Artikel mit dem Tag esp8266 angefragt werden. Der Server kann entsprechend reagieren und die gewünschten Artikel anzeigen.

Produktempfehlungen und -suche in Verbindung mit dem Amazon Partnerprogramm:

¹ Angaben ohne Gewähr. Bei einem Kauf über den Link erhalten wir eine Provision.

Das Praktische daran ist, dass mehrere solcher Variablen übergeben werden können, indem man sie mit einem & verbindet: https://makesmart.net/blog?tag=esp8266&page=2. So kann kann man noch spezifischere Informationen übermitteln.

Dieses Prinzip ist nicht nur auf Webseiten beschränkt, sondern kann auch auf einem ESP8266 angewendet werden. Man kann den Webserver auf dem ESP8266 so programmieren, dass diese GET-Variablen ausgelesen und darauf basierend Aktionen ausgeführt werden.

Produktempfehlungen und -suche in Verbindung mit dem Amazon Partnerprogramm:

¹ Angaben ohne Gewähr. Bei einem Kauf über den Link erhalten wir eine Provision.

Zum Beispiel könnte man den Wert eines Timers setzen, indem man die entsprechenden Werte über eine URL übermittelt.

Zum Kapitel springen Hardware

Für die Einrichtung eines Webservers, der GET-Parameter auslesen kann, ist die benötigte Hardware sehr überschaubar. Im Kern des Projekts steht natürlich der ESP8266 selbst. Der ESP8266 ist in unterschiedlichsten Ausführungen erhältlich, von einfachen Modellen wie dem ESP-01s, der für einfache Aufgaben geeignet ist, bis hin zu fortgeschritteneren Versionen wie dem D1 Mini oder einem NodeMCU-Board. Letztere beiden verfügen über zusätzliche Pins und einem integrierten USB-Anschluss für eine unkomplizierte Programmierung.

Solltest du nicht wissen, wie man einen ESP8266 programmiert, kannst du dir gerne diese Schritt-für-Schritt Anleitung anschauen. Darin wird der Start mit dem ESP8266, speziell dem D1 Mini erklärt und beinhaltet alle notwendigen Informationen die zu zum Programmieren eines ESP8266 Boards brauchst.

Zum Kapitel springen Programmcode

Der folgende Programmcode basiert auf dem Programmcode aus meinem anderen Tutorial ESP8266 - Ein einfacher Webserver mit mDNS. Mit lediglich ein paar Anpassungen lassen sich GET-Parameter sehr einfach auslesen und verarbeiten.

Der Code ist so gestaltet, dass er praktisch "Plug & Play" ist. Nachdem du deine WLAN-Zugangsdaten angepasst hast, kannst du den Code direkt auf den ESP8266 hochladen. Der Sketch umfasst die Einrichtung des Webservers, eine einfache Behandlung von Webanfragen und die Integration zum Auslesen eines GET-Parameters.

const char* ssid = "makesmartWLAN";
const char* password = "makesmart_passwort";
/*
    HTTP-GET Request verarbeiten
    Basic-Code für GET-Request Verarbeitung auf dem ESP8266
    Created by cooper, 2020
    makesmart.net
*/

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

ESP8266WebServer server(80);

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

// http://makesmart-esp.local/ 
const char* dns_name = "makesmart-esp";

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());

  if (MDNS.begin(dns_name)) {
    Serial.println("DNS gestartet, erreichbar unter: ");
    Serial.println("http://" + String(dns_name) + ".local/");
  }

  server.onNotFound([](){
    // Es wird keine spezielle Route definiert, sodass bei jeder URL IMMER die Funktion
    // get_hook() aufgerufen wird
    get_hook();
  });

  server.begin();
  
  Serial.println("Der Webserver wurde gestartet.");
  
}



void loop() {
  server.handleClient();
  MDNS.update();  
}


void get_hook() {


    if( server.hasArg("name") ){

      // Variable "name" wurde übergeben
      Serial.println("Variable 'name' übergeben!");

      // Anschließend die Prüfung, ob die Variable 'name' einen Inhalt hat
      if( server.arg("name") != "" ){
        
        // Die Ausgabe des übergebenen Wertes über den seriellen Monitor
        Serial.println( "Name wurde übergeben: " + server.arg("name") );
        
        // Die Ausgabe im Webbrowser HTTP-Code 200: Ok
        server.send( 200, "text/plain", "Name wurde übergeben: " + server.arg("name") );

        
      }else{
        
        // Wenn Variable die 'name' übergeben wurde, aber leer ist:
        Serial.println( "Name ist da - besitzt aber keinen Wert." );
        server.send(200, "text/plain","Name ist da - besitzt aber keinen Wert.");  
        
      }
      
    }else{
      //Wenn gar keine Variablen übergeben wurden
      Serial.println( "Es wurde keine Variable `name` übergeben." );
      server.send( 200, "text/plain", "Es wurde keine Variable `name` übergeben." ); 
    }

}

Sobald man das Programm auf den ESP8266 hochgeladen hat, werden ein paar Meldungen über den seriellen Monitor ausgegeben. Diese Meldungen bestätigen, dass eine Verbindung zum WLAN hergestellt wurde und der Webserver läuft:

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

Beim Aufruf der IP-Adresse des ESP8266 und dem Übergeben vom GET-Parameter name werden dementsprechende Meldungen über den seriellen Monitor und auf der Webseite ausgegeben.

http://makesmart-esp.local/?name=cooper.bin

Name wurde übergeben: cooper.bin

http://makesmart-esp.local/?name=

Name ist da - besitzt aber keinen Wert.

http://makesmart-esp.local/

Es wurde keine Variable `name` übergeben.

Zum Kapitel springen Inspirationen

GET-Parameter bieten eine flexible Möglichkeit, um Einstellungen und Werte von Variablen auf dem ESP8266 in Echtzeit anzupassen. Sie ermöglichen es, Parameter eines laufenden Programms direkt über die URL zu ändern, ohne dass eine Neuprogrammierung des Mikrocontrollers erforderlich ist. Nehmen wir als Beispiel das belibete Blink-Programm: Standardmäßig ist der Intervall, in dem die LED blinkt fest im Code definiert. Durch die Nutzung von GET-Parametern können wir diesen Intervall dynamisch anpassen.

In meinem MisterT Projekt habe ich GET-Parameter verwendet, um eine API zu realisieren.

GET-Variablen können schlichtweg dazu dienen, Funktionen auf deinem ESP8266 auszuführen


cooper.bin Avatar

cooper.bin

Unterstütze mich und meine Arbeit, so kann ich weiter meiner Leidenschaft nachgehen. Ich lege viel Wert auf Qualität und stecke daher sehr viel Zeit in meine Beiträge. Wenn sie dir gefallen kannst du dir gerne auch meine anderen Artikel anschauen.

Mit PayPal unterstützen

Ich bin auf dem makesmart Discord-Server aktiv. Dort bin ich auch relativ gut erreichbar.

Teile diesen Beitrag



Diese Artikel könnten dich auch interessieren

ESP8266 Webserver mit echten HTML Dateien

Mit dem ESPAsyncWebserver kann man einen dateibasierten Webserver auf dem ESP8266 realisieren. Dieser kann HTML, CSS, Javascript und jede andere Art von Datei ausliefern.

cooper.bin am 28.04.2024

ESP8266 D1 Mini WLAN-Relais mit HTTP API

Mit diesem einfachem Webserver auf dem ESP8266 mit HTTP API kannst du ein Relais smart machen! Steuere das Relais über deinen Webbrowser oder automatisiert durch andere Dienste.

cooper.bin am 20.02.2024

ESP8266 Webserver - HTTP-Authentifizierung mit Benutzername und Passwort

In diesem Tutorial zeigen wir dir, wie du einen ESP8266 Webserver mit HTTP-Authentifizierung absicherst. Der Zugriff auf den Webserver erfolgt dabei über Benutzername und Passwort.

cooper.bin am 25.08.2024

ESP8266 - Ein einfacher Webserver mit mDNS

Während Webserver wie Apache2 oder NGNIX auf Rechnern laufen, kann man auch auf einem ESP8266 einen Webserver verwenden. In diesem Tutorial werden wir ein Grundgerüst implementieren.

cooper.bin am 13.02.2024

Template Strings mit dem ESP8266 und dem ESPAsyncWebServer

Mit dem ESPAsyncWebServer kannst du Platzhalter im HTML-Dokument vor dem Ausliefern ersetzen und so dynamische Inhalte mit dem ESP8266 einfach integrieren.

cooper.bin am 16.07.2024