You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3.3 KiB
3.3 KiB
Spécifications générales
- Contexte: Application ESP32
- Stack: Arduino C++, ESPAsyncWebServer, LittleFS
- Carte: ESP32
- Interface: Dashboard web responsive
- Fonctionnalités clés: Gestion GPIO, OTA, WiFi/AP, Authentification, API REST
Arborescence des fichiers
src/
├── main.cpp [Point d'entrée]
├── auth.h/cpp [Authentification]
├── server.h/cpp [API endpoints]
└── utils.h/cpp [Helpers]
data/
├── config.json [Config par défaut]
├── index.html [Dashboard]
├── login.html [Page de login]
├── settings.html [Paramètres]
├── update.html [Mise à jour OTA]
└── js/
├── api.js [Client API]
└── app.js [UI logic]
└── css/
└── styles.css [Styles CSS]
Spécificités ESP32
- Framework: Arduino
- Système de fichiers: LittleFS
- Utilisation de platformio pour la gestion des dépendances et le build
[env:esp32]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
board_build.filesystem = littlefs
board_build.partitions = default.csv
lib_deps =
ESP32Async/ESPAsyncWebServer
ESP32Async/AsyncTCP
bblanchon/ArduinoJson@^7.0.0
build_flags =
-DBOARD_HAS_PSRAM
Spécificités dashboard web
- Pages: Login, Dashboard, Paramètres, Mise à jour OTA
- Technologies: HTML5, CSS3, JavaScript (Fetch API)
- Sécurité: Sessions avec cookies, redirection vers login si non authentifié
- Gestion des erreurs: Messages utilisateur clairs et en français
- Responsive: Adapté aux mobiles et tablettes
Spécificités stockage fichiers
- Système de fichiers: LittleFS
- Fichiers: HTML, CSS, JS, config.json
- Accès: Lecture seule pour fichiers web, lecture/écriture pour config.json
- Création d'une config.json par défaut si absente au démarrage
- Pas de fichiers compressés pour compatibilité avec LittleFS
Fonctionnalités OTA
- Mise à jour via interface web ou via espota
- Mise à jour firmware et système de fichiers depuis interface web
Spécificités API REST
- Endpoints: /api/config, /api/stats
- Sécurité: Authentification requise pour endpoints protégés
- Réponses: Statuts HTTP et messages d'erreur clairs
Spécificités Authentification
- Stockage: Nom d'utilisateur et hash SHA-256 du mot de passe dans config.json
- Sécurité: Sessions avec timeout configurable
- Gestion des sesssions avec cookies
- Redirection vers page de login si non authentifié
- Appel GET vers /logout pour déconnexion et /login pour connexion
Spécificités wifi
- Modes: Station (client) et Point d'accès (AP) si absence de réseau et/ou paramètres non configurés
- Sécurité: WPA2 pour Station et pour AP
- Configuration: Via interface web ou fichier config.json
Spécificités logs
- Sortie série pour debug en français
- Niveau de log configurable (DEBUG, INFO, WARN, ERROR)
Format de configuration (config.json)
{
"auth": {
"username": "admin",
"password_hash": "SHA-256"
},
"wifi": {
"ssid": "Réseau WiFi",
"password": "***",
"ap_password": "Mode AP pwd"
},
"system": {
"hostname": "WEBAPP",
"session_timeout": 60, // minutes
},
"params": {
}
}