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>
This commit is contained in:
2026-05-23 14:58:24 +02:00
commit 7aa8cd2a1c
18 changed files with 5503 additions and 0 deletions
+54
View File
@@ -0,0 +1,54 @@
# feature.md — esp_jardin v1.0
## Fonctionnalités implémentées
### Acquisition des températures
- 3 sondes DS18B20 sur bus OneWire (GPIO 4) — adressage par index
- Acquisition non-bloquante : demande de conversion + attente 750 ms via `millis()`
- Fréquence : toutes les 10 secondes (configurable)
- Validation métrologique : valeurs 127.0°C (CRC fail) et 85.0°C (power-on) rejetées
- Précision affichée : 1 décimale (%.1f)
### Historique 24h en RAM
- Tampon circulaire de 288 points (structure `PointHistorique`)
- Empreinte mémoire : ~4.5 Ko sur 520 Ko SRAM (<1%)
- Les valeurs d'erreur sont stockées comme `NAN` pour discontinuer les courbes
### Connectivité réseau hybride
- **Mode STA** : connexion au réseau WiFi configuré, timeout 30s
- **Mode AP de secours** : point d'accès `ESP_CHEF_JARDIN` si STA échoue
- Reconnexion automatique STA non-bloquante (retry toutes les 30s / 60s en mode AP)
- **mDNS** : accessible via `http://esp_jardin.local`
- **OTA** : mise à jour firmware à distance, protégée par mot de passe
### Interface web temps réel
- Page unique servie depuis LittleFS (`data/index.html`)
- **WebSocket** : push JSON immédiat à chaque nouvelle acquisition
- **Graphique 24h** (Chart.js) : initialisé depuis `/api/history`, mis à jour en temps réel
- 3 cartes sondes avec valeur live, LED d'état, message d'erreur si sonde déconnectée
- Panneau statut système : WiFi / IP / RSSI / MQTT / RAM libre / uptime
- Console de configuration : intervalle + broker MQTT (appliqué en RAM)
- Bascule thème dark/light
- Responsive (grille adaptative sur mobile)
### API REST
| Endpoint | Description |
|---|---|
| `GET /api/status` | RSSI, uptime, RAM libre, mode AP, état MQTT |
| `GET /api/temperatures` | Températures instantanées des 3 sondes |
| `GET /api/history` | Historique complet 24h (288 points) |
| `POST /api/config` | Mise à jour intervalle + broker MQTT |
### Publication MQTT
- Client PubSubClient, reconnexion non-bloquante (retry toutes les 5s)
- Publication indépendante par sonde
- **Filtre deadband** : publish si `|ΔT| ≥ deadband` OU si `intervalle_max` dépassé
- Messages retain=true
- Valeurs d'erreur jamais publiées
## Hors scope v1
- Deep sleep / économie d'énergie
- NTP (timestamps relatifs `millis()`)
- Capteurs I2C (BH1750, SHT31), sol (ADC), relais, pluviomètre
- Authentification interface web
- Persistance de la configuration (redémarrage → retour aux valeurs par défaut)