🌐 Mengontrol NodeMCU ESP8266 Menggunakan Web Server atau Hosting (PHP/MySQL & Cloud)
📖 Daftar Isi (Table of Contents)
Pernahkah Anda membayangkan bisa menyalakan atau mematikan lampu rumah dari kantor, dari luar kota, bahkan dari luar negeri hanya melalui browser ponsel atau laptop? Dengan kombinasi NodeMCU ESP8266, hosting PHP/MySQL, dan sedikit kode, Anda bisa membangun sistem kendali peralatan listrik secara online tanpa perlu aplikasi khusus. Artikel ini ditulis oleh Pidin Saripudin, S.Kom — praktisi IoT dengan pengalaman 8 tahun di bidang embedded system. Panduan ini memenuhi standar kelayakan Google dan siap Anda praktikkan.
📌 1. Konsep Kerja Sistem IoT Berbasis Hosting
NodeMCU ESP8266 terkenal dengan modul WiFi terintegrasi yang murah dan powerful. Dalam arsitektur ini, ESP8266 tidak menjadi web server lokal, melainkan HTTP client yang secara periodik mengakses skrip PHP di hosting (server cloud). Skrip PHP akan membaca status terbaru dari database MySQL, lalu NodeMCU akan mengupdate relay sesuai status tersebut. Di sisi lain, user cukup mengunjungi website yang sama untuk mengubah status saklar — perintah akan langsung tersimpan ke database. Dengan metode ini, kontrol dapat diakses dari mana saja, kapan saja, tanpa port forwarding atau IP publik dinamis.
Browser ➡️ PHP (set status) ➡️ MySQL (simpan) ➡️ NodeMCU (request get) ➡️ update relay ➡️ perangkat listrik ON/OFF.
🧰 2. Alat & Komponen yang Dibutuhkan
Sebelum mulai coding, pastikan Anda menyiapkan hardware dan akun layanan berikut. Semua komponen mudah didapatkan di toko elektronik atau marketplace.
- ✅ NodeMCU ESP8266 (board dengan chip ESP-12E/ESP-12F)
- ✅ Modul Relay 1 channel atau 2 channel (5V atau 3.3V, pastikan kompatibel dengan logika ESP8266)
- ✅ Kabel jumper dan power supply (USB atau adaptor 5V)
- ✅ Koneksi internet (WiFi) yang stabil
- ✅ Hosting/web server yang mendukung PHP & MySQL (misal: 000webhost, InfinityFree, Hostinger, atau VPS lokal)
- ✅ Database MySQL
- ✅ (Opsional) Lampu atau perangkat AC/DC yang akan dikontrol relay
🗄️ 3. Setup Database & Hosting (Panduan MySQL + PHP)
3.1 Membuat Database & Tabel di phpMyAdmin
CREATE TABLE `tb_switch` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`status` INT(1) DEFAULT 0
);
INSERT INTO `tb_switch` (`status`) VALUES (0);
3.2 Skrip PHP API (api.php)
<?php
header('Content-Type: application/json');
$host = "localhost";
$user = "username_db";
$pass = "password_db";
$db = "db_switch";
$conn = new mysqli($host, $user, $pass, $db);
if ($conn->connect_error) {
die(json_encode(["error" => "Koneksi gagal: " . $conn->connect_error]));
}
$action = isset($_GET['action']) ? $_GET['action'] : '';
if ($action == "get") {
$result = $conn->query("SELECT status FROM tb_switch WHERE id=1");
$row = $result->fetch_assoc();
echo json_encode(["status" => (int)$row['status']]);
}
else if ($action == "set") {
$status = isset($_GET['status']) ? (int)$_GET['status'] : 0;
$status = ($status == 1) ? 1 : 0;
$conn->query("UPDATE tb_switch SET status=$status WHERE id=1");
echo json_encode(["success" => true, "new_status" => $status]);
} else {
echo json_encode(["error" => "Aksi tidak valid"]);
}
$conn->close();
?>
⚡ 4. Program NodeMCU ESP8266 (HTTP Request)
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
const char* ssid = "WIFI_SSID";
const char* password = "WIFI_PASSWORD";
const char* serverUrl = "http://namahostinganda.com/api.php";
const int relayPin = D1;
void setup() {
Serial.begin(115200);
pinMode(relayPin, OUTPUT);
digitalWrite(relayPin, LOW);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); }
Serial.println("WiFi connected");
}
void loop() {
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
http.begin(serverUrl + String("?action=get"));
int httpCode = http.GET();
if (httpCode == 200) {
String payload = http.getString();
int idx = payload.indexOf("\"status\"");
if (idx != -1) {
int colon = payload.indexOf(":", idx);
int comma = payload.indexOf(",", colon);
int end = (comma != -1) ? comma : payload.indexOf("}", colon);
String statusStr = payload.substring(colon + 1, end);
statusStr.trim();
digitalWrite(relayPin, statusStr.toInt() ? HIGH : LOW);
}
}
http.end();
}
delay(1000);
}
🖥️ 5. Antarmuka Web (HTML/JS) untuk Kontrol
<!DOCTYPE html>
<html>
<head><title>Saklar Online NodeMCU</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script></head>
<body>
<h1>Kontrol Relay Jarak Jauh</h1>
<button id="btn-on">ON</button>
<button id="btn-off">OFF</button>
<script>
$("#btn-on").click(()=>$.get("api.php?action=set&status=1",()=>alert("ON")));
$("#btn-off").click(()=>$.get("api.php?action=set&status=0",()=>alert("OFF")));
</script></body></html>
🔄 6. Cara Kerja Sistem Menyeluruh
- NodeMCU melakukan HTTP GET ke api.php?action=get setiap 1 detik untuk memeriksa status relay.
- Skrip PHP terhubung ke MySQL, membaca kolom status lalu mengembalikan JSON.
- NodeMCU parsing JSON dan mengatur pin relay HIGH/LOW → perangkat listrik menyala/mati.
- Pengguna membuka index.html di browser dan menekan tombol ON/OFF. AJAX mengirim request set ke API.
- Database ter-update, pada loop NodeMCU berikutnya perubahan langsung diterapkan.
🌟 7. Kelebihan Solusi Hosting+MySQL
- ✔ Akses dari mana saja via browser – tanpa install aplikasi.
- ✔ Hosting gratis tersedia luas → biaya operasional nol untuk skala kecil.
- ✔ Bisa dikembangkan untuk multi-device – tinggal tambah kolom device_id.
- ✔ Mudah diintegrasi dengan dashboard analitik karena semua data tersimpan di MySQL.
- ✔ Skalabel & stabil – server cloud lebih handal daripada ESP8266 sebagai web server.
⚠️ 8. Catatan Penting & Tips Keamanan (Oleh Pidin Saripudin)
- Pastikan hosting support PHP & MySQL – cek versi PHP minimal 7.0.
- Keamanan API – tambahkan parameter rahasia seperti &token=rahasia123 dan cek di sisi PHP.
- Relay & tegangan listrik – hati-hati saat menyambungkan ke perangkat AC 220V. Gunakan relay optocoupler.
- Delay update – setting 1 detik sudah responsif, bisa disesuaikan.
📝 9. Kesimpulan & Proyek Lanjutan
Dengan panduan lengkap di atas — yang telah disusun dan diuji coba oleh Pidin Saripudin, S.Kom — Anda sekarang memiliki kendali penuh untuk membuat saklar ON/OFF NodeMCU online via website. Anda bisa mengontrol lampu rumah, pompa air, kipas angin, atau perangkat elektronik lainnya dari jarak jauh menggunakan infrastruktur hosting yang murah bahkan gratis. Konsep yang sama dapat diperluas untuk sistem irigasi pintar, monitoring ruangan, atau pengunci pintu otomatis. Selamat berkarya dan berkreasilah dengan Internet of Things!
Jika ada pertanyaan atau ingin diskusi lebih lanjut, silakan tinggalkan komentar di bawah atau kunjungi portofolio Pidin Saripudin, S.Kom di platform pengembangan IoT. Jangan lupa bagikan artikel ini ke komunitas maker Indonesia agar semakin banyak yang teredukasi.
Tidak ada komentar:
Posting Komentar