ESP8266 펌웨에서 웹서버를 실행할 때 GET 파라미터를 처리하는 예
ESP8266 Arduino IDE를 이용할 때 라이브러리에 포함된 HelloServer 예제를 약간 변경하여 GET 파라미터를 처리하는 기능을 추가한 예이다.
아래의 코드를 ESP8266 에 업로드하고 실행모드로 실행한 후에 웹브라우저의 주소창에 다음과 같이 입력하여 GET파라미터를 전달해본다
http://esp8266 IP 주소:포트/params?param1=Hello¶m2=World
#include <ESP8266WiFi.h> #include <WiFiClient.h> #include <ESP8266WebServer.h> #include <ESP8266mDNS.h> const char* ssid = "my_class2"; const char* password = "my2016"; ESP8266WebServer server(80); void handleRoot() { //digitalWrite(led, 1); server.send(200, "text/plain", "hello from esp8266!"); //digitalWrite(led, 0); } void handleNotFound(){ //digitalWrite(led, 1); String message = "File Not Found\n\n"; message += "URI: "; message += server.uri(); message += "\nMethod: "; message += (server.method() == HTTP_GET)?"GET":"POST"; message += "\nArguments: "; message += server.args(); message += "\n"; for (uint8_t i=0; i<server.args(); i++){ message += " " + server.argName(i) + ": " + server.arg(i) + "\n"; } server.send(404, "text/plain", message); } void setup(void){ //pinMode(led, OUTPUT); //digitalWrite(led, 0); Serial.begin(115200); WiFi.begin(ssid, password); Serial.println(""); // Wait for connection while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.print("Connected to "); Serial.println(ssid); Serial.print("IP address: "); Serial.println(WiFi.localIP()); if (MDNS.begin("esp8266")) { Serial.println("MDNS responder started"); } server.on("/", handleRoot); server.on("/inline", [](){ server.send(200, "text/plain", "this works as well"); }); // 파라미터를 수신하여 다시 클라이언트측으로 송신하는 예 server.on("/params", [](){ String param1 = server.arg("param1"); String param2 = server.arg("param2"); String res = "param1="+param1+", param2="+param2; // 클라이언트에게 응답 데이터 출력 server.send(200, "text/plain", "Parameters received: "+res); // 디버깅을 위해 시리얼 모니터에 출력해본다 Serial.print("param1="); Serial.print(param1); Serial.print(", param2="); Serial.println(param2); }); server.onNotFound(handleNotFound); server.begin(); Serial.println("HTTP server started"); } void loop(void){ server.handleClient(); }