Problème avec la bibliothèque Wifi Manager

Bonjour tous le monde !

J'aurai besoin d'aide car j'essai de faire un petit programme et je débute..
Pour l'instant l'assemblage des exemple de bibliothéque à pas trop mal fonctionner mais la je galère sur plusieurs point..

Ce que je veux faire c'est : Lors de la première utilisation je voudrai lancer wifi manager afin que n'importe quel utilisateur puisse se connecter à son wifi perso.

De la je veux partir sur une page web personnalisée qui contiendrai quelques champs comme qui touche au capteur et un historique des valeurs dans une table..

Les données du capteurs ainsi que les paramètres serai stocké sur la carte micro SD.

Et voici les points ou je galère...

  1. Conflit des que j'intègre wifi manager..
  2. Le renvoi des valeurs enregistrer dans la sd vers mes champs html..
  3. J'aurai voulu savoir si il y a moyen par exemple d'enregistrer dans un dossier un page html qui ce nommerai home.htm et de redirger la dessus

Merci d'avance pour votre temps

/*//////////////
__________ .___ __________ .____     .___ ________   ___________  ___ ___  ___________________    ____ ___ ___________
\______   \|   |\______   \|    |    |   |\_____  \  \__    ___/ /   |   \ \_   _____/\_____  \  |    |   \\_   _____/
 |    |  _/|   | |    |  _/|    |    |   | /   |   \   |    |   /    ~    \ |    __)_  /  / \  \ |    |   / |    __)_ 
 |    |   \|   | |    |   \|    |___ |   |/    |    \  |    |   \    Y    / |        \/   \_/.  \|    |  /  |        \
 |______  /|___| |______  /|_______ \|___|\_______  /  |____|    \___|_  / /_______  /\_____\ \_/|______/  /_______  /
        \/              \/         \/             \/                   \/          \/        \__>                  \/ 
 
////////////////*/

#include <WiFiManager.h>
bool WIFI_ACTIF = false;

//Libraries for Bus i2C
#include <Wire.h>

//Libraries for BME280
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

//Libraries for WebServer
#if WIFI_ACTIF == true 
#include <ESP8266WiFi.h>
#include <ESPAsyncTCP.h>
#include <ESPAsyncWebServer.h>
#include <Hash.h>
#endif

//Libraries for microSD card
#include "FS.h"
#include "SD.h"
#include "SPI.h"

//Libraries for NTP
#include <NTPClient.h>
#include <WiFiUdp.h>



/*////////////////////////

____   ____   _____   __________ .___    _____   __________ .____     ___________  _________
\   \ /   /  /  _  \  \______   \|   |  /  _  \  \______   \|    |    \_   _____/ /   _____/
 \   Y   /  /  /_\  \  |       _/|   | /  /_\  \  |    |  _/|    |     |    __)_  \_____  \ 
  \     /  /    |    \ |    |   \|   |/    |    \ |    |   \|    |___  |        \ /        \
   \___/   \____|__  / |____|_  /|___|\____|__  / |______  /|_______ \/_______  //_______  /
                   \/         \/              \/         \/         \/        \/         \/ 

/////////////////////*/
// Define NTP Client to get time
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org");

//Week Days
String weekDays[7]={"Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"};

//Month names
String months[12]={"Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"};


///////////////////////____________ VARIABLES POUR RECUPERER LA DATE DU JOUR AFIN DE L'ENVOYER SUR LA SD
String DATE_JOUR;

///////////////////////____________ VARIABLES POUR RECUPERER L'ID ESP8266
uint32_t chipID;

///////////////////////____________ VARIABLES LECTEUR SD (Définition des pins utiliser par le lecteur de carte)
const int MOSI_PIN = 13;
const int CS_PIN = 15;
const int MISO_PIN = 12;
const int CLK_PIN = 14;

///////////////////////____________ VARIABLES FICHIERS SD
File fileData;
File fileLogs;
File fileParam;

AsyncWebServer server(80);

///////////////////////____________ VARIABLES WIFI
// REPLACE WITH YOUR NETWORK CREDENTIALS
const char* ssid = "****";
const char* password = "****";


///////////////////////____________ VARIABLES BME280
// #define SEALEVELPRESSURE_HPA (1013.25)
Adafruit_BME280 bme; // I2C
String dataMessage;

float MIN_TEMP;// MIN TEMP
float MAX_TEMP;// MAX TEMP
float MIN_PRES;// MIN PRES
float MAX_PRES;// MAX PRES
float MIN_HUMI;// MIN HUMI
float MAX_HUMI;// MAX HUMI
int ECHANTILLONAGE_SECONDES = 60; // ECHANTILLONAGE_SECONDES (interval)

unsigned long delayTime;

///////////////////////____________ VARIABLES INPUT POUR PAGE HTML
const char* PARAM_IDCHIP = "inputIdChip";
const char* PARAM_MAC = "inputMacAdress";
const char* PARAM_STRING = "inputString";
const char* PARAM_INT = "inputInt";
const char* PARAM_FLOAT = "inputFloat";

// HTML web page to handle 3 input fields (inputString, inputInt, inputFloat)
const char index_html[] PROGMEM = R"rawliteral(
<!DOCTYPE HTML><html><head>
  <title>ESP Input Form</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  
  <script>
    function submitMessage() {
      alert("Saved value to ESP SPIFFS");
      setTimeout(function(){ document.location.reload(false); }, 500);   
    }    
  </script></head><body>

  <form action="/get" target="hidden-form">
    inputIdChip (current value %inputIdChip%): <input type="text" name="inputIdChip" readonly> 
  </form><br>
  
   <form action="/get" target="hidden-form">
    Adresse Mac : <input type="text" name="inputMacAdress" value="%inputMacAdress%" readonly>
  </form><br>
  

  <form action="/get" target="hidden-form">
    inputString (current value %inputString%): <input type="text" name="inputString">
    <input type="submit" value="Submit" onclick="submitMessage()">
  </form><br>
  
  <form action="/get" target="hidden-form">
    inputInt (current value %inputInt%): <input type="number " name="inputInt">
    <input type="submit" value="Submit" onclick="submitMessage()">
  </form><br>
  
  <form action="/get" target="hidden-form">
    inputFloat (current value %inputFloat%): <input type="number " name="inputFloat">
    <input type="submit" value="Submit" onclick="submitMessage()">
  </form>
  
  <iframe style="display:none" name="hidden-form"></iframe>
</body></html>)rawliteral";

/*////////////////

_________   ____ ___   ____________________________      _____      ____   ____________   .___ ________   
\_   ___ \ |    |   \ /   _____/\__    ___/\_____  \    /     \     \   \ /   /\_____  \  |   |\______ \  
/    \  \/ |    |   / \_____  \   |    |    /   |   \  /  \ /  \     \   Y   /  /   |   \ |   | |    |  \ 
\     \____|    |  /  /        \  |    |   /    |    \/    Y    \     \     /  /    |    \|   | |    `   \
 \______  /|______/  /_______  /  |____|   \_______  /\____|__  /      \___/   \_______  /|___|/_______  /
        \/                   \/                    \/         \/                       \/              \/  

//////////////*/


///////////////////////____________ INITIALISATION DU CLIENT NTP POUR OBTENIR LA DATE/HEURE/MINUTES ETC...
  void INIT_CLIENTNTP(){
  timeClient.begin();
  // Set offset time in seconds to adjust for your timezone, for example:
  // GMT +1 = 3600
  // GMT +8 = 28800
  // GMT -1 = -3600
  // GMT 0 = 0
  timeClient.setTimeOffset(7200);
}

///////////////////////____________ INITIALISATION DE LA BOUCLE TEMPS                                                  
void INIT_NTP_LOOP(){
timeClient.update();

  time_t epochTime = timeClient.getEpochTime();
  Serial.print("Epoch Time: ");
  Serial.println(epochTime);
  
  String formattedTime = timeClient.getFormattedTime();
  Serial.print("Heure complète : ");
  Serial.println(formattedTime);  

  int currentHour = timeClient.getHours();
  Serial.print("Heure: ");
  Serial.println(currentHour);  

  int currentMinute = timeClient.getMinutes();
  Serial.print("Minutes: ");
  Serial.println(currentMinute); 
   
  int currentSecond = timeClient.getSeconds();
  Serial.print("Secondes: ");
  Serial.println(currentSecond);  

  String weekDay = weekDays[timeClient.getDay()];
  Serial.print("Jour: ");
  Serial.println(weekDay);    

  //Définition de la structure du temps
  struct tm *ptm = gmtime ((time_t *)&epochTime); 

  int monthDay = ptm->tm_mday;
  Serial.print("N° jour : ");
  Serial.println(monthDay);

  int currentMonth = ptm->tm_mon+1;
  Serial.print("N° mois : ");
  Serial.println(currentMonth);

  String currentMonthName = months[currentMonth-1];
  Serial.print("Mois : ");
  Serial.println(currentMonthName);

  int currentYear = ptm->tm_year+1900;
  Serial.print("Année : ");
  Serial.println(currentYear);

  //Print complete date:
  String currentDate = String(currentYear) + "." + String(currentMonth) + "." + String(monthDay);
  DATE_JOUR = currentDate;          ///////////////////////____________ MISE A JOUR VARIABLE DATE DU JOUR
  Serial.print("Date du jour: ");
  Serial.println(currentDate);

  Serial.println("");

  delay(2000);
}

///////////////////////____________ 

void notFound(AsyncWebServerRequest *request) {
  request->send(404, "text/plain", "Not found");
}

///////////////////////____________ CHAMPS HTML
/*
void CustomInput() {
  // To access your stored values on inputString, inputInt, inputFloat
  String yourInputString = readFile(SPIFFS, "/inputString.txt");
  Serial.print("*** Your inputString: ");
  Serial.println(yourInputString);
  
  int yourInputInt = readFile(SPIFFS, "/inputInt.txt").toInt();
  Serial.print("*** Your inputInt: ");
  Serial.println(yourInputInt);
  
  float yourInputFloat = readFile(SPIFFS, "/inputFloat.txt").toFloat();
  Serial.print("*** Your inputFloat: ");
  Serial.println(yourInputFloat);
  delay(5000);
}
*/
///////////////////////____________ LECTURE DE LA SONDE BME280

void BME280Values() {
  delay(30000);
  ECRITURE_DATA_SD();
  Serial.print("Temperature = ");
  Serial.print(bme.readTemperature());
  Serial.println(" *C");
  
  // Convert temperature to Fahrenheit
  /*Serial.print("Temperature = ");
  Serial.print(1.8 * bme.readTemperature() + 32);
  Serial.println(" *F");*/
  
  Serial.print("Pressure = ");
  Serial.print(bme.readPressure() / 100.0F);
  Serial.println(" hPa");

  Serial.print("Humidity = ");
  Serial.print(bme.readHumidity());
  Serial.println(" %");

  Serial.println();  
}

///////////////////////____________ N° ID et Adresse MAC de l'ESP8266

void SERIAL_CHIP_ID(){
chipID = ESP.getChipId();
Serial.printf(" ESP8266 Chip id = %08X\n", ESP.getChipId());
Serial.print("Mac adresse : "); 
Serial.println(WiFi.macAddress());
Serial.println();      
}

//////////////////////


///////////////////////____________ INITIALISATION DE LA CARTE MICRO SD
void INIT_SDCARD(){
   if (!SD.begin(CS_PIN)){
    Serial.println("La carte a échoué ou n'est pas présente !");
    return;
  }
   Serial.println("Carte initialisée !");
}

///////////////////////____________ Créez un nouveau fichier sur la carte microSD dans le dossier DATA appelé DataSensor.txt si il n'existe pas déjà.
void CREATION_FICHIER_DATA_SD(){
File fileData = SD.open("DATA/DataSensor.txt");
if(!fileData) {
  Serial.println("fichier n'existe pas !");
  Serial.println("Création du fichier.......");
    fileData = SD.open("DATA/DataSensor.txt", FILE_WRITE);
    if (fileData){    
    fileData.print("Date");
    fileData.print(";");
    fileData.print("Heure");
    fileData.print(";");
    fileData.print("Température [°C]");
    fileData.print(";");
    fileData.print("Pression [hPa]");
    fileData.print(";");         
    fileData.println("Humidité [%]");
    }    
}
else {
  Serial.println("Le fichier existe déjà !");  
}
fileData.close();
}

///////////////////////____________ Créez un nouveau fichier sur la carte microSD dans le dossier DATA appelé DataSensor.txt si il n'existe pas déjà.
void CREATION_FICHIER_LOGS_SD(){
File fileLogs = SD.open("LOGS/AllChange.txt");
if(!fileLogs) {
  Serial.println("fichier n'existe pas !");
  Serial.println("Création du fichier.......");
    fileLogs = SD.open("LOGS/AllChange.txt", FILE_WRITE);
//    if (fileLogs){    
//    fileData.print("Date");
//    fileData.print(";");
//    fileData.print("Heure");
//    fileData.print(";");
//    fileData.print("Température [°C]");
//    fileData.print(";");
//    fileData.print("Pression [hPa]");
//    fileData.print(";");         
//    fileData.println("Humidité [%]");
//    }    
}
else {
  Serial.println("Le fichier existe déjà !");  
}
fileLogs.close();
}

///////////////////////____________ Créez un nouveau fichier sur la carte microSD dans le dossier DATA appelé DataSensor.txt si il n'existe pas déjà.
void CREATION_FICHIER_PARAM_SD(){
File fileParam = SD.open("PARAMETRES/");
if(!fileParam) {
  Serial.println("fichier n'existe pas !");
  Serial.println("Création du fichier.......");
    fileParam = SD.open("PARAMETRES/inputIdChip.txt", FILE_WRITE);
        fileParam = SD.open("PARAMETRES/inputMacAdress.txt", FILE_WRITE);
            fileParam = SD.open("PARAMETRES/inputString.txt", FILE_WRITE);
                fileParam = SD.open("PARAMETRES/inputInt.txt", FILE_WRITE);
                    fileParam = SD.open("PARAMETRES/inputFloat.txt", FILE_WRITE);                                    
//    if (fileParam){    
//    fileParam.print("Date");
//    fileData.print(";");
//    fileData.print("Heure");
//    fileData.print(";");
//    fileData.print("Température [°C]");
//    fileData.print(";");
//    fileData.print("Pression [hPa]");
//    fileData.print(";");         
//    fileData.println("Humidité [%]");
//    }    
}
else {
  Serial.println("Le fichier existe déjà !");  
}
fileParam.close();
}

///////////////////////____________ ECRITURE DES DONNEES DU CAPTEUR DANS LA CARTE SD
void ECRITURE_DATA_SD(){
 fileData = SD.open("DATA/DataSensor.txt", FILE_WRITE);
  // Si le fichier est ouvert, écrit dedans :
  if (fileData) {
   Serial.print("Ecriture dans le fichier DataSensor.txt...");
    fileData.print(DATE_JOUR);
    fileData.print(";");
    fileData.print(timeClient.getFormattedTime());
    fileData.print(";");    
    fileData.print(bme.readTemperature());
    fileData.print(";");
    fileData.print(bme.readPressure() / 100.0F);
    fileData.print(";");         
    fileData.println(bme.readHumidity());
    fileData.close();
    Serial.println("Ecriture OK !");
  } 
}

///////////////////////____________ INITIALISATION DU WIFI
void INIT_WIFI(){
    WiFi.mode(WIFI_STA);
    WiFi.begin(ssid, password);
      if (WiFi.waitForConnectResult() != WL_CONNECTED) {
    Serial.println("WiFi Failed!");
    return;
  }

  Serial.println();
  Serial.print("IP Address: ");
  Serial.println(WiFi.localIP());
}

///////////////////////____________ INITIALISATION DU WIFI 2
void INIT_WIFI_2(){
    WiFi.mode(WIFI_STA); // explicitly set mode, esp defaults to STA+AP
    // it is a good practice to make sure your code sets wifi mode how you want it.

    Serial.begin(115200);
    
    //WiFiManager, Local intialization. Once its business is done, there is no need to keep it around
    WiFiManager wm;


    bool res;

    res = wm.autoConnect();

    if(!res) {
        Serial.println("Failed to connect");
        // ESP.restart();
    } 
    else {
        //if you get here you have connected to the WiFi    
        Serial.println("connected...yeey :)");
        WIFI_ACTIF = true; 
    }

}
///////////////////////____________ INITIALISATION CAPTEUR BME280
void INIT_BME280(){
  bool status;

  // default settings
  // (you can also pass in a Wire library object like &Wire2)
  status = bme.begin(0x76);  
  if (!status) {
          Serial.println("Could not find a valid BME280 sensor, check wiring, address, sensor ID!");
        Serial.print("SensorID was: 0x"); Serial.println(bme.sensorID(),16);
        Serial.print("        ID of 0xFF probably means a bad address, a BMP 180 or BMP 085\n");
        Serial.print("   ID of 0x56-0x58 represents a BMP 280,\n");
        Serial.print("        ID of 0x60 represents a BME 280.\n");
        Serial.print("        ID of 0x61 represents a BME 680.\n");
    while (1);
  }

  delayTime = 1000;

  Serial.println();
}  


/*
void LECTURE_SD(){
  // re-open the file for reading:
  myFile = SD.open("test.txt");
  if (myFile) {
    Serial.println("test.txt:");

    // read from the file until there's nothing else in it:
    while (myFile.available()) {
      Serial.write(myFile.read());
    }
    // close the file:
    myFile.close();
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
}
*/

/*
// Replaces placeholder with stored values
String processor(const String& var){
  //Serial.println(var);

  if(var == "inputString"){
    return readFile(SD, "PARAMETRES/inputString.txt");
  } 
  
//  else if(var == "inputIdChip"){
//    return ESP.getChipId();
//}
  
  else if(var == "inputMacAdress"){
    return WiFi.macAddress();
  }
  
  else if(var == "inputInt"){
    return readFile(SD, "PARAMETRES/inputInt.txt");
  }
  else if(var == "inputFloat"){
    return readFile(SD, "PARAMETRES/inputFloat.txt");
  }
  return String();
}
*/

/*//////////////////
  _________          __                  
 /   _____/  ____  _/  |_  __ __ ______  
 \_____  \ _/ __ \ \   __\|  |  \\____ \ 
 /        \\  ___/  |  |  |  |  /|  |_> >
/_______  / \___  > |__|  |____/ |   __/ 
        \/      \/               |__|    

//////////////////*/

void setup() {
  INIT_CLIENTNTP();
  INIT_WIFI_2();
  INIT_SDCARD();
  CREATION_FICHIER_DATA_SD();
  CREATION_FICHIER_LOGS_SD();
  CREATION_FICHIER_PARAM_SD();  
  INIT_BME280();  

/*
if(!SPIFFS.begin()){
      Serial.println("An Error has occurred while mounting SPIFFS");
      return;
    }
*/


/*
 // Send web page with input fields to client
  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", index_html, processor);
  });

  // Envoyez des requêtes GET à <ESP_IP>/get?inputString=<inputMessage>
  server.on("/get", HTTP_GET, [] (AsyncWebServerRequest *request) {
    String inputMessage;
    
    // GET inputString value on <ESP_IP>/get?inputString=<inputMessage>
    if (request->hasParam(PARAM_STRING)) {
      inputMessage = request->getParam(PARAM_STRING)->value();
      ECRITURE_SPIFFS(SPIFFS, "/inputString.txt", inputMessage.c_str());
    }
    
    // GET inputInt value on <ESP_IP>/get?inputInt=<inputMessage>
    else if (request->hasParam(PARAM_INT)) {
      inputMessage = request->getParam(PARAM_INT)->value();
      ECRITURE_SPIFFS(SPIFFS, "/inputInt.txt", inputMessage.c_str());
    }
    
    // GET inputFloat value on <ESP_IP>/get?inputFloat=<inputMessage>
    else if (request->hasParam(PARAM_FLOAT)) {
      inputMessage = request->getParam(PARAM_FLOAT)->value();
      ECRITURE_SPIFFS(SPIFFS, "/inputFloat.txt", inputMessage.c_str());
    }
    else {
      inputMessage = "No message sent";
    }
    Serial.println(inputMessage);
    request->send(200, "text/text", inputMessage);
  });
*/
  server.onNotFound(notFound);
  server.begin();

}

/*////////////////////////
.____                             
|    |      ____    ____  ______  
|    |     /  _ \  /  _ \ \____ \ 
|    |___ (  <_> )(  <_> )|  |_> >
|_______ \ \____/  \____/ |   __/ 
        \/                |__|    

////////////////////////*/

void loop() { 
  SERIAL_CHIP_ID();
  INIT_NTP_LOOP();
 // CustomInput();
  BME280Values();
  delay(delayTime);
}


C'est à dire ?

Il est tout de même dommage d'utiliser ESPAsyncWebServer sans en profiter pleinement :

  • pages WEB dans SPIFFS
  • templates (ce qui simplifie grandement l'affichage de données)

Déjà discuté ici :

Je ne sais pas l'expliqué.. j'ai l'impression que la bibliothèque ESPAsyncWebServer fait un conflit comme si elle empechai la redirection vers la page du wifi manager...

voici comme j'ai raisonné depuis le début.. Au départ j'incluais mes bibliothèque comme ceci :

#include <WiFiManager.h>

//Libraries for Bus i2C
#include <Wire.h>

//Libraries for BME280
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

//Libraries for WebServer

#include <ESP8266WiFi.h>
#include <ESPAsyncTCP.h>
#include <ESPAsyncWebServer.h>
#include <Hash.h>

//Libraries for microSD card
#include "FS.h"
#include "SD.h"
#include "SPI.h"

//Libraries for NTP
#include <NTPClient.h>
#include <WiFiUdp.h>

ça me renvoi ça comme erreur :

In file included from C:\Users\Moa\Documents\Arduino\Test_Datalogger_v4\Test_Datalogger_v4.ino:25:0:
c:\Users\Moa\Documents\Arduino\libraries\ESPAsyncWebServer-master\src/ESPAsyncWebServer.h:62:18: error: redeclaration of 'HTTP_GET'
   HTTP_GET     = 0b00000001,
                  ^
In file included from c:\Users\Moa\Documents\Arduino\libraries\WiFiManager/WiFiManager.h:82:0,
                 from C:\Users\Moa\Documents\Arduino\Test_Datalogger_v4\Test_Datalogger_v4.ino:11:
C:\Users\Moa\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\ESP8266WebServer\src/ESP8266WebServer.h:34:29: note: previous declaration 'HTTPMethod HTTP_GET'
 enum HTTPMethod { HTTP_ANY, HTTP_GET, HTTP_HEAD, HTTP_POST, HTTP_PUT, HTTP_PATCH, HTTP_DELETE, HTTP_OPTIONS };
                             ^
In file included from C:\Users\Moa\Documents\Arduino\Test_Datalogger_v4\Test_Datalogger_v4.ino:25:0:
c:\Users\Moa\Documents\Arduino\libraries\ESPAsyncWebServer-master\src/ESPAsyncWebServer.h:63:18: error: redeclaration of 'HTTP_POST'
   HTTP_POST    = 0b00000010,
                  ^
In file included from c:\Users\Moa\Documents\Arduino\libraries\WiFiManager/WiFiManager.h:82:0,
                 from C:\Users\Moa\Documents\Arduino\Test_Datalogger_v4\Test_Datalogger_v4.ino:11:
C:\Users\Moa\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\ESP8266WebServer\src/ESP8266WebServer.h:34:50: note: previous declaration 'HTTPMethod HTTP_POST'
 enum HTTPMethod { HTTP_ANY, HTTP_GET, HTTP_HEAD, HTTP_POST, HTTP_PUT, HTTP_PATCH, HTTP_DELETE, HTTP_OPTIONS };
                                                  ^
In file included from C:\Users\Moa\Documents\Arduino\Test_Datalogger_v4\Test_Datalogger_v4.ino:25:0:
c:\Users\Moa\Documents\Arduino\libraries\ESPAsyncWebServer-master\src/ESPAsyncWebServer.h:64:18: error: redeclaration of 'HTTP_DELETE'
   HTTP_DELETE  = 0b00000100,
                  ^
In file included from c:\Users\Moa\Documents\Arduino\libraries\WiFiManager/WiFiManager.h:82:0,
                 from C:\Users\Moa\Documents\Arduino\Test_Datalogger_v4\Test_Datalogger_v4.ino:11:
C:\Users\Moa\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\ESP8266WebServer\src/ESP8266WebServer.h:34:83: note: previous declaration 'HTTPMethod HTTP_DELETE'
 enum HTTPMethod { HTTP_ANY, HTTP_GET, HTTP_HEAD, HTTP_POST, HTTP_PUT, HTTP_PATCH, HTTP_DELETE, HTTP_OPTIONS };
                                                                                   ^
In file included from C:\Users\Moa\Documents\Arduino\Test_Datalogger_v4\Test_Datalogger_v4.ino:25:0:
c:\Users\Moa\Documents\Arduino\libraries\ESPAsyncWebServer-master\src/ESPAsyncWebServer.h:65:18: error: redeclaration of 'HTTP_PUT'
   HTTP_PUT     = 0b00001000,
                  ^
In file included from c:\Users\Moa\Documents\Arduino\libraries\WiFiManager/WiFiManager.h:82:0,
                 from C:\Users\Moa\Documents\Arduino\Test_Datalogger_v4\Test_Datalogger_v4.ino:11:
C:\Users\Moa\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\ESP8266WebServer\src/ESP8266WebServer.h:34:61: note: previous declaration 'HTTPMethod HTTP_PUT'
 enum HTTPMethod { HTTP_ANY, HTTP_GET, HTTP_HEAD, HTTP_POST, HTTP_PUT, HTTP_PATCH, HTTP_DELETE, HTTP_OPTIONS };
                                                             ^
In file included from C:\Users\Moa\Documents\Arduino\Test_Datalogger_v4\Test_Datalogger_v4.ino:25:0:
c:\Users\Moa\Documents\Arduino\libraries\ESPAsyncWebServer-master\src/ESPAsyncWebServer.h:66:18: error: redeclaration of 'HTTP_PATCH'
   HTTP_PATCH   = 0b00010000,
                  ^
In file included from c:\Users\Moa\Documents\Arduino\libraries\WiFiManager/WiFiManager.h:82:0,
                 from C:\Users\Moa\Documents\Arduino\Test_Datalogger_v4\Test_Datalogger_v4.ino:11:
C:\Users\Moa\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\ESP8266WebServer\src/ESP8266WebServer.h:34:71: note: previous declaration 'HTTPMethod HTTP_PATCH'
 enum HTTPMethod { HTTP_ANY, HTTP_GET, HTTP_HEAD, HTTP_POST, HTTP_PUT, HTTP_PATCH, HTTP_DELETE, HTTP_OPTIONS };
                                                                       ^
In file included from C:\Users\Moa\Documents\Arduino\Test_Datalogger_v4\Test_Datalogger_v4.ino:25:0:
c:\Users\Moa\Documents\Arduino\libraries\ESPAsyncWebServer-master\src/ESPAsyncWebServer.h:67:18: error: redeclaration of 'HTTP_HEAD'
   HTTP_HEAD    = 0b00100000,
                  ^
In file included from c:\Users\Moa\Documents\Arduino\libraries\WiFiManager/WiFiManager.h:82:0,
                 from C:\Users\Moa\Documents\Arduino\Test_Datalogger_v4\Test_Datalogger_v4.ino:11:
C:\Users\Moa\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\ESP8266WebServer\src/ESP8266WebServer.h:34:39: note: previous declaration 'HTTPMethod HTTP_HEAD'
 enum HTTPMethod { HTTP_ANY, HTTP_GET, HTTP_HEAD, HTTP_POST, HTTP_PUT, HTTP_PATCH, HTTP_DELETE, HTTP_OPTIONS };
                                       ^
In file included from C:\Users\Moa\Documents\Arduino\Test_Datalogger_v4\Test_Datalogger_v4.ino:25:0:
c:\Users\Moa\Documents\Arduino\libraries\ESPAsyncWebServer-master\src/ESPAsyncWebServer.h:68:18: error: redeclaration of 'HTTP_OPTIONS'
   HTTP_OPTIONS = 0b01000000,
                  ^
In file included from c:\Users\Moa\Documents\Arduino\libraries\WiFiManager/WiFiManager.h:82:0,
                 from C:\Users\Moa\Documents\Arduino\Test_Datalogger_v4\Test_Datalogger_v4.ino:11:
C:\Users\Moa\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\ESP8266WebServer\src/ESP8266WebServer.h:34:96: note: previous declaration 'HTTPMethod HTTP_OPTIONS'
 enum HTTPMethod { HTTP_ANY, HTTP_GET, HTTP_HEAD, HTTP_POST, HTTP_PUT, HTTP_PATCH, HTTP_DELETE, HTTP_OPTIONS };
                                                                                                ^
In file included from C:\Users\Moa\Documents\Arduino\Test_Datalogger_v4\Test_Datalogger_v4.ino:25:0:
c:\Users\Moa\Documents\Arduino\libraries\ESPAsyncWebServer-master\src/ESPAsyncWebServer.h:69:18: error: redeclaration of 'HTTP_ANY'
   HTTP_ANY     = 0b01111111,
                  ^
In file included from c:\Users\Moa\Documents\Arduino\libraries\WiFiManager/WiFiManager.h:82:0,
                 from C:\Users\Moa\Documents\Arduino\Test_Datalogger_v4\Test_Datalogger_v4.ino:11:
C:\Users\Moa\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\ESP8266WebServer\src/ESP8266WebServer.h:34:19: note: previous declaration 'HTTPMethod HTTP_ANY'
 enum HTTPMethod { HTTP_ANY, HTTP_GET, HTTP_HEAD, HTTP_POST, HTTP_PUT, HTTP_PATCH, HTTP_DELETE, HTTP_OPTIONS };
                   ^
Compilation error: exit status 1}

Donc de la je me suis dit que l'erreur venait du fait que la bibliothèque WifiManger était initalisée en même temps que ESPAsyncWebServer. Alors j'ai modifier les bibliothèque à inculure en ça :


#include <WiFiManager.h>
bool WIFI_ACTIF = false;

//Libraries for Bus i2C
#include <Wire.h>

//Libraries for BME280
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

//Libraries for WebServer
#if WIFI_ACTIF == true 
#include <ESP8266WiFi.h>
#include <ESPAsyncTCP.h>
#include <ESPAsyncWebServer.h>
#include <Hash.h>
#endif

//Libraries for microSD card
#include "FS.h"
#include "SD.h"
#include "SPI.h"

//Libraries for NTP
#include <NTPClient.h>
#include <WiFiUdp.h>

et modifier ma fonction INIT_WIFI_2 en ça..

///////////////////////____________ INITIALISATION DU WIFI 2
void INIT_WIFI_2(){
    WiFi.mode(WIFI_STA); // explicitly set mode, esp defaults to STA+AP
    // it is a good practice to make sure your code sets wifi mode how you want it.

    Serial.begin(115200);
    
    //WiFiManager, Local intialization. Once its business is done, there is no need to keep it around
    WiFiManager wm;


    bool res;

    res = wm.autoConnect();

    if(!res) {
        Serial.println("Failed to connect");
        // ESP.restart();
    } 
    else {
        //if you get here you have connected to the WiFi    
        Serial.println("connected...yeey :)");
        WIFI_ACTIF = true; 
    }

}

Résultat...

C:\Users\Moa\Documents\Arduino\Test_Datalogger_v4\Test_Datalogger_v4.ino:78:1: error: 'AsyncWebServer' does not name a type
 AsyncWebServer server(80);
 ^
C:\Users\Moa\Documents\Arduino\Test_Datalogger_v4\Test_Datalogger_v4.ino:231:15: error: variable or field 'notFound' declared void
 void notFound(AsyncWebServerRequest *request) {
               ^
C:\Users\Moa\Documents\Arduino\Test_Datalogger_v4\Test_Datalogger_v4.ino:231:15: error: 'AsyncWebServerRequest' was not declared in this scope
C:\Users\Moa\Documents\Arduino\Test_Datalogger_v4\Test_Datalogger_v4.ino:231:38: error: 'request' was not declared in this scope
 void notFound(AsyncWebServerRequest *request) {
                                      ^
C:\Users\Moa\Documents\Arduino\Test_Datalogger_v4\Test_Datalogger_v4.ino:231:15: error: variable or field 'notFound' declared void
 void notFound(AsyncWebServerRequest *request) {
               ^
C:\Users\Moa\Documents\Arduino\Test_Datalogger_v4\Test_Datalogger_v4.ino:231:15: error: 'AsyncWebServerRequest' was not declared in this scope
C:\Users\Moa\Documents\Arduino\Test_Datalogger_v4\Test_Datalogger_v4.ino:231:38: error: 'request' was not declared in this scope
 void notFound(AsyncWebServerRequest *request) {
                                      ^
C:\Users\Moa\Documents\Arduino\Test_Datalogger_v4\Test_Datalogger_v4.ino: In function 'void setup()':
C:\Users\Moa\Documents\Arduino\Test_Datalogger_v4\Test_Datalogger_v4.ino:570:3: error: 'server' was not declared in this scope
   server.onNotFound(notFound);
   ^
C:\Users\Moa\Documents\Arduino\Test_Datalogger_v4\Test_Datalogger_v4.ino:570:21: error: 'notFound' was not declared in this scope
   server.onNotFound(notFound);
                     ^
Compilation error: exit status 1}

Et maintenant je suis perdu... :flushed:

J'aimerai pouvoir depuis ma page HTML modifiée des variables qui sont liée entre autres des seuils d'alarme min/maxi lié au capteur BME280 pour la température, pression et humidité ainsi que le délai entre chaque lecture du capteur qui serai stocker dans la SD dans le répertoire PARAMETRES/Paramètre1.txt etc... Donc en gros il faudrai que je trouve comment lire et écrire sur la SD avec les méthode GET et POST si j'ai bien compris.. ou j'y suis pas du tout ??

En faite je sais pas pourquoi je me dis que le SPIFFS et limité, j'ai peut être pas tout compris.. c'est pour ça l'idée de la SD et aussi parce que j'aimerai pouvoir facilement stocké des années de données..

En faite dans ma tête je voyais la hiérachie comme cela

Dossier MonProgramme
|
|____ MonProgramme.ino
|____ DossierHTML
.... . |__index.htm
...... |__config.htm
...... |__css
...... |__javascript.js

Si WIFI_ACTIF vaut false ces fichiers ne sont pas inclus. D'autre part on ne peut pas utiliser une variable (WIFI_ACTIF) dans une directive de compilation, étant donné que lors de la compilation, sa valeur est inconnue.

Pour le reste, au sujet des paramètres, ceux-ci tireraient avantage à être stockés dans SPIFFS plutôt que sur une SD.
Il existe probablement des librairies pour faire cela, comme la librairie Preferences (ESP32 seulement).

Alors je suis parti sur le stockage des paramètres sur le SPIFFS et des données du capteurs sur la SD.. ça marche tant que la bibliothèque Wifi Manager n'est pas inclue et je supprime ma variable WIFI_ACTIF.. Concernant cette bibliothèque je pense que je vais l'oublié ! Et je vais essayer de partir sur une initialisation de l'ESP en AP mode dans un premier temps puis basculer en mode STA après que les données SSID et MDP soit saisie par un utilisateur.. Ca me parait plus simple

C'est exactement ce que fait WifiManager. Voir les exemples de cette librairie.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.