📅 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:

Yang Anda Butuhkan

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:

  1. Buka Chat AIoT di sugenxos.cloud
  2. Login dengan akun Google
  3. Pergi ke menu IoT Devices
  4. Tambah device baru dengan topik "perintah/relay"
  5. 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().

▶ COBA CHAT AIOT GRATIS