ESP8266 Client : การใช้งาน ESP8266 ติดต่อ Server แบบ POST/GET
ตัวอย่างนี้เราจะทดลองอ่านข้อมูลจาก website มาแสดงใน esp8266 และส่งค่าจาก esp8266 ขึ้นไปยังเว็บไซต์ ผ่านอินเตอร์เน็ต ซึ่งเรียก ESP8266 ว่าเป็น Client โดยการส่งและเรียกดูข้อมูลจาก Server มี 2 แบบคือแบบ GET และแบบ POST
การใช้ ESP8266 แบบ GET แบบใช้ไลบารีมาตรฐาน
#include
const char* ssid = "ssid";
const char* password = "password";
const char* host = "192.168.1.39";
void setup() {
Serial.begin(115200);
delay(10);
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}//end setup
void loop() {
delay(1000);
Serial.print("Connecting to ");
Serial.println(host);
// Use WiFiClient class to create TCP connections
WiFiClient Client;
const int httpPort = 80;
if (!Client.connect(host, httpPort)) {
Serial.println("Connection failed");
return;
}
// We now create a URI for the request
String url = "/nodemcu/index.php?name=arduinoall";
Serial.print("Requesting URL: ");
Serial.println(host + url);
// This will send the request to the server
//Client.print(String("GET ") + url +" HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n");
Client.print("GET ");
Client.print(url);
Client.println(" HTTP/1.1");
Client.print("Host: ");
Client.println(host);
Client.println("Connection: close");
Client.println();
delay(500);
// Read all the lines of the reply from server and print them to Serial
while (Client.available()) {
String line = Client.readStringUntil('\r');
Serial.println(line);
}
Serial.println("");
Serial.println("Waiting for next try...");
Serial.println("");
delay(30000);
}
การใช้งาน ESP8266 แบบ GET
แนะนำตัวอย่างนี้ เป็นการเรียกใช้ไลบารีเสริม ทำให้ใช้งานง่ายขึ้น
#include
#include
#include
#include
ESP8266WiFiMulti WiFiMulti;
HTTPClient http;
void setup() {
Serial.begin(115200);
Serial.println();
Serial.println();
Serial.println();
Serial.println("Connecting...");
WiFiMulti.addAP("ssid", "password");
}
void loop() {
// wait for WiFi connection
if ((WiFiMulti.run() == WL_CONNECTED)) {
http.begin("http://www.arduinoall.net/arduino-tutor/code/client.php?name=Arduinoall"); //HTTP
int httpCode = http.GET();
if (httpCode > 0) {
Serial.printf("[HTTP] GET... code: %d\n", httpCode);
if (httpCode == HTTP_CODE_OK) {
String payload = http.getString();
Serial.println(payload);
}
} else {
Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
}
http.end();
}
delay(5000);
}
การใช้แบบ ESP8266 POST
#include
#include
#include
#include
ESP8266WiFiMulti WiFiMulti;
HTTPClient http;
void setup() {
Serial.begin(115200);
WiFiMulti.addAP("ssid", "password");
Serial.println("\n\n\nNetwork Connecting\n");
}
void loop() {
if ((WiFiMulti.run() == WL_CONNECTED)) {
http.begin("http://www.arduinoall.net/arduino-tutor/code/client.php"); //HTTP
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
int httpCode = http.POST("name=ArduinoALL&val=50");
if (httpCode > 0) {
Serial.printf("[HTTP] POST... code: %d\n", httpCode);
if (httpCode == HTTP_CODE_OK) {
String payload = http.getString();
Serial.println(payload);
}
} else {
Serial.printf("[HTTP] POST... failed, error: %s\n", http.errorToString(httpCode).c_str());
}
http.end();
}
delay(5000);
}
คลิปวีดีโอสอน Arduino ESP8266 Client POST/GET : ESP8266 Client แบบ POST / GET