ESP32 Abfragezeichenfolge-Webserver – Dynamische URL-Parameter
WebServerQueryStrings-Beispiel - Dynamischer Mehrseiten-Server
Überblick
Dieses Beispiel zeigt, wie man einen dynamischen mehrseitigen Webserver erstellt, der URL-Abfrageparameter verwendet, um interaktive Inhalte und Steuerungsfunktionen bereitzustellen und einen nahtlosen Seitenwechsel zu ermöglichen.
Funktionen
- Mehrseitige Navigation mit dynamischen Inhalten basierend auf URL-Parametern
- Temperaturumrechnung (Celsius/Fahrenheit) über Abfrageparameter
- LED-Steuerung mit Parametern in der Abfragezeichenfolge
- Dynamische Inhaltsgenerierung basierend auf Benutzereingaben
- Professionelles Mehrseiten-Layout mit konsistenter Navigation
- URL-Parameter-Auswertung und Validierung
Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables ESP32 Starter-Kit (ESP32 enthalten) | |
| 1 | × | DIYables Sensor-Kit (30 Sensoren/Displays) | |
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Bibliotheksinstallation
Folgen Sie diesen Anweisungen Schritt für Schritt:
- Wenn dies Ihre erste Verwendung des ESP32 ist, lesen Sie das Tutorial zur Einrichtung der ESP32-Umgebung in der Arduino-IDE setting up the environment for ESP32 in the Arduino IDE.
- Schließen Sie das ESP32-Board mit einem USB-Kabel an Ihren Computer an.
- Starten Sie die Arduino IDE auf Ihrem Computer.
- Wählen Sie das passende ESP32-Board (z. B. ESP32) und COM-Port aus.
- Öffnen Sie den Library Manager, indem Sie auf das Library Manager-Symbol auf der linken Seite der Arduino IDE klicken.
- Suchen Sie nach Web Server for ESP32 und finden Sie die mWebSockets von DIYables.
- Klicken Sie auf die Installieren-Schaltfläche, um die mWebSockets-Bibliothek hinzuzufügen.

Webserver-Abfragezeichenfolgen-Beispiel
- In der Arduino-IDE gehen Sie zu Datei Beispiele Webserver für ESP32 WebServerQueryStrings Beispiel, um den Beispielcode zu öffnen
Code-Struktur
- home.h: HTML-Vorlage der Startseite
- temperature.h: HTML-Vorlage der Temperaturüberwachungsseite
- led.h: HTML-Vorlage der LED-Steuerungsseite
- WebServerQueryStrings.ino: Hauptserverlogik
Schaltungsverbindung
Keine externen Bauteile erforderlich – dieses Beispiel verwendet die integrierte LED am Pin 13.
Eigenschaften von Abfrageparametern
Temperaturseitenparameter
- unit=c oder unit=celsius - Temperatur in Celsius anzeigen
- unit=f oder unit=fahrenheit - Temperatur in Fahrenheit anzeigen
- Kein Parameter - Standardmäßig Celsius
LED-Steuerparameter
- state=on - LED einschalten
- state=off - LED ausschalten
Anweisungen zur Einrichtung
1. Netzwerkkonfiguration
Bearbeiten Sie die WLAN-Zugangsdaten direkt in der Datei WebServerQueryStrings.ino:
2. Code hochladen und Ausgabe überwachen
- Verbinden Sie Ihren ESP32 mit Ihrem Computer
- Wählen Sie das richtige Board und den richtigen Port in der Arduino IDE aus
- Laden Sie den WebServerQueryStrings.ino-Sketch hoch
- Öffnen Sie den Seriellen Monitor (9600 Baud)
- Warten Sie auf die WLAN-Verbindung
- Notieren Sie die angezeigte IP-Adresse
- Wenn Sie die IP-Adresse im Seriellen Monitor nicht sehen, drücken Sie die Reset-Taste am ESP32-Board
Anwendungsbeispiele
Öffnen Sie Ihren Webbrowser und geben Sie die im Serial Monitor angezeigte IP-Adresse ein, um auf den Webserver zuzugreifen.

Testen Sie die Temperaturüberwachungsfunktion:
- Klicken Sie auf das Menü „Temperatur“.
- Zeigen Sie die Temperaturanzeige an. Klicken Sie auf jede Schaltfläche, um die Temperatureinheit zu ändern.

Testen Sie die LED-Steuerungsfunktion:
- Klicken Sie im Menü 'LED-Steuerung'. Sie sehen dann die Weboberfläche wie unten dargestellt.

- Schalten Sie die LED mit den bereitgestellten Tasten ein und aus.
- Beobachten Sie, wie der Status der integrierten LED auf dem ESP32-Board sich sofort aktualisiert.
Zugriff auf verschiedene Seiten
Startseite
- URL: http://your-esp32-ip/
- Features: Willkommensseite mit Navigationsmenü
Temperaturseite (Standard - Celsius)
- URL: http://your-esp32-ip/temperature
- Anzeige: Temperatur in Celsius mit Einheitenauswahl
Temperatur in Fahrenheit
- URL: http://your-esp32-ip/temperature?unit=f
- URL: http://your-esp32-ip/temperature?unit=fahrenheit
- Anzeige: Temperatur in Fahrenheit umgerechnet
LED-Steuerung
- Einschalten: http://your-esp32-ip/led?state=on
- Ausschalten: http://your-esp32-ip/led?state=off
Code-Erklärung
Verarbeitung von Abfrageparametern
LED-Steuerung mit Abfrageparametern
Parametervalidierung
HTML-Vorlagen mit dynamischem Inhalt
Temperatur-Seitenvorlage
LED-Steuerungsvorlage
Erweiterte Funktionen
Routen-Konfiguration
Hilfsfunktionen für Abfrageparameter
URL-Erstellungshilfen
Tatsächliche Implementierungsnotizen
Aktuelle Einschränkungen
Die tatsächliche Implementierung ist im Vergleich zu einem voll funktionsfähigen Webserver vereinfacht.
- Unterstützt nur die Extraktion eines einzelnen Parameters pro Handler
- Einfache auf Zeichenketten basierende Temperatursimulation (keine Einheitenumrechnung)
- Grundlegende LED-Steuerung mit nur Ein- und Auszuständen
- Verwendet Pin 9 statt des Standard-Pins 13
Fehlerbehebung
Häufige Probleme
Parameter funktionieren nicht
- URL-Format überprüfen: page?param=value
- Verifizieren Sie, dass die Parameternamen exakt übereinstimmen (Groß-/Kleinschreibung beachten)
- Die aktuelle Implementierung verwendet state für die LED, nicht action
LED-Pin-Probleme
- Dieses Beispiel verwendet Pin 9, nicht Pin 13.
- Vergewissern Sie sich, dass die LED_PIN-Konstante mit Ihrer Hardware übereinstimmt.
Zugriff auf Abfrageparameter
- Verwenden Sie die QueryParams-Struktur, nicht server.arg()
- Durchlaufen Sie params.params[i], um bestimmte Parameter zu finden
Debug-Ausgabe
Anpassung
Hinzufügen eines neuen Handlers mit Parametern
Verbesserung des Templatesystems
Die eigentliche Implementierung verwendet eine einfache Platzhalterersetzung:
Nächste Schritte
- Erkunde WebServerJson.ino für die REST-API-Entwicklung
- Probiere WebServerWithWebSocket.ino für Echtzeit-Kommunikation
- Implementiere die Formularverarbeitung mit POST-Parametern