#include #include #include const char *ssid = "AndroidAP"; const char *password = "automne52"; WebServer server(80); const int PinLight = A0; const int PinTemp = A1; const int led = 4; bool etatLed = 0; int speed = 1000; // Définir la taille maximale des données à stocker (5 dernières minutes à un taux d'échantillonnage de 1 mesure par seconde) const int maxDataPoints = 300; // Utiliser une double file d'attente pour stocker les valeurs de lumière et de température std::deque lightData; std::deque tempData; void handleRoot() { // Lire les valeurs de la lumière et de la température int valeurLumiere = analogRead(PinLight); int valeurTemperature = analogRead(PinTemp); // Convertir les valeurs en intensité lumineuse et température float LightIntensity = 100 - (map(valeurLumiere, 300, 4095, 0, 100)); float TempIntensity = 100 - (valeurTemperature - (-40.0)) * (125.0 - 0.0) / (3750.0 - (-40.0)) + 0.0; // Ajouter les nouvelles données à la file d'attente lightData.push_back(LightIntensity); tempData.push_back(TempIntensity); // Supprimer les données les plus anciennes si la file d'attente dépasse la taille maximale if (lightData.size() > maxDataPoints) lightData.pop_front(); if (tempData.size() > maxDataPoints) tempData.pop_front(); // Générer les labels pour les graphiques String lightLabels = "["; String tempLabels = "["; for (int i = 0; i < lightData.size(); i++) { lightLabels += "'" + String(i) + "',"; tempLabels += "'" + String(i) + "',"; } lightLabels.remove(lightLabels.length() - 1); // Supprimer la virgule finale tempLabels.remove(tempLabels.length() - 1); // Supprimer la virgule finale lightLabels += "]"; tempLabels += "]"; // Générer les données pour les graphiques String lightValues = "["; String tempValues = "["; for (int i = 0; i < lightData.size(); i++) { lightValues += String(lightData[i]) + ","; tempValues += String(tempData[i]) + ","; } lightValues.remove(lightValues.length() - 1); // Supprimer la virgule finale tempValues.remove(tempValues.length() - 1); // Supprimer la virgule finale lightValues += "]"; tempValues += "]"; String page = ""; page += ""; page += ""; page += " Serveur ESP32"; page += " "; page += " "; page += " "; page += " "; page += ""; page += ""; /*page += "
"; page += "

LED speed : "; page += speed; + "

"; page += "
"; page += "
"; page += " Slower"; page += " Faster"; page += "
";*/ page += "
"; page += " "; // Définir la taille du graphique lumière page += " "; // Définir la taille du graphique température page += " "; // Inclure Chart.js page += " "; // Fin du script JavaScript page += "
"; page += ""; page += ""; server.setContentLength(page.length()); server.send(200, "text/html", page); } void handleOn() { speed += 100; server.sendHeader("Location","/"); server.send(303); } void handleOff() { if (speed > 100) speed -= 100; server.sendHeader("Location","/"); server.send(303); } void handleNotFound() { server.send(404, "text/plain", "404: Not found"); } void setup() { Serial.begin(115200); delay(1000); Serial.println("\n"); pinMode(led, OUTPUT); digitalWrite(led, 1); WiFi.persistent(false); WiFi.begin(ssid, password); Serial.print("Tentative de connexion..."); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(100); } Serial.println("\n"); Serial.println("Connexion etablie!"); Serial.print("Adresse IP: "); Serial.println(WiFi.localIP()); server.on("/", handleRoot); server.on("/on", handleOn); server.on("/off", handleOff); server.onNotFound(handleNotFound); server.begin(); Serial.println("Serveur web actif!"); } void loop() { server.handleClient(); }