📅 01 Mei 2026 | ⏱ 8 menit baca | 👤 SUGENKWAVE NUSANTARA TECH
🔌 Cara Menghubungkan ESP32 ke Internet via MQTT
ESP32
MQTT
Tutorial
Pemula
IoT
MQTT adalah protokol messaging ringan yang menjadi standar de-facto untuk komunikasi IoT. Dalam tutorial ini, kita akan menghubungkan ESP32 ke broker MQTT langkah demi langkah, dari instalasi software hingga ESP32 berhasil mengirim data ke internet.
Apa itu MQTT?
MQTT (Message Queuing Telemetry Transport) adalah protokol komunikasi publish-subscribe yang dirancang untuk perangkat dengan keterbatasan daya dan bandwidth. Dibandingkan HTTP, MQTT jauh lebih efisien untuk IoT karena:
- Header minimal hanya 2 byte (HTTP bisa ratusan byte)
- Koneksi persisten — tidak perlu handshake berulang
- Model pub-sub memungkinkan banyak subscriber menerima satu pesan
- Mendukung QoS (Quality of Service) untuk jaminan pengiriman
Yang Anda Butuhkan
- ESP32 development board (NodeMCU ESP32, WROOM, ESP32-S3, dll)
- Kabel USB untuk programming
- Arduino IDE 2.0 atau lebih baru
- Jaringan WiFi dengan koneksi internet
- Akun Chat AIoT (gratis di sugenxos.cloud)
Langkah-langkah
01
INSTALL ARDUINO IDE DAN BOARD ESP32
Download Arduino IDE dari arduino.cc/en/software. Setelah install, tambahkan URL board ESP32 di File → Preferences → Additional boards manager URLs:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Buka Tools → Board → Boards Manager, cari "esp32", install package dari Espressif Systems. Proses ini membutuhkan koneksi internet dan mungkin memakan waktu beberapa menit.
02
INSTALL LIBRARY PUBSUBCLIENT
Buka Tools → Manage Libraries. Cari "PubSubClient" dan install library dari Nick O'Leary. Library ini menyediakan semua fungsi MQTT yang diperlukan untuk ESP32.
💡 Opsional: Install juga "ArduinoJson" oleh Benoit Blanchon untuk kemudahan parsing data JSON dari/ke MQTT.
03
BUAT SKETCH MQTT DASAR
Buat sketch baru di Arduino IDE dan paste kode berikut:
#include <WiFi.h>
#include <PubSubClient.h>
// Konfigurasi WiFi
const char* ssid = "NAMA_WIFI_ANDA";
const char* password = "PASSWORD_WIFI_ANDA";
// Konfigurasi MQTT Broker
const char* mqtt_server = "sugenxos.cloud";
const int mqtt_port = 1883;
const char* mqtt_user = "sugenx";
const char* mqtt_pass = "sgnk";
// Topic MQTT
const char* topic_pub = "sensor/suhu";
const char* topic_sub = "perintah/relay";
WiFiClient espClient;
PubSubClient client(espClient);
// Callback saat pesan MQTT masuk
void callback(char* topic, byte* payload, unsigned int length) {
String msg = "";
for (int i = 0; i < length; i++) {
msg += (char)payload[i];
}
Serial.println("Pesan masuk [" + String(topic) + "]: " + msg);
if (msg == "ON") {
digitalWrite(2, HIGH); // LED onboard
Serial.println("LED ON");
} else if (msg == "OFF") {
digitalWrite(2, LOW);
Serial.println("LED OFF");
}
}
void setup_wifi() {
delay(10);
Serial.println("Menghubungkan ke WiFi: " + String(ssid));
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi terhubung! IP: " + WiFi.localIP().toString());
}
void reconnect() {
while (!client.connected()) {
Serial.print("Menghubungkan ke MQTT...");
String clientId = "ESP32-" + String(random(0xffff), HEX);
if (client.connect(clientId.c_str(), mqtt_user, mqtt_pass)) {
Serial.println("Terhubung!");
client.subscribe(topic_sub);
} else {
Serial.println("Gagal, rc=" + String(client.state()) + " coba lagi 5 detik");
delay(5000);
}
}
}
void setup() {
Serial.begin(115200);
pinMode(2, OUTPUT);
setup_wifi();
client.setServer(mqtt_server, mqtt_port);
client.setCallback(callback);
}
void loop() {
if (!client.connected()) reconnect();
client.loop();
// Kirim data suhu simulasi setiap 10 detik
static unsigned long lastMsg = 0;
if (millis() - lastMsg > 10000) {
lastMsg = millis();
float suhu = 20.0 + (random(100) / 10.0); // simulasi suhu 20-30°C
String payload = String(suhu, 1);
client.publish(topic_pub, payload.c_str());
Serial.println("Publish suhu: " + payload + "°C");
}
}
04
UPLOAD KE ESP32
Pilih board yang sesuai: Tools → Board → ESP32 Arduino → pilih board Anda (biasanya "ESP32 Dev Module"). Pilih port COM yang sesuai di Tools → Port. Klik tombol Upload (→) dan tunggu hingga selesai.
⚠️ Beberapa ESP32 perlu ditekan tombol BOOT saat upload dimulai. Jika upload gagal, coba tahan tombol BOOT hingga muncul "Connecting..."
05
MONITOR DAN VERIFIKASI
Buka Serial Monitor (Tools → Serial Monitor, baud rate 115200). Anda akan melihat log seperti ini jika berhasil:
Menghubungkan ke WiFi: NamaWiFiAnda
....
WiFi terhubung! IP: 192.168.1.105
Menghubungkan ke MQTT...Terhubung!
Publish suhu: 24.3°C
Publish suhu: 25.7°C
Test via Chat AIoT
Setelah ESP32 terhubung, Anda bisa mengontrol LED via MQTT menggunakan Chat AIoT:
- Buka Chat AIoT di sugenxos.cloud
- Login dengan akun Google
- Pergi ke menu IoT Devices
- Tambah device baru dengan topik "perintah/relay"
- Kirim perintah "ON" atau "OFF" untuk mengontrol LED ESP32
Troubleshooting
ESP32 tidak bisa connect WiFi
Pastikan SSID dan password benar (case-sensitive). Coba restart ESP32. Pastikan ESP32 dalam jangkauan sinyal WiFi. Beberapa router tidak mendukung ESP32 di band 5GHz — pastikan menggunakan 2.4GHz.
MQTT connection failed (rc=-2)
Periksa alamat broker dan port. Pastikan firewall tidak memblokir port 1883. Coba gunakan MQTT over WebSocket di port 8083 atau 8084 sebagai alternatif.
Pesan tidak terkirim
Pastikan topic publisher dan subscriber sama persis (case-sensitive). Cek QoS yang digunakan. Pastikan client.loop() dipanggil secara reguler di fungsi loop().