Bonjour a tous, je cherche comment récupérer les valeurs d'un WebForm depuis mon ESP8266
Le code du Form HTML que j'utilise:
<form action="/postindex" method="POST">
<span>1</span>Select sensor 1 sensitivity for Your Plant</div>
<select name="sensor1" id="slct" required>
<option disabled selected value>Plant Sensor 1</option>
<option value="0">NONE</option>
<option value="1">Mint</option>
<option value="2">Parsley</option>
<option value="3">Basil</option>
<option value="4">Coriander</option>
<option value="5">Dill</option>
<option value="6">Sage</option>
<option value="7">rosemary</option>
</select>
<div class="button-section">
<input type="submit" name="Sign Up" />
</div>
</form>
Le code cote ESP
#include <ESP8266WiFi.h>
#include "FS.h"
const char* CONFIG_HTML = "/html/config.html";
const char* ssid = "SSID";
const char* password = "PASSWORD";
const uint16_t HTTPPort = 80;
WiFiServer serveurWeb(HTTPPort); // crée un serveur sur le port HTTP standard
const byte maxHTTPLine = 100;
char httpLine[maxHTTPLine + 1]; //+1 pour avoir la place du '\0'
const byte maxURL = 50;
char urlRequest[maxURL + 1]; //+1 pour avoir la place du '\0'
void setup()
{
Serial.begin(115200);
Serial.println("\n\nTest SPIFFS\n");
// on démarre le SPIFSS
if (!SPIFFS.begin())
{
Serial.println("erreur SPIFFS");
while (true); // on ne va pas plus loin
}
WiFi.begin(ssid, password);
Serial.println();
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.write('.');
}
Serial.println();
// on démarre le serveur
serveurWeb.begin();
printHTTPServerInfo();
}
void loop()
{
testRequeteWeb();
}
le code testRequeteWeb:
boolean testRequeteWeb()
{
boolean requeteHTTPRecue = false;
byte indexMessage = 0;
char * ptrGET, *ptrEspace;
WiFiClient client = serveurWeb.available();
if (!client) return requeteHTTPRecue; // pas de client connecté
boolean currentLineIsBlank = true;
while (client.connected())
{
if (client.available())
{
// on lit toute la trame HTTP, ici sans se soucier de la requête
char c = client.read();
//Serial.print(c);
if (c == '\n' && currentLineIsBlank) // une requête HTTP se termine par une ligne vide
{
// Control si le submit a ete presse
if(strstr(urlRequest, "/postindex"))
{
// QUEL SONT LES CODES QUE DOIS-JE UTILISER POUR RECUPERER LA VARIABLE DU FORM ?
}
// ON GENERE LA PAGE WEB
if (strcmp(urlRequest, "/favicon.ico")) // si ce n'est pas pour le favicon
{
requeteHTTPRecue = true;
// -------------------------------- Pour la Page CONFIG_HTML ------------------------------- //
// on regarde si on a une requete qui contient /reqEtatBouton
if (strstr(urlRequest, "/config"))
{
// on envoie la page web par défaut
if (SPIFFS.exists(CONFIG_HTML))
{
// On envoie un en tête de réponse HTTP standard
client.println(F("HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n"));
File pageWeb = SPIFFS.open(CONFIG_HTML, "r");
client.write(pageWeb,sizeof(pageWeb));
pageWeb.close();
}
else
{
Serial.println(F("Erreur de fichier"));
}
}
// -------------------------------- Fin Page CONFIG_HTML ------------------------------------ //
}
// on sort du while et termine la requête
break;
}
if (c == '\n')
{
currentLineIsBlank = true;
httpLine[indexMessage] = '\0'; // on termine la ligne correctement (c-string)
indexMessage = 0; // on se reprépre pour la prochaine ligne
if (ptrGET = strstr(httpLine, "GET"))
{
// c'est la requête GET, la ligne continent "GET /URL HTTP/1.1", on extrait l'URL
ptrEspace = strstr(ptrGET + 4, " ");
*ptrEspace = '\0';
strncpy(urlRequest, ptrGET + 4, maxURL);
urlRequest[maxURL] = '\0'; // par précaution si URL trop longue
}
}
else if (c != '\r')
{
currentLineIsBlank = false;
if (indexMessage <= maxHTTPLine - 1)
{
httpLine[indexMessage++] = c; // sinon on ignore le reste de la ligne
}
}
} // end if available
} // end while
delay(1);
client.stop(); // termine la connexion
return requeteHTTPRecue;
}
Ce que j'ai envie de faire quand je presse sur le bouton submit du form, comme exemple je choisi 'Parsley' de la liste, donc ça valeur est de 2 -> value="2" , que je recupere la valeur '2' dans une variable.
Je vous demande de l'aide comme je n'est pas réussi a trouver ou a comprendre celon tous les exemple que j'ai trouver sur le net, quel sont les codes que dois-je utiliser pour que ca marche?
Le code
if(strstr(urlRequest, "/postindex"))
est il ou bonne endroit ?