7aa8cd2a1c
Spec, plan d'implémentation, design system, documentation de déploiement. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2.4 KiB
2.4 KiB
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
NANpour 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_JARDINsi 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| ≥ deadbandOU siintervalle_maxdé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)