@ -7,6 +7,8 @@ Squelette d'application web pour ESP32 avec interface de gestion via dashboard w
@@ -7,6 +7,8 @@ Squelette d'application web pour ESP32 avec interface de gestion via dashboard w
- **Dashboard web responsive** - Interface utilisateur moderne et adaptative
- **Authentification sécurisée** - Système de login avec sessions et hash SHA-256
- **Configuration WiFi** - Mode Station et Point d'Accès automatique
- **Reconnexion WiFi automatique** - Détection de perte de connexion et reconnexion toutes les 30 secondes (WPA2-PSK et WPA2-PEAP)
- **WPA2-Enterprise PEAP** - Connexion PEAP (sans certificat) avec utilisateur/mot de passe (MSCHAPv2)
- **API REST** - Endpoints pour configuration, statistiques et changement de mot de passe
- **Gestion des mots de passe** - Changement sécurisé avec validation de l'ancien mot de passe
- **Mise à jour OTA** - Mise à jour du firmware et système de fichiers via web avec modales de confirmation
Si la connexion WiFi échoue ou n'est pas configurée, l'ESP32 démarre automatiquement en mode Point d'Accès (AP).
### Reconnexion automatique
Lorsque la connexion WiFi STA est perdue, l'ESP32 tente automatiquement de se reconnecter toutes les **30 secondes** :
- **WPA2-PSK** : `WiFi.setAutoReconnect(true)` gère la reconnexion en premier lieu ; la vérification périodique sert de fallback
- **WPA2-PEAP** : les credentials entreprise (`esp_wifi_sta_wpa2_ent_*`) sont réappliqués manuellement à chaque tentative
- En cas de succès, l'AP de secours (`<hostname>-setup`) est restauré automatiquement
## 📱 Interface Web
### Pages disponibles
@ -176,7 +187,36 @@ Tous les assets CSS, JS et HTML sont compressés automatiquement en gzip avant l
@@ -176,7 +187,36 @@ Tous les assets CSS, JS et HTML sont compressés automatiquement en gzip avant l
},
"wifi": {
"ssid": "Nom_du_réseau",
"security": "wpa2",
"password": "mot_de_passe_wifi",
"eap_username": "utilisateur_peap",
"eap_password": "mot_de_passe_peap",
"ap_password": "webapp123"
},
"system": {
"hostname": "ESP32-Webapp",
"session_timeout": 60
},
"params": {
"app_name": "ESP32 Webapp"
}
}
```
### Exemple sécurisé prêt à copier (WPA2-Enterprise PEAP)
```json
{
"auth": {
"username": "admin",
"password_hash": "hash_sha256_du_mot_de_passe"
},
"wifi": {
"ssid": "Mon-SSID-Entreprise",
"security": "wpa2_peap",
"password": "",
"eap_username": "prenom.nom",
"eap_password": "",
"ap_password": "webapp123"
},
"system": {
@ -189,6 +229,18 @@ Tous les assets CSS, JS et HTML sont compressés automatiquement en gzip avant l
@@ -189,6 +229,18 @@ Tous les assets CSS, JS et HTML sont compressés automatiquement en gzip avant l
}
```
Notes:
- Aucun certificat n'est requis pour ce mode PEAP.
- Le mode PEAP est configuré en auto avec authentification interne MSCHAPv2.
- Remplacez `eap_username` par votre identifiant entreprise.
- Laissez `eap_password` vide dans le fichier, puis saisissez-le uniquement dans l'interface web.
Procédure recommandée (sans secret en clair dans les fichiers):
1. Téléversez cette configuration avec `eap_password` vide.
2. Ouvrez la page Paramètres de l'ESP32.
3. Sélectionnez `WPA2-Enterprise PEAP`, saisissez l'utilisateur et le mot de passe PEAP.
4. Enregistrez : l'ESP32 redémarre et se connecte.
## 🛠️ Dépendances
- **ESPAsyncWebServer** - Serveur web asynchrone
@ -204,8 +256,10 @@ Tous les assets CSS, JS et HTML sont compressés automatiquement en gzip avant l
@@ -204,8 +256,10 @@ Tous les assets CSS, JS et HTML sont compressés automatiquement en gzip avant l
### L'ESP32 ne se connecte pas au WiFi
1. Vérifiez le SSID et le mot de passe dans la configuration
2. En mode WPA2-PEAP, vérifiez l'utilisateur/mot de passe PEAP
2. Assurez-vous que le réseau WiFi est en 2.4 GHz (l'ESP32 ne supporte pas le 5 GHz)
3. L'ESP32 passera automatiquement en mode AP si la connexion échoue
4. En cas de perte de connexion après démarrage, l'ESP32 retente automatiquement toutes les 30 secondes (visible dans les logs série : `WiFi déconnecté, tentative de reconnexion...`)
### Impossible de se connecter à l'interface web
@ -213,6 +267,18 @@ Tous les assets CSS, JS et HTML sont compressés automatiquement en gzip avant l
@@ -213,6 +267,18 @@ Tous les assets CSS, JS et HTML sont compressés automatiquement en gzip avant l
2. En mode AP, l'adresse est toujours `192.168.4.1`
3. En mode Station, trouvez l'IP dans les logs du moniteur série
4. Désactivez le cache du navigateur (Ctrl+F5)
5. En réseau entreprise (PEAP), un filtrage « client isolation » peut bloquer ping/HTTP entre clients WiFi
6. Utilisez l'AP de secours `ESP32-Webapp-setup` (ou `<hostname>-setup`) avec l'IP `192.168.4.1`
### Diagnostic rapide réseau (2 minutes)
1. Ouvrez le moniteur série et vérifiez `Serveur web démarré sur le port 80`
2. Depuis votre PC, testez l'endpoint de santé:
- en STA: `curl -v http://<ip_sta>/api/health`
- en AP de secours: `curl -v http://192.168.4.1/api/health`
3. Vérifiez les logs série:
- si vous voyez `HTTP GET /api/health depuis ...`, le trafic arrive bien
- si rien n'apparaît, le réseau filtre la communication vers l'ESP32