17 Commits

Author SHA1 Message Date
gilles b075d04706 Initial release 1.2.2 2026-05-24 13:05:18 +02:00
gilles 87d33b41c7 feat: gestion WiFi — NVS credentials + scan + UI Gruvbox
- network.h/.cpp : lecture credentials NVS (Preferences) au boot,
  fallback config.h si vide ; network_get_ssid() et
  network_save_credentials() exposés
- web_server.cpp : 3 nouvelles routes REST
    GET /api/wifi/current  → SSID/IP/RSSI/modeAP
    GET /api/wifi/networks → scan async + polling état
    POST /api/wifi/connect → sauvegarde NVS + ESP.restart()
- index.html : modal WiFi (réseau actuel, liste scannée avec
  barres signal ▁▂▃▄▅ + cadenas, formulaire SSID/mdp,
  bouton œil, message redémarrage avec lien esp_jardin.local)
  design Gruvbox Seventies cohérent avec le reste

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 20:34:46 +02:00
gilles 22e379962c fix: upload_flags --auth incompatible esptool USB, commentaire OTA
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 20:15:40 +02:00
gilles f75d35ae5b fix: dégradation gracieuse Chart.js CDN, WS cleanup, guards null
- C1: guard typeof Chart === 'undefined' dans initChart(), handler onerror
  sur le tag <script> CDN, message fallback "Graphique indisponible"
- C1: guards if(!chartInst) return dans ajouterPointChart(), chargerHistorique(),
  traiterMessageWS(), mettreAJourCouleursFond()
- I1: nettoyage ws.close() en début de connecterWS() avant toute reconnexion
- I3: guard if(!chartInst) au début du .then() de chargerHistorique()
- I4: tooltip backgroundColor remplacé par cssVar('--bg-3') (plus hardcodé)
- M2: sec = sec || 0 dans fmtUptime(), b = b || 0 dans fmtRam()
- M3: emoji ☀️ remplacé par ☼ (U+263C, caractère texte pur)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 16:58:42 +02:00
gilles d9d2db8b5e feat: interface web temps réel complète (WebSocket, Chart.js, thème Gruvbox Seventies)
Page auto-contenue LittleFS (31 Ko) : 3 cartes sondes temps réel, graphique 24h Chart.js,
panneau statut/config, bascule dark/light, status bar, reconnexion WS automatique, responsive.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 16:53:16 +02:00
gilles cd8232bafb feat: module MQTT complet + mutex xSondesMutex thread-safety
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 16:49:31 +02:00
gilles 4854faa027 feat: module MQTT — PubSubClient, deadband, reconnexion non-bloquante
Implémente mqtt_manager.h/.cpp : connexion sans authentification si
MQTT_USER vide, filtre deadband par sonde, retain=true, jamais de
valeur d'erreur publiée. Intégration dans main.cpp (mqtt_init/update).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 16:45:01 +02:00
gilles 49c54f4e48 fix: mutex FreeRTOS buffer historique, découplage LittleFS/REST
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 16:43:05 +02:00
gilles 29f26c1db4 fix: températures en JSON string plutôt que nombre (spec conforme)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 16:38:01 +02:00
gilles 3d21c8dc78 feat: serveur web HTTP + WebSocket, API REST complète (status/temperatures/history/config)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 16:31:48 +02:00
gilles bb913bc3ab feat: module capteurs DS18B20 — acquisition non-bloquante, buffer circulaire 24h
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 16:28:47 +02:00
gilles 3a44cc41e0 fix: réseau — modeAP reset dans _demarrerSTA, MDNS.end() avant begin, rssi=0 en AP
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 16:26:58 +02:00
gilles d180f72bbe feat: module réseau WiFi STA/AP, mDNS, OTA
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 16:24:23 +02:00
gilles 9aac0f1b94 feat: structures globales config.h + main.cpp initial
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 16:20:50 +02:00
gilles 75938b9956 fix: version ArduinoJson ^7.2, commentaire platformio.ini
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 16:19:16 +02:00
gilles 1871394783 feat: configuration platformio + parametrage initial
- Ajout des dépendances libs (ESPAsyncWebServer, AsyncTCP, OneWire, DallasTemperature, PubSubClient, ArduinoJson)
- Configuration LittleFS pour le système de fichiers
- Ajout des flags de compilation et d'upload (auth=Jardin2026)
- Création de parametrage.md contenant les paramètres initiaux des sondes, WiFi et MQTT

Compilation : SUCCESS (955692 bytes en Flash, 45560 bytes en RAM utilisés)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 16:15:26 +02:00
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