Webclient: récupérer variable dans une chaîne renvoyée par un serveur

Bonjour,

J'ai paramétré mon Shield en webclient et j'arrive à recevoir les données HTTP de mon seveur. Pour que vous puissiez mieux comprendre, mon serveur PHP renvoie "echo 'ON';" lorsque que mon shield lui envoi "?data=light".
Voici le retour dans mon moniteur:

connected
HTTP/1.1 200 OK
Server: nginx/1.10.2
Date: Sat, 31 Dec 2016 14:48:39 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: close
Vary: Accept-Encoding
2
ON
0
disconnecting.

Jusque là, ça va
Mais je voudrais que mon Adruino puisse me faire un "digitalWrite(4, LOW)" quand le serveur PHP renvoie "ON".
Voici un extrait de mon sketch mais qui n'active pas le pin 4 :

...
char c = client.read();
      if(c == "ON")
      {
        digitalWrite(4, LOW);
      }
      Serial.print(c);
...

Comment savoir que j'ai bien reçu la chaîne "ON" ?

c est déclaré comme un caractère pas comme une chaîne donc c ne contient qu'un seul caractère.
Il faut reconstituer la chaîne de caractères en accumulant les caractères reçus jusqu'à rencontrer la fin de la chaîne envoyée.

Wow !!! Et comment tu fais ça ???

C'est bon, j'ai trouvé une solution.

J'ai déclaré en début: String mystring="";

Puis dans dans mon void loop():

if (client.available())
  {
      char c = client.read();
      mystring += c;

      if(mystring.endsWith("ON"))
      {
        digitalWrite(4, LOW);
      }
      Serial.print(c);

Si vous avez une méthode plus propre, je prends !

bonjour,
pourquoi ne pas jouer sur le php pour entrer 1 pour on et 0 pour off
comme ca, un seul caractère a prendre.

Ce que je comprends, et corrigez moi si je me trompe, c'est que l'Arduino lit tout les caractères 1 à 1 renvoyé par le serveur PHP donc il lit :
HTTP/1.1 200 OK
Server: nginx/1.10.2
Date: Sat, 31 Dec 2016 14:48:39 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: close
Vary: Accept-Encoding ...

Dès qu'il va rencontré le chiffre 1 ou 0, c'est fini... Il faut donc que la chaine qu'il doit trouver par la fonction endsWith() soit unique du type "ON" ou mieux "LIGHT_ON".
Je ne maitrise pas bien le langage Arduino et suis plûtot PHP, Javascript.
Mon objectif est de récupérer des données précises renvoyées par le serveur PHP. Il faut donc un sketch propre et fiable.

TEDDOL:
Ce que je comprends, et corrigez moi si je me trompe, c’est que l’Arduino lit tout les caractères 1 à 1 renvoyé par le serveur

Exactement, l’Arduino reçoit l’intégralité du HTML envoyé par le serveur et il faut faire le tri.
Maintenant, si la page envoyée par le serveur est à destination uniquement de l’Arduino, tu peux la simplifier et supprimer un maximum d’info du header qui de toutes les façons n’est pas exploité par l’Arduino.
Lorsque tu interprètes le HTML, tu peux aussi ignorer tout le texte qui précède

Mon problème maintenant est de parser la chaîne renvoyée par le serveur.
Je devrais utiliser des délimiteurs de début et de fin d'une partie de la chaine.

Exemple, si je décide que le serveur revoie #data1#data2#data3, comment récupérer individuellement data1, data2 et data3 ?

Quelle sera la solution la plus simple des méthodes entre le code Arduino et la string PHP renvoyée, sachant que j'ai la main libre sur le PHP ?