Send Request With Post Method to ESP8266

ESP8266 – Send Request With POST method

            ارسال دستور با متد POST به سروری که با ماژول ESP8266 ایجاد کرده ایم، را بررسی می کنیم. یک برنامه ی ساده هم می نویسیم تا بیشتر با این نوع برنامه نویسی آشنا شویم.

برنامه نوشته شده برای ESP8266 در آردوینو

            اول از همه ما برنامه ای را که نوشته ایم قرار می دهیم:

#include <ESP8266WiFi.h>

const char* ssid = "********";
const char* password = "**********";

// Create an instance of the server
// specify the port to listen on as an argument
WiFiServer server(80);

void setup() {
  Serial.begin(115200);
  delay(10);

  // prepare GPIO0
  pinMode(0, OUTPUT);
  digitalWrite(0, 0);

  // Connect to WiFi network
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");

  // Start the server
  server.begin();
  Serial.println("Server started");

  // Print the IP address
  Serial.println(WiFi.localIP());
}
  String sVal = "";
  int val;
  
void loop() {
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }

  // Wait until the client sends some data
  Serial.println("new client");
  while (!client.available()) {
    delay(1);
  }
  
//Read the first lines of POST request
  while (client.connected())
    {
      // read line by line what the client (web browser) is requesting
      if (client.available())
      {
        String line = client.readStringUntil('\r');
        Serial.print(line);
        // wait for end of client's request, that is marked with an empty line
        if (line.length() == 1 && line[0] == '\n')
        {
          
          break;
        }
      }
    }
  // Read the line of the POST request
  String req = client.readStringUntil('\r');
  Serial.println(req);
  
  // Match the request
  Serial.println("----------------------------------------------------");
  for (int j=0; j<20;j++)
  {
    Serial.println((int)req[j]);
  }
  Serial.println("----------------------------------------------------");
  if (req.indexOf("txt") > 0) {
    int i=5;
    while(req[i] != '\0')
    {
    sVal += req[i];
    i++;
    delay(1);
    }
    val = sVal.toInt();
    Serial.println(val);
    sVal="";
  }

  // Set GPIO0 according to the request
  analogWrite(0, val);

  client.flush();

  
  // Prepare the response
  String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\n<form method=""post"">";
  s += "<input name=""txt"" type=""number"" id=""textfield"" max=""1024"" min=""0"" step=""1"">";
  s += "<input type=""submit"">";
  s += "</form>";
  s += "GPIO is now ";
  s += (String)val;
  s += "</html>\n";

  // Send the response to the client
  client.println(s);
  delay(1);
  Serial.println("Client disonnected");

  // The client will actually be disconnected
  // when the function returns and 'client' object is detroyed
}

برای آموزش نحوه ی اتصال به اینترنت با ESP8266 به پست های قبلی مراجعه شود.

            توجه داشته باشید که در قسمت WiFi باید اسم وایفای خود و رمز مودم خود را بنویسید. در اینجا من از ESP8266 سری یک استفاده کرده ام. پایه ی صفرش را خروجی کرده و با یک مقاومت به LED وصل کردم. شما اگر از ماژول دیگری استفاده می کنید این را مد نظر قرار دهید.

            توجه داشته باشید که در خود HTML لازم نیست که این علامت (“) را دوبار تکرار کنیم. ولی در برنامه نویسی به زبان سی پلاس پلاس ما باید این علامت را دوبار پشت سر هم بنویسیم. تا برنامه ارور ندهد. از دیگر علامت هایی که باید دوبار تکرار شود (//) اسلش است. یا می توانید در اول استرینگ از یک @ استفاده کنید، تا جمله را همان طور که هست قبول کند.

در ادامه فیلمی که برای شما قرار داده ام که به طور کامل به شرح این برنامه پرداخته ام.

 

 

 

 

 

 

دیدگاه ها :

من بات نیستم

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *