Exemple de WebApp personnalisée pour ESP32 - Tutoriel d'interface Web simple pour les débutants
Vue d'ensemble
Cet exemple fournit un modèle complet pour créer vos propres applications web personnalisées qui s'intègrent parfaitement à la bibliothèque DIYables ESP32 WebApps.

Le modèle CustomWebApp est parfait pour les débutants qui veulent ajouter leur propre interface Web à l'écosystème des WebApps ESP32 de DIYables !
Ce tutoriel vous montre comment construire une page Web simple avec un échange bidirectionnel de données en temps réel entre le navigateur Web et l'ESP32 via WebSocket qui peut :
- Envoyer des messages texte depuis le navigateur web vers l'ESP32 instantanément via WebSocket
- Recevoir des messages de l'ESP32 et les afficher en temps réel sur la page web
- Maintenir une connexion WebSocket persistante pour une communication continue
- Reconnect automatique lorsque la connexion WebSocket est perdue
- Fonctionne sur les appareils mobiles avec un design réactif
Conçu pour l'ESP32 - ce modèle s'intègre parfaitement aux applications web existantes de DIYables et fournit la base pour créer vos propres interfaces IoT personnalisées!
Ce modèle fournit un code minimal pour vous aider à démarrer. Les utilisateurs peuvent développer leurs propres applications web sophistiquées en modifiant ce modèle. Des connaissances de base en programmation web (HTML, CSS, JavaScript) sont recommandées pour personnaliser l'interface web et ajouter des fonctionnalités avancées.
Ce que vous apprendrez
- Comment créer une application web personnalisée qui s'intègre à la bibliothèque WebApps ESP32 de DIYables
- Comment ajouter votre page personnalisée à l'écosystème des applications Web de DIYables
- Comment envoyer des messages texte depuis le navigateur Web vers l'ESP32
- Comment envoyer des données de l'ESP32 au navigateur Web
- Comment gérer les connexions WebSocket et la reconnexion automatique
- Comment concevoir des interfaces web adaptées aux mobiles
- Comment utiliser le système de templates DIYables ESP32 WebApps pour un développement rapide
Fonctionnalités
- Intégration des WebApps ESP32 DIYables: S'intègre parfaitement à l'écosystème de la bibliothèque DIYables ESP32 WebApps
- Code modèle minimal: Fournit une base de départ minimale que vous pouvez étendre et personnaliser
- Développement basé sur des modèles: Point de départ complet que vous pouvez modifier pour créer des applications sophistiquées
- Messagerie texte simple: Envoyer des messages entre le navigateur Web et l'Arduino
- Reconnect automatique: Se reconnecte automatiquement lorsque la connexion est perdue
- Adapté aux mobiles: Fonctionne parfaitement sur les téléphones, tablettes et ordinateurs
- Convient aux débutants: Un code propre et simple, facile à comprendre
- Cadre extensible: Nécessite des connaissances de base en programmation Web (HTML/CSS/JavaScript) pour une personnalisation avancée
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) |
Comment commencer
Vous pouvez commencer à construire votre application web personnalisée pour la carte ESP32 en suivant les principales étapes suivantes :
- Exécutez le modèle d'application personnalisée par défaut sur votre carte ESP32
- Testez et vérifiez que l'application Web personnalisée par défaut fonctionne correctement
- Comprenez le protocole de communication et son fonctionnement en arrière-plan
- Modifiez le modèle pour adapter votre application
- Gérez plusieurs applications Web personnalisées - Guide essentiel de prévention des conflits
Commençons un par un.
Exécuter le modèle d'application personnalisé par défaut sur votre carte ESP32
Étapes rapides
- Si c'est la première fois que vous utilisez l'ESP32, reportez-vous au tutoriel sur la configuration de l'environnement pour l'ESP32 dans l'IDE Arduino (BASE_URL/tutorials/esp32/esp32-software-installation)
- Connectez la carte ESP32 à votre ordinateur à l'aide d'un câble USB
- Ouvrez l'IDE Arduino sur votre ordinateur
- Sélectionnez la carte ESP32 appropriée (par ex. ESP32 Dev Module) et le port COM
- Accédez à l'icône Libraries dans la barre de gauche de l'IDE Arduino
- Recherchez "DIYables ESP32 WebApps", puis trouvez la bibliothèque DIYables ESP32 WebApps par DIYables
- Cliquez sur le bouton Install pour installer la bibliothèque

- On vous demandera d'installer d'autres dépendances de la bibliothèque
- Cliquez sur le bouton Install All pour installer toutes les dépendances de la bibliothèque

- Dans l'IDE Arduino, allez dans Fichier > Exemples > DIYables ESP32 WebApps > CustomWebApp
- Vous verrez 4 fichiers qui constituent le modèle complet d'une application web personnalisée :
- CustomWebApp.ino - Code ESP32 principal (c'est ici que vous ajoutez votre logique personnalisée !)
- CustomWebApp.h - Fichier d'en-tête (définit l'interface de la bibliothèque DIYables ESP32 WebApps)
- CustomWebApp.cpp - Fichier d'implémentation (gère l'intégration avec le cadre de la bibliothèque)
- custom_page_html.h - Conception de page Web (personnalisez votre interface Web ici !)
- Configurez les paramètres Wi-Fi en modifiant ces lignes dans CustomWebApp.ino:
Étape 5 : Télécharger et tester
- Cliquez sur le bouton Upload dans l'IDE Arduino pour téléverser le code sur l'ESP32
- Ouvrez le Moniteur Série pour voir l'état de la connexion
- Notez l'adresse IP affichée dans le Moniteur Série
- Ouvrez le Moniteur Série
- Découvrez le résultat dans le Moniteur Série. Il ressemble à ce qui suit
- Si vous ne voyez rien, redémarrez la carte ESP32.
- Notez l'adresse IP affichée et saisissez cette adresse dans la barre d'adresse d'un navigateur Web sur votre smartphone ou votre PC.
- Exemple : http://192.168.0.2
- Vous verrez la page d'accueil comme sur l'image ci-dessous.

- Cliquez sur le lien Web Custom, vous verrez l'interface utilisateur de l'application Web Custom comme ci-dessous :

- Ou vous pouvez également accéder directement à la page par adresse IP suivie de /custom. Par exemple : http://[IP_ADDRESS]/custom
Tester et vérifier que l'application Web personnalisée par défaut fonctionne correctement
Lorsque vous exécutez le modèle par défaut de CustomWebApp, voici ce que vous devriez voir :
Sur l'interface Web:
- État de la connexion: Affiche « Connecté » en bleu lorsque le WebSocket est actif
- Champ de saisie des messages:Champ de texte pour taper des messages vers l'Arduino
- Bouton Envoyer: Cliquez pour envoyer votre message (ou appuyez sur Entrée)
- Affichage des messages Arduino: Affiche les messages reçus de l'ESP32 en texte bleu
Comportement de l'ESP32:
- Réponse d'écho : Quand vous envoyez « Hello » depuis le web, l'ESP32 répond par « Echo: Hello »
- Mises à jour périodiques : L'ESP32 envoie des messages de temps de fonctionnement toutes les 5 secondes : « Arduino uptime: X seconds »
- Moniteur série : Tous les messages reçus sont enregistrés pour le débogage
Tester la communication:
- Tapez un message dans la zone de saisie (par ex., "test message")
- Cliquez sur Envoyer ou appuyez sur Entrée
- Vérifier le moniteur série - vous devriez voir : "Reçu du web : test message"
- Vérifier la page Web - vous devriez voir : "Écho : test message"
- Attendez quelques secondes - vous verrez des messages de temps de fonctionnement périodiques mis à jour toutes les 3 secondes (par ex., "Temps de fonctionnement d'Arduino : 15 secondes", "Temps de fonctionnement d'Arduino : 18 secondes", etc.)
Comprendre le protocole de communication et comment il fonctionne en arrière-plan
Comprendre les mécanismes internes vous aide à personnaliser le modèle efficacement.
Système d'identifiant d'application
Le modèle CustomWebApp utilise des balises de messages uniques (appelées « Identifiants d’application ») qui aident le code ESP32 et les clients web à filtrer les messages qui leur appartiennent. Cela est essentiel car votre application peut inclure plusieurs applications web, et chaque application doit traiter uniquement ses propres messages tout en ignorant les autres:
Côté ESP32 (CustomWebApp.h et CustomWebApp.cpp)
Côté JavaScript (custom_page_html.h)
Avantages de cette conception:
- Une source unique de vérité: Modifier l'identifiant en un seul endroit par langage
- Pas de chaînes magiques: Élimine les chaînes codées en dur « CUSTOM: » dans tout le code
- Sécurité de type: L'utilisation de constantes empêche les fautes de frappe
- Extensible: Facile de créer plusieurs applications personnalisées avec des identifiants différents
- Éviter les conflits de données entre plusieurs applications: Chaque application utilise un identifiant unique pour éviter les interférences de messages
- Professionnel: Suit les principes de conception orientée objet
Remarques importantes:
- Vous pouvez conserver l'identifiant actuel « CUSTOM: » lors de la modification de ce modèle d'application Web personnalisée pour l'adapter à votre projet. Toutefois, lorsque vous créez plus d'une application personnalisée, assurez-vous de le changer pour éviter les conflits.
- Si vous modifiez l'identifiant, assurez-vous que la valeur dans JavaScript (fichier .h) et le code ESP32 (fichier .cpp) soient les mêmes (par exemple, les deux utilisent « TEMP: » ou les deux utilisent « SENSOR: »).
- Identifiants pré-réservés par les applications intégrées : Les identifiants suivants sont déjà utilisés par les applications WebApps ESP32 intégrées de DIYables et doivent être évités:
- Identifiants principaux de l'application: "CHAT:", "MONITOR:", "PLOTTER:", "DIGITAL_PINS:", "JOYSTICK:", "SLIDER:", "TABLE:", "RTC:", "ROTATOR:", "GAUGE:"
- Identifiants de sous-protocole: "TIME:", "DATETIME:", "JOYSTICK_CONFIG:", "PLOTTER_DATA:", "PLOTTER_CONFIG:", "SLIDER_VALUES:", "TABLE_CONFIG:", "TABLE_DATA:", "VALUE_UPDATE:", "PIN_CONFIG:", "PIN_STATES:", "PIN_UPDATE:"
Flux de communication
De la page Web à l'ESP32:
Lorsque vous tapez un message sur l'interface web et que vous cliquez sur le bouton Envoyer, par exemple : Hello, le flux ci-dessous se produit :
- JavaScript ajoute l'identifiant: JavaScript ajoute automatiquement l'identifiant d'application (qui est CUSTOM: dans ce modèle) en utilisant la constante APP_IDENTIFIER, puis envoie le message à l'ESP32 via WebSocket. Le message réel envoyé est : CUSTOM:Hello
- La bibliothèque DIYables ESP32 WebApps reçoit: La bibliothèque reçoit le message CUSTOM:Hello et le transmet à votre méthode CustomWebAppPage::handleWebSocketMessage
- La classe CustomWebAppPage retire l'identifiant: Dans handleWebSocketMessage, la classe CustomWebAppPage vérifie si le message commence par son APP_IDENTIFIER, retire l'identifiant en utilisant .substring(APP_IDENTIFIER.length()), puis transmet le message restant Hello en appelant la fonction de rappel implémentée dans votre fichier .ino
- Votre application gère: Votre application dans le fichier .ino reçoit simplement Hello et peut gérer le message selon votre logique personnalisée. Le modèle actuel se contente de l'afficher et d'envoyer une réponse
De l'ESP32 à la page Web :
Lorsque votre ESP32 souhaite envoyer des données à l'interface Web, par exemple : Temperature: 25°C, le flux ci-dessous se produit :
- Votre application appelle sendToWeb(): Dans votre fichier .ino, vous appelez customPage.sendToWeb("Temperature: 25°C") pour envoyer des données au navigateur web
- La classe CustomWebAppPage ajoute un identifiant et diffuse: La classe CustomWebAppPage ajoute automatiquement l'identifiant d'application en utilisant sa constante APP_IDENTIFIER à votre message et diffuse CUSTOM:Temperature: 25°C vers tous les clients web connectés via WebSocket
- JavaScript reçoit et filtre le message: Le navigateur web reçoit CUSTOM:Temperature: 25°C via le gestionnaire d'événements ws.onmessage, mais le JavaScript ne traite que les messages qui commencent par APP_IDENTIFIER et retire l'identifiant en utilisant .substring(APP_IDENTIFIER.length())
- La page Web affiche le message épuré: Le modèle actuel affiche le message épuré Temperature: 25°C (sans identifiant) dans la section « Message provenant de l'Arduino ». Vous pouvez personnaliser le JavaScript pour analyser et afficher les données de différentes manières en fonction des besoins de votre application
Vue d'ensemble de l'architecture
L'exemple CustomWebApp se compose de quatre fichiers principaux :
- CustomWebApp.ino - croquis principal ESP32 avec votre logique d'application
- CustomWebApp.h - Fichier d'en-tête définissant la classe de page personnalisée (interface de la bibliothèque)
- CustomWebApp.cpp - Implémentation avec la logique de communication (code de la bibliothèque)
- custom_page_html.h - Interface HTML séparée pour une personnalisation facile
Modifier le modèle pour adapter votre application
Le modèle est conçu pour être facilement personnalisable en fonction de vos besoins spécifiques. Voici comment l'adapter :
1. Intégration du matériel
Ajouter l'initialisation du matériel
Dans la fonction setup() de CustomWebApp.ino :
Gérer les commandes personnalisées
Étendez la fonction de rappel pour gérer vos commandes personnalisées :
Envoyer des données de capteurs en temps réel
2. Personnalisation de l'interface Web
Modifier la mise en page HTML
Modifiez le HTML dans custom_page_html.h pour changer l'interface :
Personnaliser le traitement JavaScript
Mettez à jour la fonction ws.onmessage pour gérer des types de données spécifiques :
Ajouter la mise en forme
Personnalisez le CSS de votre application :
Autres personnalisations
Au-delà de modifier l'interface web et l'intégration matérielle, vous pouvez également personnaliser l'apparence de votre application dans l'écosystème ESP32 WebApps de DIYables :
1. Personnaliser le chemin de l'application
Vous pouvez changer le chemin d'URL où votre application web personnalisée est accessible en modifiant le constructeur dans votre fichier d'en-tête :
Chemin par défaut:
Exemples de chemins personnalisés :
Notes importantes :
- Le chemin doit commencer par « / » : Commencez toujours votre chemin par une barre oblique
- Utilisez des noms descriptifs : Choisissez des chemins qui décrivent clairement la fonction de votre application
- Évitez les conflits : N'utilisez pas de chemins déjà pris par des applications intégrées telles que « /chat », « /monitor », « /plotter », etc.
- Utilisez des minuscules et des tirets : Suivez les conventions des URL Web pour une meilleure compatibilité
2. Personnaliser la carte d'application sur la page d'accueil
Vous pouvez personnaliser l'apparence de votre application sur la page d'accueil des WebApps ESP32 de DIYables en modifiant la méthode getNavigationInfo() dans votre fichier d'implémentation :
Carte d'application basique:
Carte d'application avancée avec CSS en ligne:
Gérer plusieurs applications Web personnalisées - Guide essentiel de prévention des conflits
Lors du développement de plusieurs applications web personnalisées, il est crucial d'éviter les conflits entre les différentes applications. Supposons que nous voulions ajouter trois applications personnalisées nommées "Temperature Monitor", "Motor Controller" et "Sensor Dashboard" à notre projet ESP32. Voici comment veiller à ce qu'elles fonctionnent ensemble harmonieusement :
1. Utiliser des identifiants d'application uniques
Chaque application web personnalisée doit disposer d'un identifiant unique pour éviter les conflits de messages :
Exemple : Application de surveillance de la température
Exemple : Application de contrôle du moteur
Exemple : Application de tableau de bord des capteurs
2. Utiliser des chemins de page uniques
Chaque application web nécessite un chemin d’URL unique :
3. Utiliser des noms de classes uniques
Évitez les conflits de nommage en utilisant des noms de classes descriptifs :
4. Organiser plusieurs applications dans un seul projet
Voici comment structurer un projet avec plusieurs applications personnalisées :
5. Bonnes pratiques pour plusieurs applications
Organisation des fichiers
Navigation entre les applications
Mettez à jour la méthode getNavigationInfo() dans chaque application pour faciliter la navigation :
6. Tests de plusieurs applications
Lorsque vous testez plusieurs applications :
- Testez d'abord chaque application individuellement
- Vérifiez le Moniteur série pour les conflits de messages
- Vérifiez que les identifiants uniques fonctionnent correctement
- Testez la navigation entre différentes applications
- Surveillez l'utilisation de la mémoire avec plusieurs applications chargées
En suivant ces lignes directrices, vous pouvez créer plusieurs applications Web personnalisées qui fonctionnent ensemble sans accroc et sans interférer les unes avec les autres ni avec d'autres ESP32 WebApps DIYables.