Commit Graph

14 Commits

Author SHA1 Message Date
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