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
| QoS | Arti |
|---|---|
| 0 | Dikirim sekali, tanpa konfirmasi (paling ringan) |
| 1 | Dijamin sampai minimal sekali (bisa dobel) |
| 2 | Dijamin 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.
