3 – Void (setup)

void setup()
{

  // Serial port for debugging purposes
  Serial.begin(9600);
  EEPROM.begin(512);
  PCF_21.begin(); // Entrées sortie sup.
  //-------------------------------------- Gestion AHT10 -------------------------------
  aht.begin();

  //---------------------------------------- Gestion GPS -------------------------------
  SerialGPS.begin(9600);

  //--------------------------- Gestion écran OLED -----------------------------

  pinMode(input_ecran, INPUT_PULLUP);

  if (!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS))
  {
    Serial.println(F("SSD1306 allocation erreur"));
    for (;;)
      ; // Ne continuez pas, bouclez pour toujours
  }
  display.clearDisplay();
  display.drawBitmap(0, 0, logo_arrosage, 128, 64, 1); // affiche le logo arrosage sur l'écran Oled
  display.display();
  delay(1000); // Pause de 1 secondes

  display.setCursor(0, 0); // Déplacement du curseur en position (0,0), angle supérieur gauche
  display.clearDisplay();
  display.setTextColor(EcritureTexteBlanc, FondTexteNoir);
  display.println("Recherche borne Wifi");

  //-------------------------------------- Gestion Wi-Fi -------------------------------
  WiFi.begin(ssid, password);
  Serial.print("Recherche borne Wifi");
  while (WiFi.status() != WL_CONNECTED)
  {
    Clignotement(500);
    Serial.print(".");
    display.print(".");
    display.display();
    cpt++;
    if (cpt == 1000)
    {
      wifi_ok = 0;
      return; // Sortir de la boucle si non connexion au bout de x tentatives}
    }
  }

  Serial.print("Connection à l'adresse  IP: ");
  Serial.println(WiFi.localIP());
  WiFi.printDiag(Serial); // imprimer les principales informations du wifi
  Serial.println();

  // ---------- Etat connection du wifi sur ecran Oled -------------

  display.setCursor(0, 0);
  display.clearDisplay();
  display.display();
  display.println(WiFi.localIP());
  display.display();

  lecture_json(); // lire les valeurs des heure et incorporer dans les variables

  //  ---- Page web bouton & varables (heure/date ...)  Initialisation du serveur Web ------------------

  server.on("/", HTTP_POST, [](AsyncWebServerRequest *request) { // HTTP POST ssid value
  });

  server.on("/get_out", HTTP_GET, [](AsyncWebServerRequest *request)
            { request->send_P(200, "text/plain", readOut().c_str()); });

  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request)
            { request->send_P(200, "text/html", index_html, processor); });
  server.on("/val_heure", HTTP_GET, [](AsyncWebServerRequest *request)
            { request->send_P(200, "text/plain", readHeure().c_str()); });
  server.on("/val_date", HTTP_GET, [](AsyncWebServerRequest *request)
            { request->send_P(200, "text/plain", readDate().c_str()); });
  server.on("/temperatureInt", HTTP_GET, [](AsyncWebServerRequest *request)
            { request->send_P(200, "text/plain", readAHTTemperature().c_str()); });
  server.on("/humidite", HTTP_GET, [](AsyncWebServerRequest *request)
            { request->send_P(200, "text/plain", readAHTHumidity().c_str()); });
  server.on("/update", HTTP_GET, [](AsyncWebServerRequest *request)
            {
    if (request->hasParam(PARAM_INPUT_1) && request->hasParam(PARAM_INPUT_2))
    {
      inputMessage1 = request->getParam(PARAM_INPUT_1)->value();
      inputMessage2 = request->getParam(PARAM_INPUT_2)->value();
    }

    Affiche_gpio();

    request->send(200, "text/plain", "OK"); });

  //  ----------------------------- Formulaire -------------------------------
  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request)
            {
              request->send_P(200, "text/html", index_html); // Envoyer la page HTML depuis le fichier index_html.h
            });

  server.on("/submit", HTTP_POST, [](AsyncWebServerRequest *request)
            {
    if (request->hasParam("T1_Debut_EV1", true)) {
      T1_Debut_EV1 = request->getParam("T1_Debut_EV1", true)->value();
    }
 if (request->hasParam("T1_Debut_M_EV1", true)) {
      T1_Debut_M_EV1 = request->getParam("T1_Debut_M_EV1", true)->value();
    }
    if (request->hasParam("T1_Nb_Cycle_EV1", true)) {
      T1_Nb_Cycle_EV1 = request->getParam("T1_Nb_Cycle_EV1", true)->value();
    }
    if (request->hasParam("T1_Periode_Cycle_EV1", true)) {
      T1_Periode_Cycle_EV1 = request->getParam("T1_Periode_Cycle_EV1", true)->value();
    }
    if (request->hasParam("T1_Duree_Cycle_EV1", true)) {
      T1_Duree_Cycle_EV1 = request->getParam("T1_Duree_Cycle_EV1", true)->value();
    }

    String response = "<!DOCTYPE html><html lang=\"fr\"><head><meta charset=\"UTF-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Résultat de l'Arrosage</title></head><body>";
    response += "<div style=\"background-color: blue; padding: 10px;\">";
    response += "<h3 style=\"color: white;\">Zone 1</h3>";
    response += "<p style=\"color: white;\">Heure de démarrage: " + T1_Debut_EV1 + "</p>";
    response += "<p style=\"color: white;\">Minute de démarrage: " + T1_Debut_M_EV1 + "</p>";
    response += "<p style=\"color: white;\">Nombre d'arrosage: " + T1_Nb_Cycle_EV1 + "</p>";
    response += "<p style=\"color: white;\">Intervalle d'arrosage: " + T1_Periode_Cycle_EV1 + "</p>";
    response += "<p style=\"color: white;\">Durée d'arrosage: " + T1_Duree_Cycle_EV1 + "</p>";
    response += "</div>";
    response += "<br><br><a href=\"/\" style=\"background-color: white; color: blue; padding: 10px 20px; text-decoration: none; border: 1px solid blue;\">Retour</a>";
    response += "</body></html>";
    ecriture_json();
    request->send(200, "text/html", response); });

  // Start server
  server.begin();
}