4 sorties sur nodeMCU V3 esp8266

Bonjour a tous

j'ai besoins d'un coup de patte car je ne comprend pas la ou ça déconne

j'ai récupéré le programme d'un noce fonctionnant sur ESP8266 qui permet de crée un serveur (en mode AP) et de le commander depuis un appareil se connectant en wifi dessus.

https://lastminuteengineers.com/creating-esp8266-web-server-arduino-ide/

Pour mes besoins personnel j'ai modifier le programme pour ne pas avoir une sortie mais 4

j'ai bien les 4 boutons qui s'affiche sur la page web généré par le node donc ce qui est certain c'est qu'il fonctionne.

en revanche rien ne fonctionne correctement quand j'appuie sur les boutons du serveur j'ai par exemple

led1 on = gpio 7 et le bouton bascule led1off gpio 7 et le bouton reviens à la normale

Led 2 on = Gpio 6 et le bouton led 4 bascule au lieu du 2 et quand je fait off rien ne se passe

voila le type de problème que je rencontre.

je suppose que ça viens de ce passage la:

void handle_led1on() {
  LED1status = HIGH;
  Serial.println("GPIO7 Status: ON");
  server.send(200, "text/html", SendHTML(true,LED2status,LED3status,LED4status)); 
}

void handle_led1off() {
  LED1status = LOW;
  Serial.println("GPIO7 Status: OFF");
  server.send(200, "text/html", SendHTML(false,LED2status,LED3status,LED4status)); 
}

void handle_led2on() {
  LED2status = HIGH;
  Serial.println("GPIO6 Status: ON");
  server.send(200, "text/html", SendHTML(LED1status,LED3status,LED4status,true)); 
}

void handle_led2off() {
  LED2status = LOW;
  Serial.println("GPIO6 Status: OFF");
  server.send(200, "text/html", SendHTML(LED1status,LED3status,LED4status,false)); 
}

void handle_led3on() {
  LED3status = HIGH;
  Serial.println("GPIO4 Status: ON");
  server.send(200, "text/html", SendHTML(true,LED1status,LED2status,LED4status)); 
}

void handle_led3off() {
  LED3status = LOW;
  Serial.println("GPIO4 Status: OFF");
  server.send(200, "text/html", SendHTML(false,LED1status,LED2status,LED4status)); 
}

void handle_led4on() {
  LED4status = HIGH;
  Serial.println("GPIO5 Status: ON");
  server.send(200, "text/html", SendHTML(true,LED1status,LED2status,LED3status)); 
}

void handle_led4off() {
  LED4status = LOW;
  Serial.println("GPIO5 Status: OFF");
  server.send(200, "text/html", SendHTML(false,LED1status,LED2status,LED3status)); 
}

void handle_NotFound(){
  server.send(404, "text/plain", "Not found");
}

je pense que ca se trouve ou il y a l'ensemble des status led... mais pas sur

Pour modifier le code j'ai uniquement dupliqué les passages LED 1 et 2 et renommant par 3 et 4

quelqu'un aurait une idée ?

merci d'avance a tous

je met mon code modifié car je ne peux pas le mettre entre crochet car il est trop long

j’aimerai par la suite mettre des conditions sur l’allumage des sorties mais ça viendra après…

esp2.ino (5.65 KB)

Je pense que si tu changes dans tes fonctions "handle***" les lignes du genre

SendHTML(true,LED2status,LED3status,LED4status)

par celle-ci

SendHTML(LED1status,LED2status,LED3status,LED4status)

ça devrait s'arranger

Les lignes seront alors toutes les mêmes, comme suit :

  server.send(200, "text/html", SendHTML(LED1status,LED2status,LED3status,LED4status));

bonjour effectivement ca a resolu mon soucis pour les led 1 et 2 mais par contre 3 et 4 ne fonctionne pas

il ne bacule pas sur On ou OFF et dans l'invit de commande c'est uniquement GPIO7 qui s'affiche en mode ON

j'ai du passer a coté d'une ligne.... mais laquelle

merci de ton aide

ca a pour effet d'allumer uniquement la LED 1 quand j"appuie sur 3 ou 4

Il faudrait voir le code entier.

je l'ai mis en ino a la suite de mon premier post, le problème est qu'il ne passe pas en entier sur le forum....

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

/* Put your SSID & Password */
const char* ssid = "NodeMCU";  // Enter SSID here
const char* password = "12345678";  //Enter Password here

// les LEDs sont reliées aux broches GPIO 2, 4 et 5 de l'ESP
#define brocheLED1pin  D7
#define brocheLED2pin  D6
#define brocheLED3pin  D1
#define brocheLED4pin  D2


/* Put IP Address details */
IPAddress local_ip(192,168,1,1);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);

ESP8266WebServer server(80);

uint8_t LED1pin; 
bool LED1status = LOW;

uint8_t LED2pin; 
bool LED2status = LOW;

uint8_t LED3pin; 
bool LED3status = LOW;

uint8_t LED4pin; 
bool LED4status = LOW;

void setup() {
  Serial.begin(115200);
  pinMode(LED1pin, OUTPUT);
  pinMode(LED2pin, OUTPUT);
  pinMode(LED3pin, OUTPUT);
  pinMode(LED4pin, OUTPUT); 

  WiFi.softAP(ssid, password);
  WiFi.softAPConfig(local_ip, gateway, subnet);
  delay(100);
  
  server.on("/", handle_OnConnect);
  server.on("/led1on", handle_led1on);
  server.on("/led1off", handle_led1off);
  server.on("/led2on", handle_led2on);
  server.on("/led2off", handle_led2off);
  server.on("/led3on", handle_led1on);
  server.on("/led3off", handle_led1off);
  server.on("/led4on", handle_led1on);
  server.on("/led4off", handle_led1off);
  server.onNotFound(handle_NotFound);
  
  server.begin();
  Serial.println("HTTP server started");
}
void loop() {
  server.handleClient();
  if(LED1status)
  {digitalWrite(LED1pin, HIGH);}
  else
  {digitalWrite(LED1pin, LOW);}
  
  if(LED2status)
  {digitalWrite(LED2pin, HIGH);}
  else
  {digitalWrite(LED2pin, LOW);}

  if(LED3status)
  {digitalWrite(LED3pin, HIGH);}
  else
  {digitalWrite(LED3pin, LOW);}

  if(LED4status)
  {digitalWrite(LED4pin, HIGH);}
  else
  {digitalWrite(LED4pin, LOW);}
}

void handle_OnConnect() {
  LED1status = LOW;
  LED2status = LOW;
  LED3status = LOW;
  LED4status = LOW;
  Serial.println("GPIO7 Status: OFF | GPIO6 Status: OFF | GPIO4 Status: OFF | GPIO5 Status: OFF");
  server.send(200, "text/html", SendHTML(LED1status,LED2status,LED3status,LED4status)); 
}

void handle_led1on() {
  LED1status = HIGH;
  Serial.println("GPIO7 Status: ON");
  server.send(200, "text/html", SendHTML(LED1status,LED2status,LED3status,LED4status)); 
}

void handle_led1off() {
  LED1status = LOW;
  Serial.println("GPIO7 Status: OFF");
  server.send(200, "text/html", SendHTML(LED1status,LED2status,LED3status,LED4status));
}

void handle_led2on() {
  LED2status = HIGH;
  Serial.println("GPIO6 Status: ON");
  server.send(200, "text/html", SendHTML(LED1status,LED2status,LED3status,LED4status)); 
}

void handle_led2off() {
  LED2status = LOW;
  Serial.println("GPIO6 Status: OFF");
  server.send(200, "text/html", SendHTML(LED1status,LED2status,LED3status,LED4status)); 
}

void handle_led3on() {
  LED3status = HIGH;
  Serial.println("GPIO4 Status: ON");
  server.send(200, "text/html", SendHTML(LED1status,LED2status,LED3status,LED4status)); 
}

void handle_led3off() {
  LED3status = LOW;
  Serial.println("GPIO4 Status: OFF");
  server.send(200, "text/html", SendHTML(LED1status,LED2status,LED3status,LED4status)); 
}

void handle_led4on() {
  LED4status = HIGH;
  Serial.println("GPIO5 Status: ON");
  server.send(200, "text/html", SendHTML(LED1status,LED2status,LED3status,LED4status));
}

void handle_led4off() {
  LED4status = LOW;
  Serial.println("GPIO5 Status: OFF");
  server.send(200, "text/html", SendHTML(LED1status,LED2status,LED3status,LED4status)); 
}

void handle_NotFound(){
  server.send(404, "text/plain", "Not found");
}

String SendHTML(uint8_t led1stat,uint8_t led2stat,uint8_t led3stat,uint8_t led4stat){
  String ptr = "<!DOCTYPE html> <html>\n";
  ptr +="<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\">\n";
  ptr +="<title>LED Control</title>\n";
  ptr +="<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}\n";
  ptr +="body{margin-top: 50px;} h1 {color: #444444;margin: 50px auto 30px;} h3 {color: #444444;margin-bottom: 50px;}\n";
  ptr +=".button {display: block;width: 80px;background-color: #1abc9c;border: none;color: white;padding: 13px 30px;text-decoration: none;font-size: 25px;margin: 0px auto 35px;cursor: pointer;border-radius: 4px;}\n";
  ptr +=".button-on {background-color: #1abc9c;}\n";
  ptr +=".button-on:active {background-color: #16a085;}\n";
  ptr +=".button-off {background-color: #34495e;}\n";
  ptr +=".button-off:active {background-color: #2c3e50;}\n";
  ptr +="p {font-size: 14px;color: #888;margin-bottom: 10px;}\n";
  ptr +="</style>\n";
  ptr +="</head>\n";
  ptr +="<body>\n";
  ptr +="<h1>ESP8266 Web Server</h1>\n";
  ptr +="<h3>Using Access Point(AP) Mode</h3>\n";
  
   if(led1stat)
  {ptr +="<p>LED1 Status: ON</p><a class=\"button button-off\" href=\"/led1off\">OFF</a>\n";}
  else
  {ptr +="<p>LED1 Status: OFF</p><a class=\"button button-on\" href=\"/led1on\">ON</a>\n";}

  if(led2stat)
  {ptr +="<p>LED2 Status: ON</p><a class=\"button button-off\" href=\"/led2off\">OFF</a>\n";}
  else
  {ptr +="<p>LED2 Status: OFF</p><a class=\"button button-on\" href=\"/led2on\">ON</a>\n";}

  if(led3stat)
  {ptr +="<p>LED3 Status: ON</p><a class=\"button button-off\" href=\"/led3off\">OFF</a>\n";}
  else
  {ptr +="<p>LED3 Status: OFF</p><a class=\"button button-on\" href=\"/led3on\">ON</a>\n";}

  if(led4stat)
  {ptr +="<p>LED4 Status: ON</p><a class=\"button button-off\" href=\"/led4off\">OFF</a>\n";}
  else
  {ptr +="<p>LED4 Status: OFF</p><a class=\"button button-on\" href=\"/led4on\">ON</a>\n";}

  ptr +="</body>\n";
  ptr +="</html>\n";
  return ptr;
}

aujourd'hui ça passe va comprendre

D’abord, n’utilise pas la pin D1 qui est réservée à la communication série avec le PC.

Ensuite, tu peux déplacer tes digitalWrite dans les fonctions handle ce qui te simplifiera considérablement la loop.
La loop deviendra juste

void loop () {
  server.handleClient();
}

Et tes handle, par exemple

void handle_led1on() {
 LED1status = HIGH;
 digitalWrite(LED1pin, LED1status) :
 Serial.println("GPIO7 Status: ON");
 server.send(200, "text/html", SendHTML(LED1status,LED2status,LED3status,LED4status));
}

void handle_led1off() {
 LED1status = LOW;
 digitalWrite(LED1pin, LED1status) :
 Serial.println("GPIO7 Status: OFF");
 server.send(200, "text/html", SendHTML(LED1status,LED2status,LED3status,LED4status));
}

j'ai fait les modifs et toujours pareil

bouton led 1 et 2 pas de soucis de fonctionnement

par contre led 3 et 4 allume la numéro 1 et affichage GPIO 7 uniquement et pas d'action OFF

ce qui est étonnant c'est que j'ai uniquement dupliqué ce qui fonctionnait avant

attend j’ai trouvé

server.on("/", handle_OnConnect);
  server.on("/led1on", handle_led1on);
  server.on("/led1off", handle_led1off);
  server.on("/led2on", handle_led2on);
  server.on("/led2off", handle_led2off);
  server.on("/led3on", handle_led1on);
  server.on("/led3off", handle_led1off);
  server.on("/led4on", handle_led1on);
  server.on("/led4off", handle_led1off);
  server.onNotFound(handle_NotFound);

il y a led 1 ecrit sur 3 et 4 …

niveau site web ca fonctionne maintenan

Cool...

par contre je n'ai pas de basculement de la sortie sur la carte etonnant non?

quand je fait un essais j'ai toujours la meme sortie qui s'allume que ce soit en cliquant sur 1 2 ou 3 ou 4

L'exemple que je te donnais dans la réponse 9 est à adapter pour les autres leds.

Sinon poste ton code...

j’ai bien pris en compte la suppression des D

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

/* Put your SSID & Password */
const char* ssid = "NodeMCU";  // Enter SSID here
const char* password = "12345678";  //Enter Password here

// les LEDs sont reliées aux broches GPIO 2, 4 et 5 de l'ESP
#define brocheLED1pin  7
#define brocheLED2pin  6
#define brocheLED3pin  4
#define brocheLED4pin  5


/* Put IP Address details */
IPAddress local_ip(192,168,1,1);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);

ESP8266WebServer server(80);

uint8_t LED1pin; 
bool LED1status = LOW;

uint8_t LED2pin; 
bool LED2status = LOW;

uint8_t LED3pin; 
bool LED3status = LOW;

uint8_t LED4pin; 
bool LED4status = LOW;

void setup() {
  Serial.begin(115200);
  pinMode(LED1pin, OUTPUT);
  pinMode(LED2pin, OUTPUT);
  pinMode(LED3pin, OUTPUT);
  pinMode(LED4pin, OUTPUT); 

  WiFi.softAP(ssid, password);
  WiFi.softAPConfig(local_ip, gateway, subnet);
  delay(100);
  
  server.on("/", handle_OnConnect);
  server.on("/led1on", handle_led1on);
  server.on("/led1off", handle_led1off);
  server.on("/led2on", handle_led2on);
  server.on("/led2off", handle_led2off);
  server.on("/led3on", handle_led3on);
  server.on("/led3off", handle_led3off);
  server.on("/led4on", handle_led4on);
  server.on("/led4off", handle_led4off);
  server.onNotFound(handle_NotFound);
  
  server.begin();
  Serial.println("HTTP server started");
}
void loop () {
  server.handleClient();
}

void handle_OnConnect() {
  LED1status = LOW;
  LED2status = LOW;
  LED3status = LOW;
  LED4status = LOW;
  Serial.println("GPIO7 Status: OFF | GPIO6 Status: OFF | GPIO4 Status: OFF | GPIO5 Status: OFF");
  server.send(200, "text/html", SendHTML(LED1status,LED2status,LED3status,LED4status)); 
}

void handle_led1on() {
 LED1status = HIGH;
 digitalWrite(LED1pin, LED1status) ;
 Serial.println("GPIO7 Status: ON");
 server.send(200, "text/html", SendHTML(LED1status,LED2status,LED3status,LED4status));
}

void handle_led1off() {
 LED1status = LOW;
 digitalWrite(LED1pin, LED1status) ;
 Serial.println("GPIO7 Status: OFF");
 server.send(200, "text/html", SendHTML(LED1status,LED2status,LED3status,LED4status));
}

void handle_led2on() {
 LED2status = HIGH;
 digitalWrite(LED2pin, LED2status);
 Serial.println("GPIO6 Status: ON");
 server.send(200, "text/html", SendHTML(LED1status,LED2status,LED3status,LED4status));
}

void handle_led2off() {
 LED2status = LOW;
 digitalWrite(LED2pin, LED2status);
 Serial.println("GPIO6 Status: OFF");
 server.send(200, "text/html", SendHTML(LED1status,LED2status,LED3status,LED4status));
}

void handle_led3on() {
 LED3status = HIGH;
 digitalWrite(LED3pin, LED3status);
 Serial.println("GPIO4 Status: ON");
 server.send(200, "text/html", SendHTML(LED1status,LED2status,LED3status,LED4status));
}

void handle_led3off() {
 LED3status = LOW;
 digitalWrite(LED3pin, LED3status);
 Serial.println("GPIO4 Status: OFF");
 server.send(200, "text/html", SendHTML(LED1status,LED2status,LED3status,LED4status));
}

void handle_led4on() {
 LED4status = HIGH;
 digitalWrite(LED4pin, LED4status) ;
 Serial.println("GPIO5 Status: ON");
 server.send(200, "text/html", SendHTML(LED1status,LED2status,LED3status,LED4status));
}

void handle_led4off() {
 LED4status = LOW;
 digitalWrite(LED4pin, LED4status);
 Serial.println("GPIO5 Status: OFF");
 server.send(200, "text/html", SendHTML(LED1status,LED2status,LED3status,LED4status));
}

void handle_NotFound(){
  server.send(404, "text/plain", "Not found");
}

String SendHTML(uint8_t led1stat,uint8_t led2stat,uint8_t led3stat,uint8_t led4stat){
  String ptr = "<!DOCTYPE html> <html>\n";
  ptr +="<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\">\n";
  ptr +="<title>LED Control</title>\n";
  ptr +="<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}\n";
  ptr +="body{margin-top: 50px;} h1 {color: #444444;margin: 50px auto 30px;} h3 {color: #444444;margin-bottom: 50px;}\n";
  ptr +=".button {display: block;width: 80px;background-color: #1abc9c;border: none;color: white;padding: 13px 30px;text-decoration: none;font-size: 25px;margin: 0px auto 35px;cursor: pointer;border-radius: 4px;}\n";
  ptr +=".button-on {background-color: #1abc9c;}\n";
  ptr +=".button-on:active {background-color: #16a085;}\n";
  ptr +=".button-off {background-color: #34495e;}\n";
  ptr +=".button-off:active {background-color: #2c3e50;}\n";
  ptr +="p {font-size: 14px;color: #888;margin-bottom: 10px;}\n";
  ptr +="</style>\n";
  ptr +="</head>\n";
  ptr +="<body>\n";
  ptr +="<h1>ESP8266 Web Server</h1>\n";
  ptr +="<h3>Using Access Point(AP) Mode</h3>\n";
  
   if(led1stat)
  {ptr +="<p>LED1 Status: ON</p><a class=\"button button-off\" href=\"/led1off\">OFF</a>\n";}
  else
  {ptr +="<p>LED1 Status: OFF</p><a class=\"button button-on\" href=\"/led1on\">ON</a>\n";}

  if(led2stat)
  {ptr +="<p>LED2 Status: ON</p><a class=\"button button-off\" href=\"/led2off\">OFF</a>\n";}
  else
  {ptr +="<p>LED2 Status: OFF</p><a class=\"button button-on\" href=\"/led2on\">ON</a>\n";}

  if(led3stat)
  {ptr +="<p>LED3 Status: ON</p><a class=\"button button-off\" href=\"/led3off\">OFF</a>\n";}
  else
  {ptr +="<p>LED3 Status: OFF</p><a class=\"button button-on\" href=\"/led3on\">ON</a>\n";}

  if(led4stat)
  {ptr +="<p>LED4 Status: ON</p><a class=\"button button-off\" href=\"/led4off\">OFF</a>\n";}
  else
  {ptr +="<p>LED4 Status: OFF</p><a class=\"button button-on\" href=\"/led4on\">ON</a>\n";}

  ptr +="</body>\n";
  ptr +="</html>\n";
  return ptr;
}

Tu n’initialises pas les LEDpin mais les brocheLEDpin, tu as de la chance qu’il se passe quelque chose…

Salut

voila le code fonctionnel si ça intéresse quelqu’un je le met la 4 relais sur un ESP8266 node MCU

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

/* Put your SSID & Password */
const char* ssid = "NodeMCU";  // Enter SSID here
const char* password = "12345678";  //Enter Password here



/* Put IP Address details */
IPAddress local_ip(192,168,1,1);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);

ESP8266WebServer server(80);

uint8_t LED1pin = 13; 
bool LED1status = LOW;

uint8_t LED2pin = 12; 
bool LED2status = LOW;

uint8_t LED3pin = 5; 
bool LED3status = LOW;

uint8_t LED4pin = 4; 
bool LED4status = LOW;

void setup() {
  Serial.begin(115200);
  pinMode(LED1pin, OUTPUT);
  pinMode(LED2pin, OUTPUT);
  pinMode(LED3pin, OUTPUT);
  pinMode(LED4pin, OUTPUT); 

  WiFi.softAP(ssid, password);
  WiFi.softAPConfig(local_ip, gateway, subnet);
  delay(100);
  
  server.on("/", handle_OnConnect);
  server.on("/led1on", handle_led1on);
  server.on("/led1off", handle_led1off);
  server.on("/led2on", handle_led2on);
  server.on("/led2off", handle_led2off);
  server.on("/led3on", handle_led3on);
  server.on("/led3off", handle_led3off);
  server.on("/led4on", handle_led4on);
  server.on("/led4off", handle_led4off);
  server.onNotFound(handle_NotFound);
  
  server.begin();
  Serial.println("HTTP server started");
}
void loop () {
  server.handleClient();
}

void handle_OnConnect() {
  LED1status = LOW;
  LED2status = LOW;
  LED3status = LOW;
  LED4status = LOW;
  Serial.println("GPIO7 Status: OFF | GPIO6 Status: OFF | GPIO4 Status: OFF | GPIO5 Status: OFF");
  server.send(200, "text/html", SendHTML(LED1status,LED2status,LED3status,LED4status)); 
}

void handle_led1on() {
 LED1status = HIGH;
 digitalWrite(LED1pin, LED1status) ;
 Serial.println("GPIO7 Status: ON");
 server.send(200, "text/html", SendHTML(LED1status,LED2status,LED3status,LED4status));
}

void handle_led1off() {
 LED1status = LOW;
 digitalWrite(LED1pin, LED1status) ;
 Serial.println("GPIO7 Status: OFF");
 server.send(200, "text/html", SendHTML(LED1status,LED2status,LED3status,LED4status));
}

void handle_led2on() {
 LED2status = HIGH;
 digitalWrite(LED2pin, LED2status);
 Serial.println("GPIO6 Status: ON");
 server.send(200, "text/html", SendHTML(LED1status,LED2status,LED3status,LED4status));
}

void handle_led2off() {
 LED2status = LOW;
 digitalWrite(LED2pin, LED2status);
 Serial.println("GPIO6 Status: OFF");
 server.send(200, "text/html", SendHTML(LED1status,LED2status,LED3status,LED4status));
}

void handle_led3on() {
 LED3status = HIGH;
 digitalWrite(LED3pin, LED3status);
 Serial.println("GPIO4 Status: ON");
 server.send(200, "text/html", SendHTML(LED1status,LED2status,LED3status,LED4status));
}

void handle_led3off() {
 LED3status = LOW;
 digitalWrite(LED3pin, LED3status);
 Serial.println("GPIO4 Status: OFF");
 server.send(200, "text/html", SendHTML(LED1status,LED2status,LED3status,LED4status));
}

void handle_led4on() {
 LED4status = HIGH;
 digitalWrite(LED4pin, LED4status) ;
 Serial.println("GPIO5 Status: ON");
 server.send(200, "text/html", SendHTML(LED1status,LED2status,LED3status,LED4status));
}

void handle_led4off() {
 LED4status = LOW;
 digitalWrite(LED4pin, LED4status);
 Serial.println("GPIO5 Status: OFF");
 server.send(200, "text/html", SendHTML(LED1status,LED2status,LED3status,LED4status));
}

void handle_NotFound(){
  server.send(404, "text/plain", "Not found");
}

String SendHTML(uint8_t led1stat,uint8_t led2stat,uint8_t led3stat,uint8_t led4stat){
  String ptr = "<!DOCTYPE html> <html>\n";
  ptr +="<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\">\n";
  ptr +="<title>LED Control</title>\n";
  ptr +="<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}\n";
  ptr +="body{margin-top: 50px;} h1 {color: #444444;margin: 50px auto 30px;} h3 {color: #444444;margin-bottom: 50px;}\n";
  ptr +=".button {display: block;width: 80px;background-color: #1abc9c;border: none;color: white;padding: 13px 30px;text-decoration: none;font-size: 25px;margin: 0px auto 35px;cursor: pointer;border-radius: 4px;}\n";
  ptr +=".button-on {background-color: #1abc9c;}\n";
  ptr +=".button-on:active {background-color: #16a085;}\n";
  ptr +=".button-off {background-color: #34495e;}\n";
  ptr +=".button-off:active {background-color: #2c3e50;}\n";
  ptr +="p {font-size: 14px;color: #888;margin-bottom: 10px;}\n";
  ptr +="</style>\n";
  ptr +="</head>\n";
  ptr +="<body>\n";
  ptr +="<h1>ESP8266 Web Server</h1>\n";
  ptr +="<h3>Using Access Point(AP) Mode</h3>\n";
  
   if(led1stat)
  {ptr +="<p>LED1 Status: ON</p><a class=\"button button-off\" href=\"/led1off\">OFF</a>\n";}
  else
  {ptr +="<p>LED1 Status: OFF</p><a class=\"button button-on\" href=\"/led1on\">ON</a>\n";}

  if(led2stat)
  {ptr +="<p>LED2 Status: ON</p><a class=\"button button-off\" href=\"/led2off\">OFF</a>\n";}
  else
  {ptr +="<p>LED2 Status: OFF</p><a class=\"button button-on\" href=\"/led2on\">ON</a>\n";}

  if(led3stat)
  {ptr +="<p>LED3 Status: ON</p><a class=\"button button-off\" href=\"/led3off\">OFF</a>\n";}
  else
  {ptr +="<p>LED3 Status: OFF</p><a class=\"button button-on\" href=\"/led3on\">ON</a>\n";}

  if(led4stat)
  {ptr +="<p>LED4 Status: ON</p><a class=\"button button-off\" href=\"/led4off\">OFF</a>\n";}
  else
  {ptr +="<p>LED4 Status: OFF</p><a class=\"button button-on\" href=\"/led4on\">ON</a>\n";}

  ptr +="</body>\n";
  ptr +="</html>\n";
  return ptr;
}

est ce que je peux abuser de ta gentillesse?

je vais essayer de faire deux variante a ce code à savoir

des conditions de mise en route de sortie

par exemple la 2 et la 3 ne peuvent être activé que si la 1 l'est

impossible d'activer la 2 si la 3 est active etc..

je peux te solliciter en cas de soucis?

merci et bonne soirée