#include "serial.h" #include "secret.h" #include "tic.h" #include #include #include #include #include // Activer le Wi-Fi #define WIFI_ENABLE // Initialiser le serveur web si le Wi-Fi est activé ESP8266WebServer server(HTTP_PORT); unsigned long ota_progress_millis = 0; void onOTAStart() { // Log when OTA has started Serial.println("OTA update started!"); // } void onOTAProgress(size_t current, size_t final) { // Log every 1 second if (millis() - ota_progress_millis > 1000) { ota_progress_millis = millis(); Serial.printf("OTA Progress Current: %u bytes, Final: %u bytes\n", current, final); } } void onOTAEnd(bool success) { // Log when OTA has finished if (success) { Serial.println("OTA update finished successfully!"); } else { Serial.println("There was an error during OTA update!"); } // } // Fonction pour configurer et connecter au réseau Wi-Fi void setup_wifi() { delay(10); // Connexion au réseau Wi-Fi DebugPort.println(); DebugPort.print("Connecting to "); DebugPort.println(ssid); WiFi.mode(WIFI_STA); WiFi.begin(ssid, passPhrase); int c = 0; // Attendre la connexion Wi-Fi while (WiFi.status() != WL_CONNECTED) { delay(500); DebugPort.print("."); } DebugPort.println(""); DebugPort.println("WiFi connected"); DebugPort.println("IP address: "); DebugPort.println(WiFi.localIP()); } // Fonction pour obtenir les paramètres réseau et matériels void getSettings() { String response = "{"; // Ajouter les informations réseau à la réponse JSON response += "\"ip\": \"" + WiFi.localIP().toString() + "\""; response += ",\"gw\": \"" + WiFi.gatewayIP().toString() + "\""; response += ",\"nm\": \"" + WiFi.subnetMask().toString() + "\""; // Ajouter l'intensité du signal Wi-Fi si demandé if (server.arg("signalStrength") == "true") { response += ",\"signalStrengh\": \"" + String(WiFi.RSSI()) + "\""; } // Ajouter les informations matérielles si demandé if (server.arg("chipInfo") == "true") { response += ",\"chipId\": \"" + String(ESP.getChipId()) + "\""; response += ",\"flashChipId\": \"" + String(ESP.getFlashChipId()) + "\""; response += ",\"flashChipSize\": \"" + String(ESP.getFlashChipSize()) + "\""; response += ",\"flashChipRealSize\": \"" + String(ESP.getFlashChipRealSize()) + "\""; } // Ajouter la mémoire libre disponible si demandé if (server.arg("freeHeap") == "true") { response += ",\"freeHeap\": \"" + String(ESP.getFreeHeap()) + "\""; } response += "}"; // Envoyer la réponse JSON au client server.send(200, "text/json", response); } // Fonction pour obtenir les données TIC complètes void getTicData() { String response = ticValuesAsJson(); server.send(200, "text/json", response.c_str()); } // Fonction pour obtenir les données TIC de base void getTicBasicData() { String response = ticBasicValuesAsJson(); server.send(200, "text/json", response.c_str()); } // Définir les routes du serveur REST void restServerRouting() { server.on("/", HTTP_GET, []() { server.send(200, F("text/html"), F("Welcome to the REST Web Server")); }); server.on(F("/settings"), HTTP_GET, getSettings); server.on(F("/ticdata"), HTTP_GET, getTicData); server.on(F("/ticbasic"), HTTP_GET, getTicBasicData); } // Fonction pour configurer la communication série void setup_serial() { //debug interface //there is only RX on Serial 0 interface //As the port is shared with usb debug, need to readress it //thanks to swap. //The speed is not appropriate for debug. //Debug serial port is on Serial 1, TX only DebugPort.begin(TIC_SPEED, SERIAL_7E1); // Interface d'acquisition des données #ifdef TIC TicPort.begin(TIC_SPEED, SERIAL_7E1); Serial.swap(); #else TicPort.begin(DEBUG_SPEED); #endif } // Fonction d'initialisation principale void setup() { setup_serial(); #ifdef WIFI_ENABLE setup_wifi(); // Configurer les routes du serveur restServerRouting(); ElegantOTA.begin(&server); // ElegantOTA callbacks ElegantOTA.onStart(onOTAStart); ElegantOTA.onProgress(onOTAProgress); ElegantOTA.onEnd(onOTAEnd); // Démarrer le serveur HTTP DebugPort.println("Start HTTP server"); server.begin(); DebugPort.println("HTTP server started"); #endif } // Boucle principale void loop() { ElegantOTA.loop(); server.handleClient(); readTicPort(); /* // Si aucune requête n'est en cours, mettre l'ESP8266 en mode deep sleep if (server.client().available() == 0) { goToDeepSleep(); }*/ }