ESP8266 : allumer éteindre 2 LEDS en WiFi

Bonjour, j'ai voulu commencé la prise en main de l'ESP8266 (j'utilise un ESP-12E) j'ai commencé simplement par allumer et éteindre une led via un serveur en me connectant au WiFi via ce tuto : ESP8266 : contrôle d'une led par une page web - Mace Robotics-fr )

Le code de ce tuto fonctionne parfaitement, cependant j'aimerais bien essayer d'allumer et éteindre 2 leds en modifiant simplement ce code pour comprendre le fonctionnement du serveur. J'ai donc tenté de faire cette modification, cependant cela ne fonctionne pas, j'affiche bien les boutons nécessaire sur le serveur pour allumer et éteindre chaque led, mais lorsque je clic dessus rien ne se passe :confused:

Pourriez-vous m'aider svp? :slight_smile:

Voici mon code modifier par rapport a celui du tuto:

#include <ESP8266WiFi.h>
 
const char* ssid = "XXX";   //non je ne vous donnerai pas les identifiants de mon WiFi :D 
const char* password = "XXXXX";
 
int ledPin1 = D0;  // Première Led
int ledPin2 = D1; // Deuxième Led

WiFiServer server(80);
 
void setup() 
{
  // initialisation de la communication série
  Serial.begin(115200);
  
  delay(100);

  // initialisation de la sortie pour la led 
  pinMode(ledPin1, OUTPUT);
  digitalWrite(ledPin1, LOW);

  pinMode(ledPin2, OUTPUT);
  digitalWrite(ledPin2, LOW);
 
  // Connexion wifi
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
 
  WiFi.begin(ssid, password);

  // connection  en cours ...
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }

  // Wifi connecter
  Serial.println("WiFi connecter");
 
  // Démmarrage du serveur.
  server.begin();
  Serial.println("Serveur demarrer !");
 
  // Affichage de l'adresse IP
  Serial.print("Utiliser cette adresse URL pour la connexion :");
  Serial.print("http://");
  Serial.print(WiFi.localIP());
  Serial.println("/");
 
}
 
void loop() 
{
WiFiClient client;

  
  // Vérification si le client est connecter.
  client = server.available();
  if (!client)
  {
    return;
  }
 
  // Attendre si le client envoie des données ...
  Serial.println("nouveau client");
  while(!client.available()){
    delay(1);
  }
 
  String request = client.readStringUntil('\r');
  Serial.println(request);
  client.flush();
  
//PARTIE LED1
  int value1 = LOW;
  if (request.indexOf("/LED1=ON") != -1)  {
    digitalWrite(ledPin1, HIGH); // allumer la led1
    value1 = HIGH;
  }
  if (request.indexOf("/LED1=OFF") != -1)  {
    digitalWrite(ledPin1, LOW); // éteindre la led1
    value1 = LOW;
  }

//PARTIE LED2
 int value2 = LOW;
  if (request.indexOf("/LED2=ON") != -1)  {
    digitalWrite(ledPin2, HIGH); // allumer la led2
    value2 = HIGH;
  }
  if (request.indexOf("/LED2=OFF") != -1)  {
    digitalWrite(ledPin2, LOW); // éteindre la led2
    value2 = LOW;
  }  
 
  // Réponse
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println(""); 
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");

   //PARTIE LED1
  client.print("Etat de la led1 : ");
  
  if(value1 == HIGH) {
    client.print("On");
  } else {
    client.print("Off");
  }
  
  client.println("

");
  client.println("<a href=\"/LED1=ON\"\"><button>Allumer led1 </button></a>");
  client.println("<a href=\"/LED1=OFF\"\"><button>Eteindre led1 </button></a>
");  
  client.println("</html>");

    //PARTIE LED2
  client.print("Etat de la led2 : ");
 
  if(value2 == HIGH) {
    client.print("On");
  } else {
    client.print("Off");
  }
  
  client.println("

");
  client.println("<a href=\"/LED2=ON\"\"><button>Allumer led2 </button></a>");
  client.println("<a href=\"/LED2=OFF\"\"><button>Eteindre led2 </button></a>
");  
  client.println("</html>");
 
  delay(1);
  Serial.println("Client deconnecter");
  Serial.println("");
 
}

votre réponse HTML est mal fichue vous avez deux client.println("</html>"); par exemple, il y a sans doute un guillement de trop dans l'URL des boutons aussi (moins grave au vu du code)

regadez la console de votre navigateur web ou le mode débug - vous allez voir qu'il nest pas content de ce qu'il reçoit

Bonjour, merci pour vôtre réponse, je débute seulement avec l'ESP, excusez moi s'il y a des erreurs flagrantes :slight_smile:

En faite j'ai tenté de comprendre comment la personne a sur le tuto a tapé le code pour l'utilisation d'une led sur le serveur, j'ai donc repris la partie et je l'ai copié collé en remplacent led1 par led2... ce qui a priori ne suffit pas :stuck_out_tongue:

Pourriez-vous m'éclairer la dessus? J'ai regardé plusieurs liens internet mais aucun n'explique correctement l'utilisation de ces commandes

est-ce que vous avez un peu de compréhension de ce qu'est une page web et comment elle est structurée en HTML? si ce n'est pas le cas, prenez un peu de temps pour lire le début d'un tuto HTML sinon vous allez galèrer pour tout votre code.

une fois que vous comprenez la structure d'une page web, dites vous que c'est ce que tous les client.print font dans votre code: si vous mettez bout à bout tout ce qui est imprimé c'est votre page web

--> pour comprendre faites l'exercice d'extraire la page générée dans votre code.

--> il faut qu'elle soit bien écrite en respectant le HTML sinon votre navigateur va être perdu. une première règle étant que la balise </html> termine votre description de page et par définition donc vous ne pouvez en avoir qu'une seule dans une page (si on reste simple).