Serveur sur Esp8266 qui "plante"

Bonjour,
Merci beaucoup Microquettas et merci beaucoup J-M-L.

maintenant ça fonctionne sans bug même sous Chrome qui demande une favicon. :slight_smile:

Grace à vous 2 j'ai beaucoup appris en quelques jours et c'est le but entre autres
Microquettas, j'ai fait les modifs que vous m'aviez suggérées
remplacer mes println par des print là où le retour à la ligne était déjà dans la phrase...
déplacer mon accolade fermante du else qui était effectivement mal placée

ajouter la condition

 if (client.connected())
  {  /* Le client est encore connecté */
  client.close();  /* On peut le virer sans crainte */
  }
sauf que j'ai remplacé "client.close" par "client.stop" car close n'était pas dans la bibli (messe d'erreur)

j'ai remplacé le delay(1) par un yield();

Au passage merci à J-M-L qui m'avait dit d'enlever TOUS mes delay() mais j'en avais oublié un...

j'ai lu sur le net "Un delay de plus de 20us peut mener à des pertes de connexion."

Ca bugait encore, j'ai rajouté un yield() avant la réponse à la requête et depuis ça roule...

vous me parliez des tutos qu'il faut que je lise, je suis d'accord et je le fais déjà : je suis même en train d'essayer de retranscrire le tuto de J-M-L sur le shield ethernet pour moi pour l'adapter à l'esp8266 mais j'avoue que je n'y comprend rien.
en règle générale les tutos s'adressent aux utilisateurs ayant déjà une connaissance de base et je m'arrache la tête sur chaque ligne... alors ma technique est de prendre des exemples existant et de le modifier, souvent ça marche (et là je ne viens pas vous embêter) et parfois ça plante, comme aujourd'hui.
Dans d'espoir que ça puisse aider un autre débutant, je poste mon code modifié (je l'ai relativement documenté)

////////////////////////////////////////////////////////////////
// Programme simple de webserver
////////////////////////////////////////////////////////////////
#include <ESP8266WiFi.h> 

const char* ssid = "ma freebox";
const char* password = "mon pass";
int ledPin = 13;
 int value = LOW;
byte heureMonte=0;
// ATTENTION GPIO13 correspond à la PIN 07
WiFiServer server(80);

void setup() {
  Serial.begin(9600);// je l'ai supprimé pour tester si c'est lui qui rame mais non donc je l'ai remis
  delay(10);
  
   pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
 
  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
 
  // Start the server
  server.begin();
  Serial.println("Server started");
 
  // Print the IP address
  Serial.print("Use this URL to connect: ");
  Serial.print("http://");
  Serial.println(WiFi.localIP());
} 
void loop() {
  // Controle de la connection client
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
 
  // Attente de l'envoi de quelque chose du client
  Serial.println("new client");
 while(!client.available()){
    //delay(1); supprimé "Un delay de plus de 20us peut mener à des pertes de connexion."
  }
 
  // Première ligne de la requête
  String request = client.readStringUntil('\r');
  Serial.println(request);
 while (client.available()) client.read();// suggestion J-M-L au lieu de //client.flush();
 
  // Lecture-préparation réponse de la requête
 // int value = LOW; //je l'ai déplacé dans les déclarations en tete
 if (request.indexOf("/LED=ON") != -1)  {
    digitalWrite(ledPin, HIGH);
    value = HIGH;
  }
  else if (request.indexOf("/LED=OFF") != -1)  {
    digitalWrite(ledPin, LOW);
    value = LOW;
  }
  else if (request.indexOf("/heureMonte=+") != -1)  {
    heureMonte +=1; if (heureMonte==24){ heureMonte=0;}
   Serial.println("augmenter heureMonte");
  }
  yield();
 //delay(5);//ajouté par moi puis supprime
  // Réponse à la requête
       // ajout microquettas****************************************
       if (request.indexOf("/favicon.ico")!= -1){
         client.print("HTTP/1.1 200 OK\r\n");
         client.print("Content-Type: image/x-icon\r\n");
         client.print("Content-Length: 0\r\n\r\n");
        }//fin d'ajout microquettas
        else {
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println(""); 
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");
  client.println("<head>");
  client.println("</head>");
  client.println("<body>");
  client.println("<div style=\"text-align:center\">");
  client.println("<h1>TEST WIFI SERVEUR</h1>

");
  client.print("Led pin is now: ");
  
  if(value == HIGH) {
    client.print("On");
  } 
  else if (value==LOW)
  {
    client.print("Off");
  }
  client.println("

");
  client.println("<a href=\"/LED=ON\"\"><button style=\"height: 50px; width: 100px\"> ON </button></a>");
  client.println("<a href=\"/LED=OFF\"\"><button style=\"height: 50px; width: 100px\"> OFF </button></a>
");
  client.println("

");
  client.print("heureMonte = ");  
  client.println(heureMonte);
  client.println("

");
  client.println("<a href=\"/heureMonte=+\"\"><button style=\"height: 50px; width: 100px\"> heureMonte+1 </button></a>
");
     // deplacé 2 lignes plus bas   } // fin du else lié au favicon ou non
  client.println("</body>");
  client.println("</html>");
       } // fin du else lié au favicon ou non
  yield();//delay(1);
  if (client.connected())
  {  /* Le client est encore connecté */
 // client.close();  /* On peut le virer sans crainte */ DEBUG 'class WiFiClient' has no member named 'close'
  client.stop(); // termine la connexion
  Serial.println("Client déconnecté par client.stop");
  }
  //Serial.println("Client déconnecté");
  Serial.println("");
 
}