Search code examples
htmlajaxarduinoesp8266

Multiple HTTP GETs in one go on ESP8266


I can't figure out how to send the data in one go. I am asking because sending it simultaneously delays a bit.

I did see an other topic of someone posting a piece of code, but that did not work.

This is a bit of the code:

void handleRoot() {
  String s = MAIN_page; // Read HTML contents
  server.send(200, "text/html", s); // Send web page
}
    
void handleFORESTTEMPERATURE() {
  String ForrestTemperatureDev =  String(ForestTemperature, 1);
     
  server.send(200, "text/plane", ForestTemperatureDev); // Send ADC value only to client ajax request
}
    
void handleFORESTPRESSURE() {
  String ForrestPressureDev = String(ForestPressure);
     
  server.send(200, "text/plane", ForrestPressureDev); // Send ADC value only to client ajax request
}
    
void handleFORESTHUMIDITY() {
  String ForrestHumidityDev = String(ForestHumidity);
     
  server.send(200, "text/plane", ForestHumidityDev); // Send ADC value only to client ajax request
}

server.on("/readFORESTPRESSURE", handleFORESTPRESSURE);
server.on("/readFORESTTEMPERATURE", handleFORESTTEMPERATURE);
server.on("/readFORESTHUMIDITY", handleFORESTHUMIDITY);
server.on("/readFORESTWEATHERSTATUS", handleFORESTWEATHERSTATUS);

Solution

  • The following code would send all three values separated with a ; when \readALL is requested.

    The three values can be split on the ; in your receiving application; using JSON would be just a little bit more work.

    Note1: Untested, I just typed it in, but you get the idea.

    Note2: It's text/plain, not text/plane.

    void handleRoot() {
      String s = MAIN_page; //Read HTML contents
      server.send(200, "text/html", s); //Send web page
    }
    
    void handleFORESTTEMPERATURE() {
      String ForrestTemperatureDev =  String(ForestTemperature, 1);
      server.send(200, "text/plain", ForestTemperatureDev); //Send ADC value only to client ajax request
    }
    
    void handleFORESTPRESSURE() {
      String ForrestPressureDev = String(ForestPressure);
      server.send(200, "text/plain", ForrestPressureDev); //Send ADC value only to client ajax request
    }
    
    void handleFORESTHUMIDITY() {
      String ForrestHumidityDev = String(ForestHumidity);
      server.send(200, "text/plain", ForestHumidityDev); //Send ADC value only to client ajax request
    }
    
    void handleALL() {
      String AllDev = String(ForestTemperature, 1) + ";" + String(ForestPressure) + ";" + String(ForestHumidity);
      server.send(200, "text/plain", AllDev); //Send ADC values only to client ajax request
    }
    
    server.on("/readFORESTPRESSURE", handleFORESTPRESSURE);
    server.on("/readFORESTTEMPERATURE", handleFORESTTEMPERATURE);
    server.on("/readFORESTHUMIDITY", handleFORESTHUMIDITY);
    server.on("/readFORESTWEATHERSTATUS", handleFORESTWEATHERSTATUS);
    server.on("/readALL", handleALL);