Request Data Ke Web Server dengan Metode POST pada ESP8266
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
/* * 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
<?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
Recent Comments