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:
+54
@@ -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)
|
||||
Reference in New Issue
Block a user