Référence API de la bibliothèque DIYables ESP32 WebApps pour Arduino Nano ESP32
Vue d'ensemble
Cette page documente l'API complète de la bibliothèque DIYables ESP32 WebApps telle qu'utilisée sur la carte Arduino Nano ESP32. La bibliothèque suit une architecture modulaire — chaque application web est une classe autonome que vous enregistrez avec le serveur. N'incluez que les classes de pages dont votre projet a besoin ; les classes inutilisées ne consomment pas de flash ni de RAM.
La bibliothèque gère la connexion WiFi, le service HTTP et la communication WebSocket. Votre sketch interagit avec elle entièrement via des callbacks et des méthodes d'envoi.
Capacités de la bibliothèque
- Système de pages modulaire : Enregistrez uniquement les applications dont vous avez besoin ; chacune est indépendante
- Mémoire contrôlée : L'inclusion par application signifie que vous contrôlez l'utilisation du flash et de la RAM
- 11 applications web intégrées : Prêtes à l'emploi sans programmation web
- Classe de base extensible : Dérivez de DIYablesWebAppPageBase pour créer des pages personnalisées
- Conception WebSocket-first : Tous les échanges de données en temps réel utilisent WebSocket sur le port 81
- Interface responsive : Toutes les pages intégrées fonctionnent sur ordinateur, tablette et mobile
- API basée sur les callbacks : Enregistrement de fonctions simple — pas de polling requis
- Support d'applications simultanées : Plusieurs pages peuvent s'exécuter simultanément sur un seul serveur
Classes principales
DIYablesWebAppServer
La classe serveur centrale. Elle gère le routage HTTP, les connexions WebSocket et distribue les messages entrants au gestionnaire de page enregistré correct.
Constructeur
Instancie le serveur avec les numéros de ports donnés.
- httpPort : Port pour les requêtes HTTP (par défaut : 80)
- websocketPort : Port pour les connexions WebSocket (par défaut : 81)
Méthodes de connexion
Démarre le serveur en supposant que le WiFi ou Ethernet est déjà configuré en externe.
- Retourne : true en cas de succès, false en cas d'échec
Se connecte au WiFi avec les identifiants fournis, puis démarre les serveurs HTTP et WebSocket.
- ssid : Nom du réseau
- password : Mot de passe du réseau
- Retourne : true en cas de succès, false en cas d'échec
Traite les requêtes HTTP en attente et les événements WebSocket. Appelez ceci dans loop() à chaque itération.
Retourne true quand la carte a une connexion WiFi active.
Retourne l'adresse IP actuelle de la carte sous forme de String.
Enregistrement des pages
Enregistre une instance de page avec le serveur. Le chemin URL de la page est défini dans son constructeur.
- app : Pointeur vers un objet de page
Désenregistre la page au chemin URL donné.
- path : Chaîne de chemin (par ex., "/chat")
Retourne un pointeur vers la page enregistrée au chemin donné, ou nullptr si introuvable.
Assigne une page 404 personnalisée affichée quand aucune page enregistrée ne correspond à une requête.
Accesseurs de pages typées
Retourne la page de broches numériques enregistrée, ou nullptr si non ajoutée.
Retourne la page de curseur enregistrée, ou nullptr si non ajoutée.
Retourne la page de joystick enregistrée, ou nullptr si non ajoutée.
Classe de base
DIYablesWebAppPageBase
Toutes les classes de pages intégrées et personnalisées étendent cette base abstraite. Elle fournit des utilitaires de réponse HTTP, la diffusion WebSocket et des crochets de cycle de vie des pages.
Constructeur
Enregistre la page sous le chemin URL spécifié.
- pagePath : Route URL pour cette page (par ex., "/web-joystick")
Méthodes abstraites — Requises dans les pages personnalisées
Invoquée quand un navigateur demande cette page via HTTP.
- client : Interface pour écrire la réponse HTTP
Invoquée quand un message WebSocket arrive et que son préfixe correspond à cette page.
- ws : La connexion WebSocket qui a envoyé le message
- message : Contenu brut du message
- length : Longueur en octets du message
Retourne une courte chaîne d'étiquette affichée dans la sortie de démarrage du Moniteur Série (par ex., "🕹️ Web Joystick: ").
Retourne un fragment HTML pour la carte de cette page sur la page d'accueil.
Méthodes de substitution optionnelles
Appelée quand un nouveau client WebSocket se connecte. Substituez pour envoyer l'état initial.
Appelée quand un client WebSocket se déconnecte.
Méthodes utilitaires
Retourne le chemin URL enregistré de cette page.
Retourne true si cette page est active et répondra aux requêtes.
Active ou désactive la page sans la retirer du serveur.
Écrit les en-têtes HTTP standard 200 OK vers le client.
Envoie un message à une seule connexion WebSocket.
Délivre un message à chaque client WebSocket actuellement connecté.
Transmet de grandes charges utiles HTML en utilisant l'encodage de transfert fragmenté.
Exemple de page personnalisée
Classes de pages intégrées
DIYablesHomePage
Hub de navigation listant toutes les applications enregistrées.
Constructeur
URL
- /
---
DIYablesWebChatPage
Messagerie texte bidirectionnelle entre le navigateur et la carte.
Constructeur
URL
- /webchat
Méthodes
Enregistre un gestionnaire invoqué chaque fois que le navigateur envoie un message de chat.
Pousse un message de la carte vers la vue de chat du navigateur.
---
DIYablesWebMonitorPage
Moniteur série accessible par navigateur pour la journalisation de sortie et la saisie de commandes.
Constructeur
URL
- /webmonitor
Méthodes
Enregistre un gestionnaire invoqué quand le navigateur envoie une commande.
Envoie un message de journal de la carte vers le moniteur du navigateur.
---
DIYablesWebDigitalPinsPage
Interface web pour lire et écrire les broches numériques 0–13.
Constructeur
URL
- /webdigitalpins
Méthodes
Rend la broche visible et contrôlable dans l'interface web.
- pin : Numéro de broche (0–13)
- mode : WEB_PIN_OUTPUT ou WEB_PIN_INPUT
Gestionnaire appelé quand le navigateur bascule une broche de sortie. Reçoit (broche, état).
Gestionnaire appelé quand le navigateur demande l'état d'une broche d'entrée. Retourne l'état actuel.
Gestionnaire appelé quand le navigateur change la direction d'une broche.
Pousse un état de broche mis à jour vers tous les clients navigateurs connectés.
---
DIYablesWebSliderPage
Double curseur à plage 0–255 adapté au contrôle PWM et analogique.
Constructeur
URL
- /webslider
Méthodes
Gestionnaire appelé quand l'un ou l'autre curseur se déplace. Reçoit (slider1, slider2) dans la plage 0–255.
Gestionnaire appelé quand un navigateur nouvellement connecté demande les positions actuelles des curseurs.
Pousse les valeurs des curseurs vers le navigateur, mettant à jour les positions affichées.
---
DIYablesWebJoystickPage
Joystick virtuel 2D retournant les coordonnées X/Y pour le contrôle directionnel.
Constructeur
- autoReturn : Quand true, le joystick revient au centre à la libération
- sensitivity : Pourcentage de déplacement minimum requis avant l'envoi d'une mise à jour
URL
- /webjoystick
Méthodes
Gestionnaire invoqué lors du mouvement du joystick. Reçoit (x, y) chacun dans la plage –100 à +100.
Gestionnaire appelé quand un navigateur demande la position actuelle du joystick.
Envoie la position actuelle du joystick aux navigateurs connectés.
Met à jour le comportement de retour au centre automatique à l'exécution.
Met à jour le seuil de sensibilité de mouvement à l'exécution.
---
DIYablesWebPlotterPage
Traceur de données en continu prenant en charge jusqu'à 8 séries de données simultanées.
Constructeur
URL
- /webplotter
Méthodes
Définit le titre du graphique affiché au-dessus du tracé.
Définit les étiquettes des axes X et Y.
Quand true, la plage de l'axe Y s'ajuste automatiquement aux données entrantes.
Limite le nombre de points de données conservés par série avant que les points plus anciens soient supprimés.
Ajoute un seul point (x, y) à la série nommée.
Supprime toutes les données de toutes les séries.
---
DIYablesNotFoundPage
Page de réponse 404 optionnelle affichée pour les routes non enregistrées.
Constructeur
Utilisation de base
Le sketch suivant démontre l'ajout d'une page de chat et de moniteur à un projet Arduino Nano ESP32 :
Référence des URL d'application web
| Application | URL par défaut | |
|---|---|---|
| Page d'accueil | http | //[board-ip]/ |
| Chat | http | //[board-ip]/webchat |
| Moniteur web | http | //[board-ip]/webmonitor |
| Broches numériques | http | //[board-ip]/webdigitalpins |
| Curseur | http | //[board-ip]/webslider |
| Joystick | http | //[board-ip]/webjoystick |
| Traceur | http | //[board-ip]/webplotter |
Protocole WebSocket
Toute la communication en temps réel passe par un seul serveur WebSocket sur le port 81.
- Point de terminaison WebSocket : ws://[board-ip]:81
- Reconnexion : Les navigateurs se reconnectent automatiquement en cas de déconnexion
- Format des messages : Basé sur le texte ; chaque application intégrée utilise un préfixe unique pour identifier ses messages
Modèles de messages par application
Chat — texte brut dans les deux sens
Moniteur — texte brut dans les deux sens
Broches numériques
- Navigateur → Carte : {"pin": 13, "state": 1}
- Carte → Navigateur : {"pin": 13, "state": 1}
Curseur
- Navigateur → Carte : {"slider1": 128, "slider2": 255}
- Carte → Navigateur : {"slider1": 128, "slider2": 255}
Joystick
- Navigateur → Carte : {"x": 50, "y": -25}
- Carte → Navigateur : {"x": 50, "y": -25}