Pada kesempatan ini Kamu akan mempelajari bagaimana sistem terdistribusi bekerja pada Internet of Things (IoT). Kamu akan menggunakan ESP32 sebagai node sensor dan localhost sebagai server monitoring terpusat.
Di awal, ESP32 akan mengirim data sensor melalui jaringan WiFi menggunakan REST API menuju server localhost. Kemudian localhost akan menampilkan data monitoring secara real-time melalui dashboard web yang kamu buat.
Pada praktikum ini kamu akan dilatih untuk mengintegrasikan:
- embedded system,
- komunikasi jaringan,
- REST API,
- web dashboard,
- distributed architecture.
Sebelumnya, kita telah mempelajari bahwa sistem terdistribusi adalah kumpulan perangkat yang saling terhubung melalui jaringan dan bekerja bersama untuk menjalankan suatu fungsi tertentu. Intinya satu aplikasi bisa dijalankan dibanyak server atau dibanyak perangkat. Pada IoT sistem ini bisa digunakan untuk keperluan, seperti:
- Smart Home
- Smart Farming
- Smart Factory
- Smart Building
Arsitektur Sistem
Arsitektur sistem yang akan dipelajari pada artikel ini terdiri dari sebuah dashboard web yang akan dikembangkan sebagai pusat monitoring dan analisis data. Dashboard ini memiliki berbagai fungsi, seperti menampilkan hasil pembacaan sensor secara real-time serta membantu proses analisis data yang dihasilkan oleh sensor.
Lalu, dari mana data tersebut diperoleh? Pada sistem ini, ESP32 akan dirangkai dengan sensor, misalnya sensor suhu, untuk mengambil data dari lingkungan sekitar. Selanjutnya, data sensor akan dikirimkan ke dashboard melalui komunikasi Wi-Fi sehingga dapat dipantau secara langsung. Gambaran arsitektur sistem dapat dilihat pada gambar berikut.

Konsep Client-Server
Pada sistem ini digunakan konsep client-server, yaitu sebuah metode komunikasi di mana satu perangkat bertugas mengirimkan data, sedangkan perangkat lainnya menerima, mengelola, dan menampilkan data tersebut.
ESP32 sebagai Client
ESP32 berfungsi sebagai perangkat pengambil data dari sensor. Perangkat ini dapat disebut sebagai:
- Sensor Node
- ESP32 terhubung langsung dengan sensor, misalnya sensor suhu, kelembapan, atau sensor lainnya untuk membaca kondisi lingkungan.
- Data Provider
- Setelah data sensor diperoleh, ESP32 akan mengirimkan data tersebut melalui jaringan Wi-Fi ke server.
- Mini Web Service
- ESP32 juga dapat menyediakan layanan sederhana berbasis web atau API sehingga data sensor bisa diakses oleh perangkat lain.
Sederhananya, ESP32 bertugas sebagai perangkat pengumpul dan pengirim data.
Localhost sebagai Server
Localhost merupakan server lokal yang berjalan di komputer atau laptop. Fungsinya adalah menerima dan mengelola data dari ESP32. Pada sistem ini, localhost berfungsi sebagai:
- Centralized Monitoring Server
- Semua data dari sensor dikumpulkan pada satu tempat sehingga monitoring menjadi lebih mudah.
- Dashboard Visualization
- Data sensor akan ditampilkan dalam bentuk dashboard, grafik, maupun indikator agar mudah dipahami pengguna.
- Data Management
- Server juga dapat menyimpan, mengatur, dan mengelola data sensor untuk kebutuhan analisis lebih lanjut.
Sederhananya, localhost bertugas menerima, menampilkan, dan mengelola data yang dikirim oleh ESP32.
Cara Kerja Sistem
- Sensor membaca data dari lingkungan.
- ESP32 menerima data sensor.
- ESP32 mengirim data melalui Wi-Fi.
- Localhost menerima data tersebut.
- Dashboard menampilkan hasil monitoring secara real-time.
Dengan konsep client-server ini, proses monitoring sensor menjadi lebih terstruktur, mudah dikembangkan, dan dapat dipantau secara langsung melalui dashboard web.
REST API
Pada sistem yang Anda buat, komunikasi data antara ESP32 dan server dilakukan menggunakan REST API. REST API merupakan metode komunikasi yang memungkinkan perangkat saling bertukar data melalui jaringan menggunakan format yang sederhana dan mudah dipahami, seperti JSON.
Dengan REST API, ESP32 dapat:
- mengirim data sensor,
- meminta informasi dari server,
- maupun menerima perintah kontrol dari dashboard.
REST API bekerja menggunakan alamat tertentu yang disebut endpoint. Setiap endpoint memiliki fungsi yang berbeda sesuai kebutuhan sistem.
Contoh Endpoint REST API
|
Endpoint |
Fungsi |
|
/api/data |
Digunakan untuk mengirim data sensor dari ESP32 ke server |
|
/api/status |
Digunakan untuk mengetahui status perangkat atau node ESP32 |
|
/api/control |
Digunakan untuk mengontrol perangkat dari dashboard |
Penjelasan Endpoint
1. /api/data
Endpoint ini digunakan ketika ESP32 ingin mengirimkan hasil pembacaan sensor ke server. Contoh data yang dikirim:
{
"suhu": 30,
"kelembapan": 75
}
Server kemudian akan menyimpan atau menampilkan data tersebut pada dashboard monitoring.
2. /api/status
Endpoint ini digunakan untuk mengecek kondisi perangkat ESP32, misalnya:
- apakah perangkat aktif,
- apakah sensor berjalan normal,
- atau apakah perangkat masih terhubung ke jaringan.
Contoh respon:
{
"status": "online"
}
3. /api/control
Endpoint ini digunakan untuk mengontrol perangkat dari dashboard web.
Contohnya:
- menyalakan LED,
- mematikan relay,
- mengaktifkan buzzer,
- atau mengatur perangkat tertentu.
Contoh data kontrol:
{
"lampu": "ON"
}
ESP32 akan membaca perintah tersebut dan menjalankan aksi sesuai instruksi yang diterima.
Keuntungan Menggunakan REST API
Beberapa keuntungan penggunaan REST API pada sistem IoT antara lain:
- komunikasi lebih mudah,
- data dapat diakses secara real-time,
- mudah dikembangkan,
- kompatibel dengan banyak platform,
- dan mendukung integrasi dashboard web maupun aplikasi mobile.
Dengan REST API, sistem monitoring dan kontrol berbasis ESP32 menjadi lebih fleksibel dan modern.
Alat dan Bahan
Alat dan bahan yang akan kamu gunakan dalam pembuatan sistem monitoring berbasis ESP32 dan dashboard web dapat dilihat pada tabel dibawah.
|
No |
Komponen |
Jumlah |
|
1 |
ESP32 DevKit V1 |
1 |
|
2 |
Sensor DHT22 |
1 |
|
3 |
LED |
1 |
|
4 |
Resistor 220Ω |
1 |
|
5 |
Breadboard |
1 |
|
6 |
Kabel Jumper |
Secukupnya |
|
7 |
Laptop |
1 |
|
8 |
WiFi |
1 |
Software yang Digunakan
1. Arduino IDE
Digunakan untuk upload program ESP32.
2. XAMPP
Digunakan sebagai localhost server.
Komponen:
- Apache
- PHP
- MySQL
3. Browser
Digunakan untuk membuka dashboard monitoring.
Instalasi Software
1. Instal Arduino IDE
Link: Software Arduino IDE
2. Install Board ESP32
Masuk:
- File
- Preferences
Tambahkan: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
3. Download XAMPP
Download: Download XAMPP
Aktifkan:
- Apache
- MySQL
Rangkaian Hardware

Koneksi DHT22 ke ESP32
|
DHT22 |
ESP32 |
|
VCC |
3.3V |
|
GND |
GND |
|
DATA |
GPIO 15 |
Koneksi LED
|
LED |
ESP32 |
|
Anoda |
GPIO 2 |
|
Katoda |
GND |
Program ESP32
1. Install Library
Install:
- DHT sensor library
- Adafruit Unified Sensor
2. Program ESP32
#include <WiFi.h>
#include <HTTPClient.h>
#include <DHT.h>
#define DHTPIN 15
#define DHTTYPE DHT22
#define LED_PIN 2
const char* ssid = "NAMA_WIFI";
const char* password = "PASSWORD_WIFI";
String serverName = "http://192.168.1.10/iot/api.php";
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
dht.begin();
WiFi.begin(ssid, password);
Serial.print("Menghubungkan WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi Terhubung");
Serial.println(WiFi.localIP());
}
void loop() {
if(WiFi.status()== WL_CONNECTED){
float temp = dht.readTemperature();
float hum = dht.readHumidity();
HTTPClient http;
String url = serverName +
"?temperature=" + String(temp) +
"&humidity=" + String(hum);
http.begin(url);
int httpResponseCode = http.GET();
Serial.print("HTTP Response: ");
Serial.println(httpResponseCode);
http.end();
if(temp > 30){
digitalWrite(LED_PIN, HIGH);
}else{
digitalWrite(LED_PIN, LOW);
}
}
delay(5000);
}
Penjelasan Program
- WiFi.begin()
Menghubungkan ESP32 ke WiFi.
- HTTPClient
Digunakan mengirim request HTTP ke localhost.
- dht.readTemperature()
Membaca suhu.
- http.GET()
Mengirim data sensor ke server.
Membuat Localhost Server
1. Buat Folder
Masuk ke: htdocs/iot
2. Buat File api.php
<?php
$temp = $_GET['temperature'];
$hum = $_GET['humidity'];
$file = "data.txt";
$data = date("Y-m-d H:i:s") .
" | Temp: " . $temp .
" | Humidity: " . $hum . PHP_EOL;
file_put_contents($file, $data, FILE_APPEND);
echo "DATA RECEIVED";
?>
Penjelasan
- $_GET
Menerima data dari ESP32.
- file_put_contents()
Menyimpan data ke file.
Membuat Dashboard Monitoring
Buat dashboard.php
<!DOCTYPE html>
<html>
<head>
<title>Distributed IoT Dashboard</title>
<meta http-equiv="refresh" content="5">
<style>
body{
font-family:Arial;
background:#f4f6f9;
padding:30px;
}
.card{
background:white;
padding:20px;
border-radius:10px;
box-shadow:0 2px 10px rgba(0,0,0,.1);
}
h1{
color:#333;
}
pre{
background:#111;
color:#0f0;
padding:20px;
border-radius:10px;
}
</style>
</head>
<body>
<div class="card">
<h1>Distributed IoT Monitoring System</h1>
<p>Status Node ESP32 : ONLINE</p>
<h3>Data Sensor:</h3>
<pre>
<?php
echo file_get_contents("data.txt");
?>
</pre>
</div>
</body>
</html>
Menjalankan Sistem
Langkah 1
Jalankan:
-
Apache
-
MySQL
pada XAMPP.
Langkah 2
Upload program ESP32.
Langkah 3
Pastikan ESP32 dan laptop berada pada jaringan WiFi yang sama.
Langkah 4
Cari IP localhost:
Buka CMD:
ipconfig
Cari:
IPv4 Address
Contoh:
192.168.1.10
Langkah 5
Sesuaikan:
String serverName = "http://192.168.1.10/iot/api.php";
Langkah 6
Buka browser:
http://localhost/iot/dashboard.php
Hasil yang Diharapkan
Dashboard menampilkan:
- suhu,
- kelembapan,
- waktu pengiriman data,
- status node ESP32.