Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void envoyerVariables(WiFiClient &cl)
- {
- // On envoie un en tête de réponse HTTP de type XML et le XML
- // l'en-tête doit être comme cela
- // ----------------------------------
- // HTTP/1.1 200 OK
- // Content-Type: text/xml
- // Connection: keep-alive
- // <-- une ligne vide ici
- // ----------------------------------
- // et le XML doit ressembler à cela avec bien sûr les bonnes valeurs insérées dans les balises
- // ----------------------------------
- // <?xml version = "1.0" ?>
- // <variables>
- // <bouton>xxx</bouton>
- // <digital1>yyy</digital1>
- // <analog1>zzz</analog1>
- // </variables>
- // ----------------------------------
- cl.print(F("HTTP/1.1 200 OK\r\n"
- "Content-Type: text/xml\r\n"
- "Connection: keep-alive\r\n\r\n"
- "<?xml version = \"1.0\" ?>"
- "<variables><sens1>"));
- cl.print(read_s1_value);
- cl.print(F("</sens1><sens2>"));
- cl.print(read_s2_value);
- cl.print(F("</sens2><sens3>"));
- cl.print(read_s3_value);
- cl.print(F("</sens3><sens4>"));
- cl.print(read_s4_value);
- cl.print(F("</sens4></variables>"));
- }
- 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
- {
- // ON GENERE LA PAGE WEB
- if (strcmp(urlRequest, "/favicon.ico")) // si ce n'est pas pour le favicon
- {
- requeteHTTPRecue = true;
- // Control si le submit a ete presse
- if(strstr(urlRequest, "/config.html"))
- {
- char *s1 = strtok(urlRequest,"?");
- s1 = strtok(NULL,"&");
- char *s2 = strtok(NULL,"&");
- char *s3 = strtok(NULL,"&");
- char *s4 = strtok(NULL,"&");
- /*
- Serial.println(s1);
- Serial.println(s2);
- Serial.println(s3);
- Serial.println(s4);
- */
- s1 = strtok(s1,"=");
- s1 = strtok(NULL,"=");
- PlantS1 = atoi(s1);
- PlantS1 = SoilSensorWebUser(PlantS1);
- s2 = strtok(s2,"=");
- s2 = strtok(NULL,"=");
- PlantS2 = atoi(s2);
- PlantS2 = SoilSensorWebUser(PlantS2);
- s3 = strtok(s3,"=");
- s3 = strtok(NULL,"=");
- PlantS3 = atoi(s3);
- PlantS3 = SoilSensorWebUser(PlantS3);
- s4 = strtok(s4,"=");
- s4 = strtok(NULL,"=");
- PlantS4 = atoi(s4);
- PlantS4 = SoilSensorWebUser(PlantS4);
- Serial.println("Before Saving");
- Serial.println(PlantS1);
- Serial.println(PlantS2);
- Serial.println(PlantS3);
- Serial.println(PlantS4);
- saveConfig();
- /*if (!saveConfig())
- {Serial.println("Failed to save config");}
- else
- {Serial.println("Config saved");}*/
- // 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"));
- }
- }
- // -------------------------------- Pour la Page CONFIG_HTML ------------------------------- //
- // on regarde si on a une requete qui contient /config
- 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 ------------------------------------ //
- // -------------------------------- Pour la Page DISPLAY_DATA_HTML -------------------------- //
- // on regarde si on a une requete qui contient /display_data
- if (strstr(urlRequest, "/reqEtatVariables")) // http://www.cplusplus.com/reference/cstring/strstr/?kw=strstr
- {
- // on va lire l'état du bouton et on renvoie l'information correctement
- envoyerVariables(client);
- }
- else
- {
- if(strstr(urlRequest, "/display_data"))
- {
- // on envoie la page web par défaut
- if (SPIFFS.exists(DISPLAY_DATA_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(DISPLAY_DATA_HTML, "r");
- client.write(pageWeb,sizeof(pageWeb));
- pageWeb.close();
- }
- else
- {
- Serial.println(F("Erreur de fichier"));
- }
- }
- }
- // -------------------------------- Fin Page DISPLAY_DATA_HTML ------------------------------- //
- // -------------------------------- Pour la Page UPDATE_HTML -------------------------- //
- if (strstr(urlRequest, "/update"))
- {
- // on envoie la page web par défaut
- if (SPIFFS.exists(UPDATE_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(UPDATE_HTML, "r");
- client.write(pageWeb,sizeof(pageWeb));
- pageWeb.close();
- }
- else
- {
- Serial.println(F("Erreur de fichier"));
- }
- }
- // -------------------------------- Fin Page UPDATE_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;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement