ESP32 - Serveur Web de chaîne de requête - Paramètres d'URL dynamiques
Exemple de chaînes de requête du serveur Web - serveur dynamique à pages multiples
Vue d'ensemble
Cet exemple montre comment créer un serveur web dynamique à pages multiples qui utilise les paramètres de requête URL pour fournir un contenu interactif et contrôler les fonctionnalités avec une navigation fluide entre les pages.
Fonctionnalités
- Navigation sur plusieurs pages avec un contenu dynamique basé sur les paramètres d'URL
- Conversion des unités de température (Celsius/Fahrenheit) via des paramètres de requête
- Contrôle des LED avec des paramètres de chaîne de requête
- Génération dynamique de contenu basée sur l'entrée utilisateur
- Mise en page professionnelle multi-pages avec une navigation cohérente
- Analyse et validation des paramètres d'URL
Préparation du matériel
Ou vous pouvez acheter les kits suivants:
| 1 | × | Kit de Démarrage DIYables ESP32 (ESP32 inclus) | |
| 1 | × | Kit de Capteurs DIYables (30 capteurs/écrans) | |
| 1 | × | Kit de Capteurs DIYables (18 capteurs/écrans) |
Installation de la bibliothèque
Suivez ces instructions étape par étape:
- Si c'est la première fois que vous utilisez l'ESP32, reportez-vous au tutoriel sur la configuration de l'environnement ESP32 dans l'IDE Arduino.
- Connectez la carte ESP32 à votre ordinateur à l'aide d'un câble USB.
- Lancez l'IDE Arduino sur votre ordinateur.
- Sélectionnez la carte ESP32 appropriée (par exemple, ESP32) et le port COM.
- Ouvrez le Gestionnaire de bibliothèques en cliquant sur l'icône située sur le côté gauche de l'IDE Arduino.
- Recherchez Web Server for ESP32 et localisez la bibliothèque mWebSockets de DIYables.
- Cliquez sur le bouton Install pour ajouter la bibliothèque mWebSockets.

Exemple de chaînes de requête du serveur Web
- Dans l'IDE Arduino, allez dans Fichier Exemples Serveur Web pour ESP32 WebServerQueryStrings pour ouvrir le code d'exemple
Structure du code
- home.h: Modèle HTML de la page d'accueil
- temperature.h: Modèle de page de surveillance de la température
- led.h: Modèle de page de contrôle des LED
- WebServerQueryStrings.ino: Logique principale du serveur
Connexion du circuit
Aucun composant externe nécessaire — cet exemple utilise la LED intégrée sur la broche 13.
Caractéristiques des paramètres de requête
Paramètres de la page de température
- unit=c ou unit=celsius - Afficher la température en degrés Celsius
- unit=f ou unit=fahrenheit - Afficher la température en degrés Fahrenheit
- Aucun paramètre - Par défaut : Celsius
Paramètres de contrôle des LED
- state=on - Allumer la LED
- state=off - Éteindre la LED
Instructions d'installation
1. Configuration du réseau
Modifiez directement les identifiants Wi-Fi dans le fichier WebServerQueryStrings.ino :
2. Téléverser le code et surveiller la sortie
- Connectez votre ESP32 à votre ordinateur
- Sélectionnez la bonne carte et le port dans l'IDE Arduino
- Téléversez le sketch WebServerQueryStrings.ino
- Ouvrez le moniteur série (à 9600 bauds)
- Attendez la connexion Wi‑Fi
- Notez l'adresse IP affichée
- Si vous ne voyez pas l'adresse IP dans le moniteur série, appuyez sur le bouton de réinitialisation sur la carte ESP32
Exemples d'utilisation
Ouvrez votre navigateur Web et entrez l'adresse IP affichée dans le Moniteur Série pour accéder au serveur Web.

Tester la fonction de surveillance de la température :
- Cliquez sur le menu « Température ».
- Affichez l’affichage de la température. Cliquez sur chaque bouton pour changer l’unité de température.

Tester la fonction de contrôle de la DEL:
- Cliquez sur le menu « Contrôle des LED ». Vous verrez l’interface Web ci-dessous :

- Allumez et éteignez la LED à l’aide des boutons fournis.
- Observez l’état de la LED intégrée sur la carte ESP32 qui se met à jour instantanément.
Accéder à différentes pages
Page d'accueil
- URL: http://your-esp32-ip/
- Fonctionnalités: Page d'accueil avec un menu de navigation
Page de température (par défaut - Celsius)
- URL: http://your-esp32-ip/temperature
- Affichage: Température en degrés Celsius avec sélecteur d'unité
Température en Fahrenheit
- URL: http://your-esp32-ip/temperature?unit=f
- URL: http://your-esp32-ip/temperature?unit=fahrenheit
- Affichage: Température convertie en degrés Fahrenheit
Contrôle des LED
- Allumer: http://your-esp32-ip/led?state=on
- Éteindre: http://your-esp32-ip/led?state=off
Explication du code
Traitement des paramètres de requête
Contrôle de LED avec des paramètres de requête
Validation des paramètres
Modèles HTML avec contenu dynamique
Modèle de page de température
Modèle de contrôle des DEL
Fonctionnalités avancées
Configuration des itinéraires
Fonctions utilitaires pour les paramètres de requête
Aides à la construction d'URL
Notes d'implémentation réelles
Limitations actuelles
L'implémentation réelle est simplifiée par rapport à un serveur web complet :
- Ne prend en charge qu'une extraction d'un seul paramètre par gestionnaire
- Simulation de température simple basée sur des chaînes (aucune conversion d'unités)
- Contrôle LED basique avec uniquement les états allumés et éteints
- Utilise la broche 9 au lieu de la broche standard 13
Dépannage
Problèmes courants
Les paramètres ne fonctionnent pas.
- Vérifier le format de l'URL : page?param=value
- Vérifier que les noms des paramètres correspondent exactement (sensibilité à la casse)
- L'implémentation actuelle utilise state pour la LED, et non action
Problèmes des broches LED
- Cet exemple utilise la broche 9, et non la broche 13
- Vérifiez que la constante LED_PIN correspond à votre matériel
Accès au paramètre de requête
- Utilisez la structure QueryParams, pas server.arg()
- Parcourez params.params[i] pour trouver des paramètres spécifiques
Sortie de débogage
Personnalisation
Ajout d’un nouveau gestionnaire avec des paramètres
Amélioration du système de modèles
L'implémentation réelle utilise un simple remplacement des espaces réservés :
Étapes suivantes
- Explorez WebServerJson.ino pour le développement d'une API REST
- Essayez WebServerWithWebSocket.ino pour la communication en temps réel
- Implémentez la gestion des formulaires avec des paramètres POST