Pada tutorial ini kita akan mencoba membahas tentang penggunaan ESP8266 untuk meminta (request) ke web server. Pada artikel ini metode yang akan digunakan adalah metode POST. Metode ini adalah salah satu metode untuk request data ke web server, karena selain metode POST ada juga metode  GET. Seperti kita ketahui bahwa semua pertukaran data melalui web adalah menggunakan protokol HTTP, nah sekarang apakah yang dimaksud dengan HTTP?

Apakah HTTP?

The Hypertext Transfer Protocol (HTTP) didesain untuk memungkinkan berlangsungnya komunikasi antara client dan server.

HTTP bekerja berdasarkan protokol permintaan-respon (request-response) antara client dan server. Setiap pesan HTTP adalah antara request ataun respon. Pada sebuah server mekanismenya adalah, server akan memperhatikan koneksi request, parsing setiap pesan yang diterima, menginterpretasikan pesan dan mengidentifikasi pesan berdasarkan target request, terakhir adalah merespon request dengan sebuah pesan atau lebih yang sesuai. Pada sisi client akan merekontruksi pesan yang diterima sesuai dengan tujuan komunikasi awal, dan mencoba memeriksa respon server untuk menentukan hasilnya.

Dua Metode HTTP Request: POST dan GET

Pada umumnya metode yang digunakan adalah POST dan GET:

  • POST: request data dari resource tertentu
  • GET: submit data untuk diproses pada resource tertentu

Contoh Coding ESP8266 Menggunakan Metode POST

/*
 * HTTP Client POST Request
 * Copyright (c) 2018, circuits4you.com
 * All rights reserved.
 * https://circuits4you.com 
 * Connects to WiFi HotSpot. 
 * source: https://circuits4you.com/2018/03/10/esp8266-nodemcu-post-request-data-to-website/
 */

#include <ESP8266WiFi.h>
#include <WiFiClient.h> 
#include <ESP8266WebServer.h>
#include <ESP8266HTTPClient.h>

/* Set these to your desired credentials. */
const char *ssid = "SSID_NAME";  //Ganti dengan nama SSID
const char *password = "SSID_PASSWORD"; //Ganti dengan password SSID

//Web/Server address to read/write from 
const char *host = "produk-inovatif.com";   //nama website atau IP address dari server

//=======================================================================
//                    Power on setup
//=======================================================================

void setup() {
  delay(1000);
  Serial.begin(115200);
  WiFi.mode(WIFI_OFF);        //Prevents reconnection issue (taking too long to connect)
  delay(1000);
  WiFi.mode(WIFI_STA);        //This line hides the viewing of ESP as wifi hotspot
  
  WiFi.begin(ssid, password);     //Connect to your WiFi router
  Serial.println("");

  Serial.print("Connecting");
  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  //If connection successful show IP address in serial monitor
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());  //IP address assigned to your ESP
}

//=======================================================================
//                    Main Program Loop
//=======================================================================
void loop() {
  HTTPClient http;    //Declare object of class HTTPClient

  String ADCData, ADC2,ADC3, station, postData, ADC4;
  int adcvalue=analogRead(A0);  //Read Analog value of LDR
  
  ADCData = String(adcvalue);   //String to interger conversion
  ADC2 = String(adcvalue*2);   //String to interger conversion
  ADC3 = String(adcvalue*3);   //String to interger conversion
  ADC4 = String(adcvalue*0.5);   //String to interger conversion
  station = "A";

  //Post Data
  postData = "lembab=" + ADCData + "&suhuUdara=" + ADC2 + "&suhuAir=" + ADC3 + "&tinggiAir=" + ADC4 ;
  
  http.begin("http://produk-inovatif.com/esp8266/post_demo.php");              //Specify request destination
  http.addHeader("Content-Type", "application/x-www-form-urlencoded");    //Specify content-type header

  int httpCode = http.POST(postData);   //Send the request
  String payload = http.getString();    //Get the response payload

  Serial.println(httpCode);   //Print HTTP return code
  Serial.println(payload);    //Print request response payload

  http.end();  //Close connection
  
  delay(5000);  //Post Data at every 5 seconds
}
//=======================================================================

Program Pada Sisi Server

<?php
//Creates new record as per request

    //Connect to database
    $servername = "localhost";
    $username = "root";
    $password = "password";
    $dbname = "dbcontoh";

    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
        die("Database Connection failed: " . $conn->connect_error);
    }

    //Get current date and time
    date_default_timezone_set('Asia/Jakarta');
    $d = date("Y-m-d");
    //echo " Date:".$d."<BR>";
    $t = date("H:i:s");

    if(!empty($_POST['lembab']) && !empty($_POST['suhuUdara']) && !empty($_POST['suhuAir']) && !empty($_POST['tinggiAir']))
    {
        $lembab = $_POST['lembab'];
        $suhuUdara = $_POST['suhuUdara'];
        $suhuAir = $_POST['suhuAir'];
        $tinggiAir = $_POST['tinggiAir'];
        
        echo " lembab:".$lembab."<BR>";
        echo " suhu Udara:".$suhuUdara."<BR>";
        echo " suhu Air:".$suhuAir."<BR>";
        echo " tinggi Air:".$tinggiAir."<BR>";

        $sql = "UPDATE  dbcontoh.dataTemp SET kelembaban='".$lembab."', suhuUdara='".$suhuUdara."', suhuAir='".$suhuAir."', tinggiAir='".$tinggiAir."' WHERE id='1'";
// mysql_query($SQL);
        if ($conn->query($sql) === TRUE) {
            echo "OK";
        } else {
            echo "Error: " . $sql . "<br>" . $conn->error;
        }
    }


    $conn->close();
?>

Selanjutnya Anda dapat mengembangkan sendiri sesuai dengan kebutuhan.

Semoga bermanfaat.

 

Referensi:

ESP8266 (NodeMCU) post request data to website

 

Iklan