# ESP Jardin — Station de monitoring environnemental Firmware ESP32 pour une station d'acquisition de températures avec interface web temps réel, API REST et publication MQTT. --- ## Matériel requis | Composant | Quantité | Notes | |---|---|---| | ESP32 DevKit V1 | 1 | ou équivalent 38 broches | | Sonde DS18B20 | 3 | waterproof recommandé | | Résistance 4.7 kΩ | 1 | pull-up obligatoire | | Câbles Dupont | — | | ### Câblage ``` DS18B20 (×3 en parallèle) VCC → 3.3V GND → GND DATA → GPIO 4 Résistance 4.7 kΩ entre 3.3V et GPIO 4 (pull-up) ``` > **Important :** Sans la résistance pull-up, les sondes retournent systématiquement −127°C. --- ## Prérequis logiciels - [VS Code](https://code.visualstudio.com/) + extension [PlatformIO](https://platformio.org/) - Python 3 (requis par PlatformIO) --- ## Installation et premier flash ### 1. Configurer le WiFi Éditer `include/config.h` : ```cpp #define WIFI_SSID "VotreSSID" #define WIFI_PASS "VotreMotDePasse" ``` ### 2. Configurer le broker MQTT (optionnel) Dans `include/config.h` : ```cpp #define MQTT_BROKER "192.168.1.x" // IP du broker Mosquitto #define MQTT_PORT 1883 ``` ### 3. Compiler et flasher ```bash # Flash du firmware pio run -t upload # Flash de l'interface web (LittleFS) pio run -t uploadfs # Moniteur série (débogage) pio device monitor ``` ### 4. Vérifier le boot ``` [BOOT] esp_jardin v1.0 — démarrage... [WIFI] Connexion STA → SSID: VotreSSID [WIFI] Connecté — IP: 192.168.1.42 [mDNS] Accessible via http://esp_jardin.local [OTA] Prêt [FS] LittleFS monté [HTTP] Serveur web démarré sur port 80 [SONDES] 3 capteur(s) DS18B20 détecté(s) sur GPIO 4 ``` --- ## Accès à l'interface Une fois connecté à votre réseau : ``` http://esp_jardin.local # Via mDNS http://192.168.1.42 # Via IP directe ``` --- ## Mode Access Point de secours Si le WiFi est indisponible au démarrage, l'ESP crée automatiquement un point d'accès : | Paramètre | Valeur | |---|---| | SSID | `ESP_CHEF_JARDIN` | | Mot de passe | `Jardin2026` | | IP de l'interface | `192.168.4.1` | L'interface web reste accessible. Le broker MQTT est désactivé en mode AP. L'ESP tente de se reconnecter au WiFi STA toutes les 60 secondes. --- ## API REST | Méthode | Endpoint | Description | |---|---|---| | GET | `/api/status` | État système (WiFi, MQTT, RAM, uptime) | | GET | `/api/temperatures` | Températures instantanées | | GET | `/api/history` | Historique 24h (288 points) | | POST | `/api/config` | Mise à jour configuration | **Exemple `/api/temperatures` :** ```json { "sonde_1": "19.3", "sonde_2": "28.7", "sonde_3": null, "unit": "C" } ``` `null` = sonde en erreur ou déconnectée. **Exemple POST `/api/config` :** ```bash curl -X POST http://esp_jardin.local/api/config \ -H "Content-Type: application/json" \ -d '{"intervalleMs": 5000, "mqttBroker": "10.0.0.3", "mqttPort": 1883}' ``` --- ## MQTT Topics publiés (retain=true) : | Sonde | Topic | Deadband | |---|---|---| | T°C Extérieur | `maison/jardin/ext/temperature` | 0.2°C | | T°C Serre | `maison/jardin/serre/temperature` | 0.1°C | | T°C Sol | `maison/jardin/sol/temperature` | 0.1°C | Payload : valeur numérique en string, ex : `"19.3"`. Les erreurs ne sont jamais publiées. --- ## Mise à jour OTA (après déploiement) ```bash # Remplacer 192.168.1.42 par l'IP réelle de la carte pio run -t upload --upload-port 192.168.1.42 # Mot de passe OTA : Jardin2026 ``` Le mot de passe OTA peut être changé dans `include/config.h` (`OTA_PASS`) et `platformio.ini` (`upload_flags = --auth=...`). --- ## GPIO disponibles pour extensions futures | GPIO | Usage futur | Interface | |---|---|---| | 21 / 22 | Capteur BH1750 (luminosité) ou SHT31 (T°/Humidité) | I2C | | 32 / 33 | Capteur humidité sol | ADC1 (compatible WiFi) | | 25 / 26 | Relais / électrovanne | Digital out | | 14 | Pluviomètre à augets | Interruption | | 27 | Bouton reset / forçage AP | Interruption | > **Ne jamais utiliser ADC2** (GPIO 34–39) quand le WiFi est actif — conflit hardware ESP32. --- ## Dépannage | Symptôme | Cause probable | Solution | |---|---|---| | Sonde affiche −127°C | Résistance pull-up absente ou câble défectueux | Vérifier la résistance 4.7 kΩ sur GPIO 4 | | Sonde affiche 85.0°C | Sonde en court-circuit ou alimentation insuffisante | Vérifier l'alimentation 3.3V | | Interface web inaccessible | LittleFS non flashé | `pio run -t uploadfs` | | `esp_jardin.local` ne répond pas | mDNS non supporté sur certains réseaux | Utiliser l'IP directe | | OTA échoue | Mauvais mot de passe | Vérifier `OTA_PASS` dans `config.h` |