ESP32 Query String Web Server - Dynamische URL-parameters
WebServerQueryStrings Voorbeeld - Dynamische Meerpagina Server
Overzicht
Dit voorbeeld laat zien hoe u een dynamische meerpagina webserver maakt die gebruikmaakt van URL-queryparameters om interactieve content en besturingsfuncties te bieden met een naadloze navigatie tussen pagina’s.
Kenmerken
- Meerpagina navigatie met dynamische content gebaseerd op URL-parameters
- Temperatuureenheid conversie (Celsius/Fahrenheit) via queryparameters
- LED-besturing met query string parameters
- Dynamische content generatie gebaseerd op gebruikersinvoer
- Professionele meerpagina lay-out met consistente navigatie
- Parsing en validatie van URL-parameters
Hardware Benodigdheden
Of u kunt de volgende kits kopen:
| 1 | × | DIYables Sensorkit (30 sensoren/displays) | |
| 1 | × | DIYables Sensorkit (18 sensoren/displays) |
Bibliotheek Installatie
Volg deze stappen nauwkeurig:
- Als dit uw eerste keer is met de ESP32, raadpleeg dan de tutorial over het opzetten van de ESP32-omgeving in de Arduino IDE.
- Verbind de ESP32 met uw computer via een USB kabel.
- Start de Arduino IDE op uw computer.
- Selecteer de juiste ESP32 board (bijvoorbeeld ESP32) en COM-poort.
- Open de Bibliotheekbeheerder door te klikken op het Library Manager icoon aan de linkerzijde van de Arduino IDE.
- Zoek op Web Server for ESP32 en vind de mWebSockets van DIYables.
- Klik op de Install-knop om de mWebSockets bibliotheek toe te voegen.

Voorbeeld Web Server Query Strings
- Open in Arduino IDE via File Examples Web Server for ESP32 WebServerQueryStrings om de voorbeeldcode te laden.
Code-structuur
- home.h: HTML-sjabloon voor de startpagina
- temperature.h: Sjabloon voor temperatuurscherm
- led.h: Sjabloon voor LED-besturingspagina
- WebServerQueryStrings.ino: Hoofdserverlogica
Aansluitschema
Geen externe componenten nodig – dit voorbeeld gebruikt de ingebouwde LED op pin 13.
Query Parameter Functies
Temperatuurscherm Parameters
- unit=c of unit=celsius - Temperatuur weergeven in Celsius
- unit=f of unit=fahrenheit - Temperatuur weergeven in Fahrenheit
- Geen parameter - Standaard Celsius
LED-besturingsparameters
- state=on - Zet de LED aan
- state=off - Zet de LED uit
Installatie-instructies
1. Netwerkconfiguratie
Pas de WiFi-gegevens direct aan in het bestand WebServerQueryStrings.ino:
2. Code uploaden en output monitoren
- Verbind uw ESP32 met de computer
- Selecteer het correcte board en poort in de Arduino IDE
- Upload de sketch WebServerQueryStrings.ino
- Open de Seriële Monitor op 9600 baud
- Wacht op de WiFi-verbinding
- Noteer het IP-adres dat wordt weergegeven
- Als het IP-adres niet verschijnt, druk dan op de resetknop van de ESP32
Gebruik Voorbeelden
Open uw webbrowser en voer het IP-adres in dat wordt weergegeven in de Seriële Monitor om toegang te krijgen tot de webserver.

Test de temperatuurmonitorfunctie:
- Klik in het menu op "Temperature".
- Bekijk de temperatuurweergave. Klik op elke knop om de temperatuureenheid te wijzigen.

Test de LED-besturing:
- Klik in het menu op "LED Control". U ziet het webinterface zoals hieronder:

- Zet de LED AAN en UIT met de beschikbare knoppen.
- Observeer dat de ingebouwde LED op het ESP32-bord direct van status verandert.
Toegang tot verschillende pagina’s
Startpagina
- URL: http://your-esp32-ip/
- Kenmerken: Welkompagina met navigatiemenu
Temperatuurscherm (Standaard - Celsius)
- URL: http://your-esp32-ip/temperature
- Weergave: Temperatuur in Celsius met eenheidselector
Temperatuur in Fahrenheit
- URL: http://your-esp32-ip/temperature?unit=f
- URL: http://your-esp32-ip/temperature?unit=fahrenheit
- Weergave: Temperatuur omgezet naar Fahrenheit
LED-besturing
- AAN zetten: http://your-esp32-ip/led?state=on
- UIT zetten: http://your-esp32-ip/led?state=off
Code Uitleg
Verwerking van Query Parameters
LED-besturing met Query Parameters
Parameter Validatie
HTML-sjablonen met Dynamische Content
Temperatuurscherm Sjabloon
LED-besturingssjabloon
Geavanceerde Features
Route Configuratie
Hulpfuncties voor Query Parameters
URL Bouw Hulpfuncties
Aantekeningen bij Werkelijke Implementatie
Huidige Beperkingen
De daadwerkelijke implementatie is eenvoudiger dan een volwaardige webserver:
- Ondersteunt slechts één parameter extractie per handler
- Simpele stringgebaseerde temperatuur simulatie (geen eenheid conversie)
- Basale LED-besturing met alleen aan/uit status
- Gebruikt pin 9 in plaats van standaard pin 13
Probleemoplossing
Veelvoorkomende Problemen
Parameters Werken Niet
- Controleer de URL-opmaak: page?param=value
- Parameter namen zijn hoofdlettergevoelig en moeten exact kloppen
- Huidige implementatie gebruikt state voor LED, niet action
LED Pin Issues
- Dit voorbeeld gebruikt pin 9, niet pin 13
- Controleer of de LED_PIN constant overeenkomt met uw hardware
Toegang tot Query Parameters
- Gebruik de QueryParams-structuur, niet server.arg()
- Loop door params.params[i] om specifieke parameters te vinden
Debug Output
Aanpassingen
Nieuwe Handler Toevoegen met Parameters
Verbetering Template Systeem
De huidige implementatie gebruikt simpele placeholder vervanging:
Volgende Stappen
- Ontdek WebServerJson.ino voor REST API-ontwikkeling
- Probeer WebServerWithWebSocket.ino voor realtime communicatie
- Implementeer formulierverwerking met POST-parameters