# ESP32 Contrôleur Solaire pour Chauffe-Eau Application ESP32 avec serveur web, stockage LittleFS et mises à jour OTA. ## Fonctionnalités - ✅ Serveur web avec stockage HTML sur LittleFS - ✅ Protection par mot de passe (authentification SHA-256) - ✅ Page d'accueil "Hello World" à la racine - ✅ Interface de mise à jour OTA accessible via `/update.html` - ✅ Mise à jour du firmware via OTA - ✅ Mise à jour du filesystem via OTA - ✅ Support ArduinoOTA pour mise à jour via l'IDE ## Configuration ### 1. Modifier les identifiants WiFi Éditez `src/main.cpp` et modifiez les lignes suivantes: ```cpp const char* ssid = "VotreSSID"; // Votre nom de réseau WiFi const char* password = "VotreMotDePasse"; // Votre mot de passe WiFi ``` ### 2. Configuration OTA (optionnel) ```cpp const char* otaHostname = "ESP32-Controleur-Solaire"; // Nom de l'appareil sur le réseau const char* otaPassword = "admin"; // Mot de passe pour OTA via IDE ``` ### 3. Configuration de l'authentification web Par défaut, l'accès au serveur web est protégé par mot de passe: - **Utilisateur**: `admin` - **Mot de passe**: `password` #### Changer le mot de passe: 1. **Générer le hash SHA-256 de votre nouveau mot de passe:** Sous Linux/Mac: ```bash echo -n "votre_nouveau_mot_de_passe" | sha256sum ``` Sous Windows (PowerShell): ```powershell $stringAsStream = [System.IO.MemoryStream]::new() $writer = [System.IO.StreamWriter]::new($stringAsStream) $writer.write("votre_nouveau_mot_de_passe") $writer.Flush() $stringAsStream.Position = 0 Get-FileHash -InputStream $stringAsStream -Algorithm SHA256 | Select-Object Hash ``` Ou utilisez un outil en ligne: https://emn178.github.io/online-tools/sha256.html 2. **Éditer le fichier `data/config.json`:** ```json { "auth": { "username": "admin", "password_hash": "VOTRE_NOUVEAU_HASH_ICI" } } ``` 3. **Re-uploader le filesystem:** ```bash platformio run --target uploadfs ``` **⚠️ Important**: Le mot de passe est stocké sous forme de hash SHA-256 dans le fichier de configuration pour plus de sécurité. ## Installation ### Première installation (câble USB) 1. **Compiler et uploader le code:** ```bash platformio run --target upload ``` 2. **Uploader le filesystem LittleFS:** ```bash platformio run --target uploadfs ``` ### Mises à jour ultérieures #### Via l'interface web `/update.html`: 1. Accédez à `http://[IP_de_votre_ESP]/update.html` 2. Sélectionnez le fichier `.bin` approprié: - **Firmware**: `.pio/build/esp32/firmware.bin` - **Filesystem**: `.pio/build/esp32/littlefs.bin` 3. Cliquez sur le bouton d'upload correspondant #### Via ArduinoOTA (depuis PlatformIO): ```bash # Mise à jour du firmware platformio run --target upload --upload-port [IP_de_votre_ESP] # Mise à jour du filesystem platformio run --target uploadfs --upload-port [IP_de_votre_ESP] ``` ## Structure du projet ``` esp32_controleur_solaire/ ├── platformio.ini # Configuration PlatformIO ├── src/ │ └── main.cpp # Code principal ├── data/ # Fichiers pour LittleFS │ ├── config.json # Configuration (hash du mot de passe) │ ├── index.html # Console principale (tout CSS inclus inline) │ ├── login.html # Page de connexion (tout CSS inclus inline) │ ├── update.html # Interface de mise à jour OTA (tout CSS inclus inline) │ └── settings.html # Page de configuration (tout CSS inclus inline) ├── include/ ├── lib/ └── test/ ``` ## URLs disponibles - **http://[IP]/login** - Page de connexion - **http://[IP]/** - Console principale (protégée) - **http://[IP]/settings.html** - Configuration (protégée) - **http://[IP]/update.html** - Interface de mise à jour OTA (protégée) - **http://[IP]/logout** - Déconnexion **Note**: Toutes les pages sauf `/login` nécessitent une authentification. ## Moniteur série Pour voir les logs de démarrage: ```bash platformio device monitor ``` Vous verrez: - L'adresse IP attribuée - Le statut de montage de LittleFS - Les informations de connexion WiFi - Les événements OTA ## Dépannage ### Impossible de se connecter (authentification) - Vérifiez les identifiants par défaut: `admin` / `password` - Assurez-vous que le fichier `config.json` a été uploadé avec le filesystem - Vérifiez les logs série pour confirmer que la configuration a été chargée - Effacez les cookies de votre navigateur et réessayez ### LittleFS ne monte pas - Assurez-vous d'avoir uploadé le filesystem avec `uploadfs` - Vérifiez que `board_build.filesystem = littlefs` est dans `platformio.ini` ### Impossible de se connecter au WiFi - Vérifiez les identifiants WiFi dans `main.cpp` - Vérifiez la force du signal WiFi ### OTA ne fonctionne pas - Vérifiez que l'ESP et votre ordinateur sont sur le même réseau - Vérifiez le mot de passe OTA si vous utilisez ArduinoOTA - Assurez-vous que le port 8266 n'est pas bloqué par un pare-feu ### Style CSS - Tous les styles sont désormais inclus directement dans chaque fichier HTML (``). - Le fichier `style.css` a été supprimé, il n'est plus nécessaire. ## Licence MIT