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.
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