Files
esp_jardin/README.md
T
gilles 7aa8cd2a1c init: structure initiale du projet esp_jardin
Spec, plan d'implémentation, design system, documentation de déploiement.

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

186 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 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` |