Référence de la bibliothèque ESP32 WebServer
Vue d'ensemble
La bibliothèque DIYables_ESP32_WebServer offre une solution complète pour créer des serveurs Web multi-pages avec la prise en charge des WebSockets sur les cartes ESP32.
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) |
Exemples
Installation
Étapes rapides
Suivez ces instructions étape par étape :
- Si c'est votre première utilisation de l'ESP32, consultez le tutoriel sur la mise en place de l'environnement pour l'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 Gestionnaire de bibliothèques sur le côté gauche de l'IDE Arduino.
- Recherchez Serveur Web pour ESP32 et localisez la bibliothèque mWebSockets par DIYables.
- Cliquez sur le bouton Install pour ajouter la bibliothèque mWebSockets.

Prise en charge de WebSocket (intégré)
La fonctionnalité WebSocket est désormais intégrée directement dans cette bibliothèque !
L’implémentation de WebSocket est basée sur l’excellente bibliothèque mWebSockets de Dawid Kurek, qui a été intégrée et optimisée spécifiquement pour l’ESP32 afin de la rendre facile à utiliser :
- Aucune installation de bibliothèque supplémentaire n'est requise - Le support WebSocket est intégré
- Optimisé pour l'ESP32 - Implémentation spécifique à la plateforme simplifiée
- Compatibilité Wi-Fi - Utilise la pile WiFi native de l'ESP32
- Conforme à la RFC 6455 - Support complet du protocole WebSocket
- Communication en temps réel - Échange bidirectionnel de données
Utilisation :
- Pour tout (serveur Web + WebSocket): Utilisez #include <DIYables_ESP32_WebServer.h>
- C'est tout ! - La fonctionnalité WebSocket est automatiquement disponible lorsque cela est nécessaire
- Économe en mémoire - Le code WebSocket inutilisé est automatiquement optimisé par le compilateur
Crédits : Implémentation WebSocket adaptée à partir de la bibliothèque mWebSockets (Licence LGPL-2.1) par Dawid Kurek, modifiée et intégrée pour une compatibilité transparente avec l'ESP32.
Classes de bibliothèque
DIYables_ESP32_WebServer Classe
La classe principale pour créer et gérer des serveurs web.
Constructeur
Crée une instance de serveur Web sur le port spécifié (par défaut : 80).
Méthodes
début()
Démarre le serveur Web et commence à écouter les connexions entrantes.
Versions surchargées:
- begin(): Démarrer le serveur uniquement (le WiFi doit être connecté séparément par votre application)
- begin(ssid, password): Se connecter au WiFi et démarrer le serveur en un seul appel (ancienne approche)
setNotFoundHandler()
Configure un gestionnaire personnalisé pour les réponses 404 Non trouvé.
imprimerEtatWifi()
Imprime l'état de la connexion WiFi et l'adresse IP dans le Moniteur Série.
gérerClient()
Traite les requêtes entrantes des clients. Cette fonction doit être appelée à plusieurs reprises dans la boucle principale.
on()
Enregistre une fonction de gestion de requête pour une URI et une méthode HTTP spécifiques.
Paramètres :
- uri: Le chemin URI (par exemple, "/", "/led", "/api/data")
- method: Méthode HTTP (GET, POST, PUT, DELETE, etc.)
- fn: Fonction gestionnaire à exécuter lorsque la route est accédée
Remarque : Cette bibliothèque utilise la méthode addRoute() au lieu de on(). Voir ci-dessous l'utilisation correcte.
ajouterRoute()
Enregistre une fonction de gestion pour une URI spécifique. Il s'agit de la méthode réelle utilisée dans la bibliothèque.
Format de la fonction RouteHandler:
Les gestionnaires de routes doivent suivre cette signature exacte :
Paramètres :
- client: référence WiFiClient pour l'envoi des réponses
- method: méthode HTTP sous forme de chaîne ("GET", "POST", etc.)
- request: URI de la requête complète
- params: paramètres de requête (objet QueryParams)
- jsonData: charge utile JSON pour les requêtes POST (vide pour GET)
Exemples d'implémentation de gestionnaires :
- Gestionnaire GET basique:
- Gestionnaire d'API JSON (GET et POST) :
- Gestionnaire des paramètres de requête:
envoyerRéponse()
Envoie une réponse HTTP au client.
Paramètres :
- client: référence WiFiClient (fournie dans la fonction gestionnaire)
- content: contenu du corps de la réponse
- contentType: type MIME de la réponse (par défaut : "text/html")
Exemples d'utilisation :
Méthodes d'authentification
activer l'authentification()
Active l'authentification HTTP Basic sur toutes les routes. Une fois activée, toutes les routes exigent une authentification.
Paramètres:
- username: Nom d'utilisateur pour l'authentification (31 caractères maximum)
- password: Mot de passe pour l'authentification (31 caractères maximum)
- realm: Domaine d'authentification affiché dans le navigateur (63 caractères maximum, optionnel)
Exemple d'utilisation:
désactiver l'authentification()
Désactive l'authentification, ce qui rend toutes les routes à nouveau accessibles au public.
Exemple d'utilisation :
estAuthentificationActive()
Renvoie vrai si l'authentification est actuellement activée, faux sinon.
Exemple d'utilisation :
envoyer401()
Renvoie une réponse 401 non autorisée avec l'en-tête WWW-Authenticate approprié. Cette fonction est appelée automatiquement lorsque l’authentification échoue, mais peut être utilisée manuellement dans des gestionnaires personnalisés.
Exemple d'utilisation :
Envoi manuel de la réponse
Pour un meilleur contrôle des en-têtes HTTP et des codes d'état :
Accès aux paramètres de requête
Structure des paramètres de requête
L'objet QueryParams contient les paramètres de requête analysés à partir de l'URL :
Accéder aux paramètres de requête
Fonctions d'aide pour les paramètres
Créer des fonctions d'aide pour un accès plus facile aux paramètres:
Classes WebSocket (intégrées)
Serveur WebSocket
Alias de net::WebSocketServer - simplifié pour les débutants.
WebSocket
Alias pour net::WebSocket - représente une connexion WebSocket.
Méthodes WebSocket
commencer()
Démarre le serveur WebSocket.
boucle()
Traite les événements WebSocket. Appelez ceci dans votre boucle principale.
surConnexion()
Définit une fonction de rappel pour les nouvelles connexions WebSocket.
onMessage()
Définit la fonction de rappel pour les messages WebSocket entrants.
à la fermeture()
Définit la fonction de rappel pour les fermetures des connexions WebSocket.
envoyer()
Envoie un message via le WebSocket.
fermer()
Ferme la connexion WebSocket.
Méthodes WebSocket supplémentaires
broadcastTXT()
Diffuse un message texte à tous les clients WebSocket connectés.
diffuserBIN()
Diffuse des données binaires à tous les clients WebSocket connectés.
clientsConnectés()
Renvoie le nombre de clients WebSocket actuellement connectés.
estEnEcoute()
Renvoie vrai si le serveur WebSocket écoute activement les connexions.
Types d'événements WebSocket
Énumération des types de données
- WebSocket::DataType::TEXT - type de message texte
- WebSocket::DataType::BINARY - type de données binaires
Énumération CloseCode
Codes de fermeture WebSocket standards pour les raisons de terminaison de la connexion.
Utilisation avancée de WebSocket
Mise en place du gestionnaire d'événements
Traitement des messages
Diffusion des données des capteurs
Méthodes HTTP
La bibliothèque prend en charge les méthodes HTTP standard :
- HTTP_GET
- HTTP_POST
- HTTP_PUT
- HTTP_DELETE
- HTTP_PATCH
- HTTP_HEAD
- HTTP_OPTIONS
Intégration JavaScript côté client
Connexion WebSocket basique
Envoi de commandes
Gestion des messages
Exemples de WebSocket
Serveur d'écho simple
Traitement des commandes JSON
Implémentation du battement de cœur
Dépannage des WebSockets
Problèmes courants
Échec de la connexion WebSocket
- Vérifier que le port du serveur WebSocket (par défaut : 81) est accessible
- S'assurer que l'adresse IP de l'ESP32 est correcte et joignable
- Utiliser les outils de développement du navigateur pour vérifier les erreurs de connexion WebSocket
Messages non reçus
- Vérifiez le moniteur série pour les journaux d’événements WebSocket
- Vérifiez que le format des messages JSON est correct
- Testez avec des messages texte simples avant d'utiliser JSON
- Assurez-vous que la longueur du message ne dépasse pas les limites du tampon
Utilisation élevée de la mémoire
- Limiter le nombre de connexions WebSocket simultanées
- Vider régulièrement les tampons de messages
- Utiliser une gestion efficace des chaînes (éviter les concaténations fréquentes)
- Surveiller la mémoire libre du tas
Aides au débogage
Surveillance des performances
La bibliothèque prend en charge les modèles HTML avec remplacement des espaces réservés :
Espaces réservés courants :
- %TEMPERATURE% - Valeur de la température
- %LED_STATUS% - État de la LED
- %QUERY_PARAM% - Valeurs du paramètre de requête
Fonctionnalités avancées du serveur Web
Prise en charge de CORS
Activer les requêtes entre origines croisées pour les applications web:
Aides pour les réponses JSON
Simplifier le développement d'API JSON:
Validation de la requête
Mettre en place une validation d’entrée robuste :
Traitement JSON amélioré
Pour la gestion complexe du JSON avec la bibliothèque ArduinoJson :
Gestion des erreurs
Gestionnaire d'erreurs 404 par défaut
La bibliothèque fournit une page d'erreur 404 par défaut. Vous pouvez la remplacer :
Bonnes pratiques
- Gestion de la mémoire: Utilisez la macro F() pour les littéraux de chaîne stockés dans la mémoire flash
- Code non bloquant: Gardez les fonctions gestionnaires légères pour éviter de bloquer le serveur
- Sécurité: Validez les paramètres d'entrée et assainissez les sorties
- Performance: Utilisez des codes d'état HTTP appropriés et des types de contenu
- WebSocket: Gérez correctement les états de connexion et mettez en œuvre une logique de reconnexion
Débogage
Activer le débogage série pour surveiller l'activité du serveur :
Compatibilité
- ESP32: Entièrement pris en charge
- Bibliothèque WiFi: Requise (incluse avec l'IDE Arduino)
- Exigences de mémoire: 32 Ko de flash minimum, 2 Ko de RAM
Limites
Limitations du serveur Web
- Connexions HTTP simultanées maximales : 4 (limitation matérielle)
- Longueur maximale de l'URL : 256 caractères
- Emplacements du modèle : aucun remplacement imbriqué
Limitations des WebSockets
- Taille maximale des messages WebSocket : 1 Ko par message
- Nombre maximal de connexions WebSocket simultanées : 4 à 6 (selon la mémoire disponible)
- Fragmentation des messages : gérée automatiquement mais peut avoir un impact sur les performances
- Taille des messages binaires : limitée par la RAM disponible
- Délai d'expiration de la connexion : 60 secondes par défaut (configurable)
Contraintes de mémoire
- Mémoire flash minimale requise : 32 Ko
- Mémoire RAM minimale requise : 2 Ko pour le fonctionnement de base
- Surcharge WebSocket : ~200-500 octets par connexion
- Mise en tampon des messages : ~1 Ko par connexion active