IoT

MQTT untuk Pemula: Cara Kerja Broker, Topic, dan Contoh di ESP32

Board trainer IoT untuk praktik MQTT

MQTT adalah protokol komunikasi ringan untuk IoT dengan pola publish–subscribe. Perangkat tidak saling mengirim langsung, tapi lewat perantara yang disebut broker. Sensor mengirim (publish) data ke sebuah topic, dan perangkat lain yang berlangganan (subscribe) topic itu menerima datanya. Karena ringan, MQTT sangat cocok untuk ESP32.

Tiga komponen utama MQTT

  • Broker: server yang menerima dan meneruskan pesan. Contoh: Mosquitto (bisa dipasang sendiri) atau layanan broker cloud.
  • Publisher: perangkat yang mengirim data, misalnya ESP32 dengan sensor suhu.
  • Subscriber: perangkat atau aplikasi yang menerima data, misalnya dashboard atau ESP32 lain yang mengendalikan relay.

Topic: alamat pesan

Topic berbentuk teks bertingkat, mirip folder:

saltech/gudang/suhu
saltech/gudang/relay1/set
saltech/gudang/relay1/status

Subscriber bisa memakai wildcard: + untuk satu tingkat (saltech/+/suhu) dan # untuk semua tingkat di bawahnya (saltech/gudang/#).

QoS dan port

QoSArti
0Dikirim sekali, tanpa konfirmasi (paling ringan)
1Dijamin sampai minimal sekali (bisa dobel)
2Dijamin sampai tepat sekali (paling berat)

Port standar MQTT adalah 1883 (tanpa enkripsi) dan 8883 (dengan TLS).

Contoh kode ESP32 dengan PubSubClient

#include <WiFi.h>
#include <PubSubClient.h>

const char* WIFI_SSID = "NAMA_WIFI";
const char* WIFI_PASS = "PASSWORD_WIFI";
const char* BROKER = "broker.hivemq.com";   // broker publik, untuk uji coba saja
const int RELAY = 26;

WiFiClient net;
PubSubClient mqtt(net);

void pesanMasuk(char* topic, byte* isi, unsigned int panjang) {
  String teks;
  for (unsigned int i = 0; i < panjang; i++) teks += (char)isi[i];
  if (String(topic) == "saltech/demo/relay1/set") {
    digitalWrite(RELAY, teks == "ON" ? HIGH : LOW);
    mqtt.publish("saltech/demo/relay1/status", teks.c_str(), true);
  }
}

void sambung() {
  while (!mqtt.connected()) {
    if (mqtt.connect("esp32-demo-ganti-unik")) mqtt.subscribe("saltech/demo/relay1/set");
    else delay(2000);
  }
}

void setup() {
  pinMode(RELAY, OUTPUT);
  WiFi.begin(WIFI_SSID, WIFI_PASS);
  while (WiFi.status() != WL_CONNECTED) delay(500);
  mqtt.setServer(BROKER, 1883);
  mqtt.setCallback(pesanMasuk);
}

void loop() {
  if (!mqtt.connected()) sambung();
  mqtt.loop();
}

Uji dengan aplikasi MQTT client di HP atau laptop: publish ON atau OFF ke topic saltech/demo/relay1/set.

Broker publik hanya untuk belajar

Broker publik gratis bisa dipakai siapa saja, tanpa password, dan semua orang bisa membaca topic-mu. Cocok untuk belajar, tapi jangan dipakai untuk alat sungguhan. Untuk produksi, pakai broker pribadi dengan username, password, dan TLS.

MQTT atau Telegram?

  • Telegram paling cepat untuk kontrol pribadi dari HP tanpa membuat aplikasi. Baca kontrol relay ESP32 lewat Telegram.
  • MQTT lebih cocok untuk banyak perangkat, dashboard, dan sistem yang saling bertukar data.

Kesimpulan

MQTT memisahkan pengirim dan penerima lewat broker dan topic, sehingga sistem IoT mudah dikembangkan. Mulai dengan broker publik untuk belajar, lalu pindah ke broker pribadi yang aman untuk alat sungguhan. Ingin praktik IoT dengan rangkaian yang sudah teruji? Lihat Proyek Siap Pakai SALTECH.

Pertanyaan yang sering muncul

Apakah MQTT butuh internet?

Tidak selalu. Broker bisa dipasang di jaringan lokal, misalnya di Raspberry Pi, sehingga perangkat berkomunikasi tanpa internet.

Apa beda MQTT dan HTTP?

HTTP berpola tanya-jawab dan lebih berat. MQTT menjaga koneksi tetap terbuka dan mengirim pesan kecil secara real-time, cocok untuk perangkat IoT.

Tanya via WhatsApp