ESP32 Journey — Input Data on HTML Form

Muhamad Ihza
ESP32 Journey
Published in
3 min readApr 26, 2020

Hallo gais, balik lagi bersama gue di Journey ESP32, eh kebolak eh kebalik, di ESP32 Journey. Oke tanpa basa basi tanpa ini itu tanpa aku dan kamu, mari kita mulai petualangan di cerita kali ini. Sebenernya ngoprek ESP32 kali ini ga terlalu ribet sih, bahkan kalian ga butuh komponen selain kabel USB dan ESP32 aja lhoo.

Jadi proyek kali ini tuh kita bakal nyoba buat masukin/input data dari HTML Form ke dalam ESP32 yang kita punya. Ini tuh salah satu hal basic yang bisa kalian kembangin lagi. Tapi jangan lupa juga buat download Extension asynchronous web server disini dan AsyncTCP disini.

Okey, untuk kode program yang kalian butuhin ini nih aku kasih.

/*********
Rui Santos
Complete project details at https://RandomNerdTutorials.com/esp32-esp8266-input-data-html-form/

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files.

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
*********/

#include <Arduino.h>
#ifdef ESP32
#include <WiFi.h>
#include <AsyncTCP.h>
#else
#include <ESP8266WiFi.h>
#include <ESPAsyncTCP.h>
#endif
#include <ESPAsyncWebServer.h>

AsyncWebServer server(80);

// REPLACE WITH YOUR NETWORK CREDENTIALS
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";

const char* PARAM_INPUT_1 = "input1";
const char* PARAM_INPUT_2 = "input2";
const char* PARAM_INPUT_3 = "input3";

// HTML web page to handle 3 input fields (input1, input2, input3)
const char index_html[] PROGMEM = R"rawliteral(
<!DOCTYPE HTML><html><head>
<title>ESP Input Form</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head><body>
<form action="/get">
input1: <input type="text" name="input1">
<input type="submit" value="Submit">
</form><br>
<form action="/get">
input2: <input type="text" name="input2">
<input type="submit" value="Submit">
</form><br>
<form action="/get">
input3: <input type="text" name="input3">
<input type="submit" value="Submit">
</form>
</body></html>)rawliteral";

void notFound(AsyncWebServerRequest *request) {
request->send(404, "text/plain", "Not found");
}

void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
if (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.println("WiFi Failed!");
return;
}
Serial.println();
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());

// Send web page with input fields to client
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
request->send_P(200, "text/html", index_html);
});

// Send a GET request to <ESP_IP>/get?input1=<inputMessage>
server.on("/get", HTTP_GET, [] (AsyncWebServerRequest *request) {
String inputMessage;
String inputParam;
// GET input1 value on <ESP_IP>/get?input1=<inputMessage>
if (request->hasParam(PARAM_INPUT_1)) {
inputMessage = request->getParam(PARAM_INPUT_1)->value();
inputParam = PARAM_INPUT_1;
}
// GET input2 value on <ESP_IP>/get?input2=<inputMessage>
else if (request->hasParam(PARAM_INPUT_2)) {
inputMessage = request->getParam(PARAM_INPUT_2)->value();
inputParam = PARAM_INPUT_2;
}
// GET input3 value on <ESP_IP>/get?input3=<inputMessage>
else if (request->hasParam(PARAM_INPUT_3)) {
inputMessage = request->getParam(PARAM_INPUT_3)->value();
inputParam = PARAM_INPUT_3;
}
else {
inputMessage = "No message sent";
inputParam = "none";
}
Serial.println(inputMessage);
request->send(200, "text/html", "HTTP GET request sent to your ESP on input field ("
+ inputParam + ") with value: " + inputMessage +
"<br><a href=\"/\">Return to Home Page</a>");
});
server.onNotFound(notFound);
server.begin();
}

void loop() {

}

Dan, abis tuh kalian tinggal upload ke ESP32 dan masuk ke IP Address yang dihasilkan di Serial Monitor. Taraaa kalian bisa masukan data yang ingin kalian tampilkan di serial monitor lewat HTML Form seperti di bawah ini nih.

Input Data
Pembacaan di Serial Monitor

Nah simpel banget kan, cukup sampai sini aja yaa cerita kali ini. Stay Safe dan #DiRumahAja.

--

--

Muhamad Ihza
ESP32 Journey

Information and System Technology ITB student, have an enthusiast in technology.