Advertisement
noam76

spiffs_page_display

Jan 23rd, 2018
333
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.82 KB | None | 0 0
  1. void envoyerVariables(WiFiClient &cl)
  2. {
  3.  // On envoie un en tête de réponse HTTP de type XML et le XML
  4.  
  5.  // l'en-tête doit être comme cela
  6.  
  7.  // ----------------------------------
  8.  //  HTTP/1.1 200 OK
  9.  //  Content-Type: text/xml
  10.  //  Connection: keep-alive
  11.  //                    <-- une ligne vide ici
  12.  // ----------------------------------
  13.  
  14.  //  et le XML doit ressembler à cela avec bien sûr les bonnes valeurs insérées dans les balises
  15.  
  16.  // ----------------------------------
  17.  //  <?xml version = "1.0" ?>
  18.  //  <variables>
  19.  //    <bouton>xxx</bouton>
  20.  //    <digital1>yyy</digital1>
  21.  //    <analog1>zzz</analog1>
  22.  //  </variables>
  23.  // ----------------------------------
  24.  
  25.  cl.print(F("HTTP/1.1 200 OK\r\n"
  26.             "Content-Type: text/xml\r\n"
  27.             "Connection: keep-alive\r\n\r\n"
  28.             "<?xml version = \"1.0\" ?>"
  29.             "<variables><sens1>"));
  30.  cl.print(read_s1_value);
  31.  cl.print(F("</sens1><sens2>"));
  32.  cl.print(read_s2_value);
  33.  cl.print(F("</sens2><sens3>"));
  34.  cl.print(read_s3_value);
  35.  cl.print(F("</sens3><sens4>"));
  36.  cl.print(read_s4_value);
  37.  cl.print(F("</sens4></variables>"));
  38. }
  39.  
  40. boolean testRequeteWeb()
  41. {
  42.  boolean requeteHTTPRecue = false;
  43.  byte indexMessage = 0;
  44.  char * ptrGET, *ptrEspace;
  45.  
  46.  WiFiClient client = serveurWeb.available();
  47.  if (!client) return requeteHTTPRecue; // pas de client connecté
  48.  boolean currentLineIsBlank = true;
  49.  while (client.connected())
  50.  {
  51.   if (client.available())
  52.   {
  53.    // on lit toute la trame HTTP, ici sans se soucier de la requête
  54.    char c = client.read();
  55.    // Serial.print(c);
  56.    if (c == '\n' && currentLineIsBlank) // une requête HTTP se termine par une ligne vide
  57.    {
  58.     // ON GENERE LA PAGE WEB
  59.     if (strcmp(urlRequest, "/favicon.ico")) // si ce n'est pas pour le favicon
  60.     {
  61.      requeteHTTPRecue = true;
  62.      // Control si le submit a ete presse
  63.      if(strstr(urlRequest, "/config.html"))
  64.      {
  65.       char *s1 = strtok(urlRequest,"?");
  66.       s1 = strtok(NULL,"&");
  67.       char *s2 = strtok(NULL,"&");
  68.       char *s3 = strtok(NULL,"&");
  69.       char *s4 = strtok(NULL,"&");
  70.       /*
  71.         Serial.println(s1);
  72.       Serial.println(s2);
  73.       Serial.println(s3);
  74.       Serial.println(s4);
  75.       */
  76.       s1 = strtok(s1,"=");
  77.       s1 = strtok(NULL,"=");
  78.       PlantS1 = atoi(s1);
  79.       PlantS1 = SoilSensorWebUser(PlantS1);
  80.  
  81.       s2 = strtok(s2,"=");
  82.       s2 = strtok(NULL,"=");
  83.       PlantS2 = atoi(s2);
  84.       PlantS2 = SoilSensorWebUser(PlantS2);
  85.  
  86.       s3 = strtok(s3,"=");
  87.       s3 = strtok(NULL,"=");
  88.       PlantS3 = atoi(s3);
  89.       PlantS3 = SoilSensorWebUser(PlantS3);
  90.  
  91.       s4 = strtok(s4,"=");
  92.       s4 = strtok(NULL,"=");
  93.       PlantS4 = atoi(s4);
  94.       PlantS4 = SoilSensorWebUser(PlantS4);
  95.       Serial.println("Before Saving");
  96.       Serial.println(PlantS1);
  97.       Serial.println(PlantS2);
  98.       Serial.println(PlantS3);
  99.       Serial.println(PlantS4);
  100.       saveConfig();
  101.  
  102.       /*if (!saveConfig())
  103.        {Serial.println("Failed to save config");}
  104.       else
  105.        {Serial.println("Config saved");}*/
  106.      
  107.         // on envoie la page web par défaut
  108.  if (SPIFFS.exists(CONFIG_HTML))
  109.       {
  110.        // On envoie un en tête de réponse HTTP standard
  111.        client.println(F("HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n"));
  112.        File pageWeb = SPIFFS.open(CONFIG_HTML, "r");
  113.        client.write(pageWeb,sizeof(pageWeb));
  114.        pageWeb.close();
  115.       }
  116.       else
  117.       {
  118.        Serial.println(F("Erreur de fichier"));
  119.       }
  120.      }
  121.      // -------------------------------- Pour la Page CONFIG_HTML ------------------------------- //
  122.      // on regarde si on a une requete qui contient /config
  123.      if (strstr(urlRequest, "/config"))
  124.      {
  125.       // on envoie la page web par défaut
  126.       if (SPIFFS.exists(CONFIG_HTML))
  127.       {
  128.        // On envoie un en tête de réponse HTTP standard
  129.        client.println(F("HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n"));
  130.        File pageWeb = SPIFFS.open(CONFIG_HTML, "r");
  131.        client.write(pageWeb,sizeof(pageWeb));
  132.        pageWeb.close();
  133.       }
  134.       else
  135.       {
  136.        Serial.println(F("Erreur de fichier"));
  137.       }
  138.      }
  139.     // -------------------------------- Fin Page CONFIG_HTML ------------------------------------ //
  140.    
  141.     // -------------------------------- Pour la Page DISPLAY_DATA_HTML -------------------------- //
  142.     // on regarde si on a une requete qui contient /display_data
  143.     if (strstr(urlRequest, "/reqEtatVariables"))  // http://www.cplusplus.com/reference/cstring/strstr/?kw=strstr
  144.     {
  145.      // on va lire l'état du bouton et on renvoie l'information correctement
  146.      envoyerVariables(client);
  147.     }
  148.     else
  149.     {      
  150.      if(strstr(urlRequest, "/display_data"))
  151.      {
  152.       // on envoie la page web par défaut
  153.       if (SPIFFS.exists(DISPLAY_DATA_HTML))
  154.       {
  155.        // On envoie un en tête de réponse HTTP standard
  156.        client.println(F("HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n"));
  157.        File pageWeb = SPIFFS.open(DISPLAY_DATA_HTML, "r");
  158.        client.write(pageWeb,sizeof(pageWeb));
  159.        pageWeb.close();
  160.       }
  161.       else
  162.       {
  163.        Serial.println(F("Erreur de fichier"));
  164.       }
  165.      }
  166.     }
  167.     // -------------------------------- Fin Page DISPLAY_DATA_HTML ------------------------------- //
  168.  
  169.     // -------------------------------- Pour la Page UPDATE_HTML -------------------------- //
  170.     if (strstr(urlRequest, "/update"))
  171.     {
  172.      // on envoie la page web par défaut
  173.      if (SPIFFS.exists(UPDATE_HTML))
  174.      {
  175.       // On envoie un en tête de réponse HTTP standard
  176.       client.println(F("HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n"));
  177.       File pageWeb = SPIFFS.open(UPDATE_HTML, "r");
  178.       client.write(pageWeb,sizeof(pageWeb));
  179.       pageWeb.close();
  180.      }
  181.      else
  182.      {
  183.       Serial.println(F("Erreur de fichier"));
  184.      }
  185.     }
  186.    // -------------------------------- Fin Page UPDATE_HTML -------------------------- //
  187.    }
  188.    // on sort du while et termine la requête
  189.    break;
  190.   }
  191.   if (c == '\n')
  192.   {
  193.    currentLineIsBlank = true;
  194.    httpLine[indexMessage] = '\0'; // on termine la ligne correctement (c-string)
  195.    indexMessage = 0; // on se reprépre pour la prochaine ligne
  196.    if (ptrGET = strstr(httpLine, "GET"))
  197.    {
  198.     // c'est la requête GET, la ligne continent "GET /URL HTTP/1.1", on extrait l'URL
  199.     ptrEspace = strstr(ptrGET + 4, " ");
  200.     *ptrEspace = '\0';
  201.     strncpy(urlRequest, ptrGET + 4, maxURL);
  202.     urlRequest[maxURL] = '\0'; // par précaution si URL trop longue
  203.    }
  204.   }
  205.   else if (c != '\r')
  206.    {
  207.     currentLineIsBlank = false;
  208.     if (indexMessage <= maxHTTPLine - 1)
  209.     {
  210.      httpLine[indexMessage++] =  c; // sinon on ignore le reste de la ligne
  211.     }
  212.    }
  213.   } // end if available
  214.  } // end while
  215.  delay(1);
  216.  client.stop(); // termine la connexion
  217.  return requeteHTTPRecue;
  218. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement