Files
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

55 lines
2.4 KiB
Markdown
Raw Permalink 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.
# 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)