commande éclairage AVEC esp8266

bonjour
suite à une premier topic je reviens vers vous car je suis confronté à deux difficultés que je n’arrive pas à résoudre

La première relève du programme :
j’ai créé un point d’accès avec à cette adresse IP un serveur qui attend une requête GET
Lorsque je me connecte à ce serveur et que j’envoie ma requête mon programme à un comportement instable.
soit il exécute la requête en envoyant le message prévu puis repart dans une boucle d’attente, soit il exécute une fois la requête et il se bloque sur la ligne

Serial.println(“Nouveau client”);

La seconde difficulté est relative au comportement électrique de l’ESP8266
A terme j’ai prévu de piloter un relai statique mais pour l’instant j’utilise une led pilotée par le port GPIO2 via un transistor qui fonctionne en tout ou rien
le transistor est la diode étant eux alimentés sous 5 v j’ai mis, après calcul comme résistance de collecteur une valeur de 300 ohms et de 3 k pour la base ce qui donne un courant sur le gpio 2 de 1 Ma
En fonction des cas soit après le reset la diode s’allume sans commande et le programme fait que rebooter, soit cela fonctionne bien mais dès la première commutation la diode reste allumée

En espérant avoir une aide de votre part
cordialement

je joins mon programme

/*
Date : 23/09/2017
Description : Pilotage LED avec un browser WEB
Source : Exemple IDE Arduino
*/
#include <ESP8266WiFi.h>

// varialbles et constantes
IPAddress local_IP(192,168,4,22);
IPAddress gateway(192,168,4,9);
IPAddress subnet(255,255,255,0);
const char* ssid = “Eclairage”;
const char* password = “xxxxxxxxx;”;
int valref=1;
int val=1;

// Creation d un serveur qui ecoute sur le port 8080
WiFiServer server(local_IP,8080);

void setup() {
Serial.begin(115200);
delay(10);

// Declaration port GPIO2 en sortie
pinMode(2, OUTPUT);
digitalWrite(2, 0);

//Création du point d’accès
Serial.println();
Serial.println();
Serial.println(" création;IP;gateway, chanel");

Serial.print("Setting soft-AP configuration … ");
Serial.println(WiFi.softAPConfig(local_IP, gateway, subnet) ? “Ready” : “Failed!”);

Serial.print("Setting soft-AP … ");
Serial.println(WiFi.softAP(ssid,password) ? “Ready” : “Failed!”);

Serial.print("Soft-AP IP address = ");

Serial.println("");
Serial.println(“WiFi OK”);

// demarrage du serveur
server.begin();
Serial.println(“Server OK”);

// Adresse IP locale attribuee
Serial.println(WiFi.localIP());
}

void loop() {

val=0;
// Un client est-il connecte ?
WiFiClient client = server.available();
if (!client) {
Serial.println(“Pas de client connecté”);
return;
}

// Attente donnees envoyees par un client
Serial.println(“Nouveau client”);
while(!client.available()){
delay(1);
}

// Lecture premiere ligne de la requete
String req = client.readStringUntil(’\r’);
Serial.println(req);
client.flush();

// Decodage de la requete recue
if (req.indexOf("/gpio/1") != -1){
val = 1;
Serial.println(“Demande allumage LED”);}
else {
Serial.println(“Requete invalide”);
client.stop();
return;
}

// Positionnement port GPIO2
digitalWrite(2, val);

client.flush();

// Prepararation de la reponse au client WEB
String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n\r\n\r\nGPIO est maintenant ";
s += (val)?“allumee”:“eteinte”;
s += “\n”;

// Envoi de la reponse au client
client.print(s);
delay(1);
Serial.println(“Client deconnecte”);

if (val=1) {
delay(10000);
val=0;

}
Serial.println(val);

}

C’est quoi votre ESP?

Votre réponse http n’est pas conforme (ligne vide après le header)

N’utilisez pas la classe String...

Ne vous manque-t-il pas un client.stop(); ?

bonjour,
en premier je vous remercie pour ce début de réponse
je travaille avec un ESP8266-01

pourriez vous me préciser mon erreur concernant le Header car je l'avoue je ne maîtrise pas bien le sujet.
concernant le client.stop() je vais le rajouter car d'après ma compréhension suite à différentes lectures de topic j'ai compris qu'il permet de fermer la connexion avec le client et éviter d'être bloqué au niveau de " WiFiClient client = server.available();"

Pourriez vous me confirmer que client.close() permet de fermer la connexion au niveau du client.
Vous me conseillez de ne pas utiliser la classe String;Pourquoi t par quoi dois je la remplacer pour effectuer ma réponse

Par avance merci

bonjour,
j'ai enfin trouvé la raison du dysfonctionnement de mon montage
En effet cela résulte du mode de câblage de la puce qui impose que les pins GPIO 0 ET 2 soient positionnés en HIGH en démarrage normale
je vous conseille vivement le site suivant

https://www.forward.com.au/pfod/ESP8266/GPIOpins/index.html