commit ea80d83cee24761919cac0e93fa8f009cc4b19f3 Author: Serge NOEL Date: Fri Mar 13 14:20:44 2026 +0000 Initialisation depot diff --git a/README.md b/README.md new file mode 100644 index 0000000..c9666b9 --- /dev/null +++ b/README.md @@ -0,0 +1,23 @@ +# ESP32 Thermostat Configuration System + +Ce projet PlatformIO pour ESP32-WRoom propose : +- Un serveur Web pour configurer un thermostat interne +- Stockage des paramètres (WiFi, MQTT, consignes) en EEPROM +- Portail captif pour configuration initiale ou en cas de perte WiFi +- Code organisé en plusieurs fichiers .cpp/.h pour la maintenabilité + +## Structure suggérée +- src/main.cpp +- src/eeprom_manager.cpp/h +- src/wifi_manager.cpp/h +- src/web_server.cpp/h +- src/mqtt_manager.cpp/h +- src/thermostat.cpp/h + +## Instructions +1. Flasher sur ESP32-WRoom +2. Accéder au portail captif pour configurer le WiFi/MQTT si nécessaire +3. Accéder au serveur Web pour configurer le thermostat + +--- +Remplacez les placeholders par vos paramètres réels. diff --git a/platformio.ini b/platformio.ini new file mode 100644 index 0000000..d748b5b --- /dev/null +++ b/platformio.ini @@ -0,0 +1,5 @@ +[env:esp32dev] +platform = espressif32 +board = esp32dev +framework = arduino +monitor_speed = 115200 diff --git a/src/eeprom_manager.cpp b/src/eeprom_manager.cpp new file mode 100644 index 0000000..39f9dd3 --- /dev/null +++ b/src/eeprom_manager.cpp @@ -0,0 +1,14 @@ +#include "eeprom_manager.h" + +void EEPROMManager::begin() { + EEPROM.begin(512); +} + +void EEPROMManager::saveConfig() { + // TODO: Sauvegarder la configuration +} + +void EEPROMManager::loadConfig() { + // + +} diff --git a/src/eeprom_manager.h b/src/eeprom_manager.h new file mode 100644 index 0000000..791e153 --- /dev/null +++ b/src/eeprom_manager.h @@ -0,0 +1,9 @@ +#pragma once +#include + +class EEPROMManager { +public: + static void begin(); + static void saveConfig(); + static void loadConfig(); +}; diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..a5e8731 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,67 @@ +#include "eeprom_manager.h" +#include "wifi_manager.h" +#include "web_server.h" +#include "mqtt_manager.h" +#include "thermostat.h" + +// Modes allowed by thermostat +enum Mode { + MODE_OFF, MODE_ECO, MODE_COMFORT, MODE_HORSGEL, MODE_MANUAL +}; + +// Configuration structure, stored in EEPROM +struct Config { + int Initialized; // Flag to check if config is initialized 0=>not initialized, 1=initialized + char ssid[32]; + char password[32]; + char mqttServer[64]; + char mqttUser[32]; + char mqttPassword[32]; + int mqttPort; + Mode mode; +} config; + + +void setup() +{ + // wait for monitor to open (time to manually open the serial monitor after reset ) + delay(5000); + Serial.begin(115200); + Serial.println("Starting ESP Thermostat..."); + // Read configuration from EEPROM + EEPROMManager::loadConfig(config); + if (config.Initialized == 0) { + Serial.println("No configuration found, initializing with default values..."); + // Set default configuration + config.Initialized = 1; // Mark as initialized + strcpy(config.ssid, "ThermostatWiFi"); + strcpy(config.password, ""); + strcpy(config.mqttServer, "mqtt.example.com"); + strcpy(config.mqttUser, "mqtt_user"); + strcpy(config.mqttPassword, "mqtt_password"); + config.mqttPort = 1883; + config.mode = MODE_ECO; // Default mode + // Save default configuration to EEPROM + EEPROMManager::saveConfig(config); + } else { + Serial.println("Configuration loaded from EEPROM:"); + Serial.print("SSID: "); + Serial.println(config.ssid); + Serial.print("MQTT Server: "); + Serial.println(config.mqttServer); + } + // Initialisation des modules + EEPROMManager::begin(); + WiFiManager::begin(); + WebServerManager::begin(); + MQTTManager::begin(); + Thermostat::begin(); +} + +void loop() { + // Boucle principale + WiFiManager::handle(); + WebServerManager::handle(); + MQTTManager::handle(); + Thermostat::handle(); +} diff --git a/src/mqtt_manager.cpp b/src/mqtt_manager.cpp new file mode 100644 index 0000000..b2edcc3 --- /dev/null +++ b/src/mqtt_manager.cpp @@ -0,0 +1,9 @@ +#include "mqtt_manager.h" + +void MQTTManager::begin() { + // TODO: Initialiser MQTT +} + +void MQTTManager::handle() { + // TODO: Gérer la communication MQTT +} diff --git a/src/mqtt_manager.h b/src/mqtt_manager.h new file mode 100644 index 0000000..8054b2e --- /dev/null +++ b/src/mqtt_manager.h @@ -0,0 +1,8 @@ +#pragma once +#include + +class MQTTManager { +public: + static void begin(); + static void handle(); +}; diff --git a/src/thermostat.cpp b/src/thermostat.cpp new file mode 100644 index 0000000..1f89de4 --- /dev/null +++ b/src/thermostat.cpp @@ -0,0 +1,9 @@ +#include "thermostat.h" + +void Thermostat::begin() { + // TODO: Initialiser le thermostat +} + +void Thermostat::handle() { + // TODO: Gérer la logique du thermostat +} diff --git a/src/thermostat.h b/src/thermostat.h new file mode 100644 index 0000000..d57ad9e --- /dev/null +++ b/src/thermostat.h @@ -0,0 +1,7 @@ +#pragma once + +class Thermostat { +public: + static void begin(); + static void handle(); +}; diff --git a/src/web_server.cpp b/src/web_server.cpp new file mode 100644 index 0000000..80c0909 --- /dev/null +++ b/src/web_server.cpp @@ -0,0 +1,9 @@ +#include "web_server.h" + +void WebServerManager::begin() { + // TODO: Initialiser le serveur Web +} + +void WebServerManager::handle() { + // TODO: Gérer les requêtes Web +} diff --git a/src/web_server.h b/src/web_server.h new file mode 100644 index 0000000..1543b37 --- /dev/null +++ b/src/web_server.h @@ -0,0 +1,8 @@ +#pragma once +#include + +class WebServerManager { +public: + static void begin(); + static void handle(); +}; diff --git a/src/wifi_manager.cpp b/src/wifi_manager.cpp new file mode 100644 index 0000000..afb1cce --- /dev/null +++ b/src/wifi_manager.cpp @@ -0,0 +1,13 @@ +#include "wifi_manager.h" + +void WiFiManager::begin() { + // TODO: Initialiser le WiFi +} + +void WiFiManager::handle() { + // TODO: Gérer la connexion WiFi +} + +void WiFiManager::startCaptivePortal() { + // TODO: Démarrer le portail captif +} diff --git a/src/wifi_manager.h b/src/wifi_manager.h new file mode 100644 index 0000000..d3520a0 --- /dev/null +++ b/src/wifi_manager.h @@ -0,0 +1,9 @@ +#pragma once +#include + +class WiFiManager { +public: + static void begin(); + static void handle(); + static void startCaptivePortal(); +};