gilles d9d2db8b5e feat: interface web temps réel complète (WebSocket, Chart.js, thème Gruvbox Seventies)
Page auto-contenue LittleFS (31 Ko) : 3 cartes sondes temps réel, graphique 24h Chart.js,
panneau statut/config, bascule dark/light, status bar, reconnexion WS automatique, responsive.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 16:53:16 +02:00

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


Installation et premier flash

1. Configurer le WiFi

Éditer include/config.h :

#define WIFI_SSID  "VotreSSID"
#define WIFI_PASS  "VotreMotDePasse"

2. Configurer le broker MQTT (optionnel)

Dans include/config.h :

#define MQTT_BROKER  "192.168.1.x"   // IP du broker Mosquitto
#define MQTT_PORT    1883

3. Compiler et flasher

# 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 :

{ "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 :

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)

# 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 3439) 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
S
Description
No description provided
Readme 1.8 MiB
Languages
HTML 52%
C++ 23.8%
JavaScript 13.4%
CSS 8%
C 2.8%