Tutorial Protokol MQTT untuk Pemula (Lengkap dari Awal hingga Akhir)

Apa Itu Protokol MQTT?
MQTT (Message Queuing Telemetry Transport) adalah protokol komunikasi ringan yang dirancang untuk perangkat IoT (Internet of Things). Protokol ini menggunakan model publish-subscribe, di mana perangkat bertukar pesan melalui perantara yang disebut broker. Keunggulannya terletak pada efisiensi bandwidth, keandalan, dan kemampuannya bekerja di jaringan tidak stabil.
Konsep Dasar MQTT
- Publish-Subscribe Model

- Publisher: Perangkat atau aplikasi yang mengirim data ke broker.
- Subscriber: Perangkat atau aplikasi yang menerima data dari broker berdasarkan topik yang diminati.
- Broker: Bertindak sebagai pusat komunikasi (Server). Tugasnya menerima pesan dari pengirim (publisher) dan mengirimkannya ke penerima (subscriber) yang sesuai..
- Cara Kerja:
- Setiap pesan dikirim dengan topik (misalnya: `suhu/ruang1`), yang berfungsi seperti “label” untuk mengkategorikan data.
- Publisher mengirim pesan ke broker dengan menyertakan topik tertentu.
- Subscriber “berlangganan” (subscribe) ke topik yang diinginkan ke broker.
- Saat broker menerima pesan dari publisher, ia langsung meneruskan pesan tersebut ke semua subscriber yang berlangganan ke topik terkait. Contoh:
Sebuah sensor suhu (publisher) mengirim data ke broker dengan topik `suhu/ruang1`. Aplikasi monitoring (subscriber) yang berlangganan ke topik `suhu/ruang1` akan otomatis menerima data tersebut dari broker tanpa perlu tahu alamat sensor.
Keunggulan:
- Efisien: Pesan kecil dan minim overhead, cocok untuk jaringan lambat atau perangkat rendah daya.
- Fleksibel: Komunikasi bersifat *asinkron* (publisher dan subscriber tidak perlu aktif di waktu yang sama).
- Skalabel: Broker mampu mengelola ribuan perangkat sekaligus.
- Topik (Topic)
- Topik adalah string yang berfungsi sebagai “alamat” atau “label” untuk mengkategorikan pesan.
- Formatnya hierarkis, menggunakan garis miring (/) sebagai pemisah. Contoh:
– suhu/ruang1
– sensor/kelembaban/tanah - Topik digunakan oleh broker untuk mengarahkan pesan ke subscriber yang sesuai.Contoh :
Sebuah perangkat mengirimkan pesan “on” dan “off” ke topik home/office/lamp.
berdasarkan gambar diatas ada sebuah device yang mengontrol lampu, seperti ESP32, ESP8266, atau board lainnya. Perangkat adalah (subscribe) ke topik home/office/lamp.
Saat ada pesan baru di topik tersebut, misalnya “on” atau “off”, ESP32 akan menerima pesan itu dan menyalakan atau mematikan lampu sesuai perintah.
Perangkat yang mengirim pesan ini adalah klien MQTT lain, yang bisa berupa ESP32, ESP8266, atau platform otomasi rumah yang mendukung MQTT, seperti Node-RED, Home Assistant, Domoticz, atau OpenHAB.
-
payload
- Payload adalah isi pesan yang dikirim oleh publisher.
- Formatnya fleksibel, bisa berupa teks (string), angka, JSON, XML, atau data biner, tergantung kebutuhan aplikasi.
- Contoh payload:
– Teks: “Suhu: 25.5°C”
– JSON: {“suhu”: 25.5, “unit”: “Celsius”}
– Angka: 25.5
- QoS (Quality of Service)
QOS dalam MQTT adalah mekanisme yang menentukan tingkat keandalan pengiriman pesan antara publisher (pengirim), broker, dan subscriber (penerima). QoS memastikan bahwa pesan sampai ke tujuan sesuai dengan kebutuhan aplikasi, mulai dari pengiriman sederhana hingga yang lebih andal.
Ada tiga level QoS dalam MQTT: QoS 0, QoS 1, dan QoS 2. Berikut penjelasan detailnya:
-
- QoS 0: Pesan dikirim sekali tanpa konfirmasi (fire and forget).
- Karakteristik:
- Pesan dikirim sekali saja tanpa konfirmasi penerimaan.
- Tidak ada jaminan pesan sampai ke penerima.
- Cocok untuk data yang tidak kritis atau data yang dikirim berulang (misalnya, sensor yang mengirim data secara berkala).
- Cara Kerja:
- Publisher mengirim pesan ke broker.
- Broker langsung meneruskan pesan ke subscriber tanpa menunggu konfirmasi.
- Jika pesan hilang di tengah jalan, tidak ada upaya pengiriman ulang.
- Contoh Penggunaan:
- Monitoring suhu ruangan yang tidak memerlukan keandalan tinggi.
- Karakteristik:
- QoS 1: Pesan dikirim minimal sekali (garansi penerimaan).
- Karakteristik:
- Pesan dijamin sampai setidaknya sekali, tetapi mungkin terjadi duplikasi.
- Ada mekanisme konfirmasi penerimaan (acknowledgment).
- Cocok untuk data yang penting tetapi toleran terhadap duplikasi.
- Cara Kerja:
- Publisher mengirim pesan ke broker dan menyimpannya sampai menerima konfirmasi (PUBACK) dari broker.
- Broker meneruskan pesan ke subscriber dan menunggu konfirmasi (PUBACK) dari subscriber.
- Jika konfirmasi tidak diterima, pesan akan dikirim ulang.
- Contoh Penggunaan*:
- Pengiriman data sensor yang penting, seperti deteksi kebakaran.
- Karakteristik:
- QoS 2: Pesan dikirim tepat sekali (paling andal, tetapi lambat).
- Karakteristik:
- Pesan dijamin sampai tepat sekali, tanpa duplikasi.
- Mekanisme paling andal tetapi juga paling kompleks.
- Cocok untuk data yang sangat kritis dan tidak boleh hilang atau terduplikasi.
- Cara Kerja:
- Menggunakan proses dua tahap (handshake) untuk memastikan tidak ada duplikasi:
- Publisher mengirim pesan ke broker dan menyimpannya sampai menerima konfirmasi (PUBREC).
- Broker mengirim pesan ke subscriber dan menyimpannya sampai menerima konfirmasi (PUBREC) dari subscriber.
- Setelah konfirmasi diterima, broker mengirim pesan final (PUBREL) ke publisher dan subscriber untuk menyelesaikan proses.
- Jika ada kegagalan, pesan akan dikirim ulang sesuai kebutuhan.
- Menggunakan proses dua tahap (handshake) untuk memastikan tidak ada duplikasi:
- Contoh Penggunaan:
- Transaksi keuangan atau sistem kontrol industri yang memerlukan keandalan tinggi.
- Karakteristik:
- QoS 0: Pesan dikirim sekali tanpa konfirmasi (fire and forget).
Langkah Praktis Menerapkan MQTT
1. Instalasi Broker MQTT

MQTT Broker adalah pusat komunikasi dalam sistem MQTT (Message Queuing Telemetry Transport) yang berfungsi sebagai perantara antara perangkat pengirim (publisher) dan penerima (subscriber). Broker bertanggung jawab untuk menerima pesan dari publisher dan mendistribusikannya ke subscriber yang berlangganan ke topik yang sama. Dengan pendekatan ini, perangkat tidak perlu saling mengetahui alamat satu sama lain, sehingga komunikasi menjadi lebih efisien, ringan, dan andal, terutama dalam lingkungan dengan koneksi jaringan yang tidak stabil. Contoh MQTT broker yang populer adalah Mosquitto, HiveMQ, dan EMQX, yang dapat dijalankan di server lokal atau berbasis cloud untuk mendukung berbagai aplikasi seperti IoT, smart home, dan monitoring industri.
- Linux (Ubuntu):
sudo apt-get update sudo apt-get install mosquitto mosquitto-clients sudo systemctl start mosquitto
- Windows:
Unduh installer dari Eclipse Mosquitto, lalu jalankan sebagai layanan. - Mac:
brew install mosquitto mosquitto -v
2. Uji Coba Publisher & Subscriber
- Subscribe ke Topik:
Buka terminal dan jalankan:mosquitto_sub -h localhost -t "test/topic" -v
- Publish Pesan:
Di terminal lain, kirim pesan:mosquitto_pub -h localhost -t "test/topic" -m "Halo, MQTT!"
Pesan “Halo, MQTT!” akan muncul di subscriber.
3. Implementasi dengan Python
Gunakan library paho-mqtt untuk membuat client MQTT.
- Instal Library:
pip install paho-mqtt - Kode Subscriber:
import paho.mqtt.client as mqtt def on_connect(client, userdata, flags, rc): print("Terhubung ke broker") client.subscribe("sensor/suhu") def on_message(client, userdata, msg): print(f"Pesan diterima: {msg.payload.decode()}") client = mqtt.Client() client.on_connect = on_connect client.on_message = on_message client.connect("localhost", 1883, 60) client.loop_forever()
- Kode Publisher:
import paho.mqtt.client as mqtt client = mqtt.Client() client.connect("localhost", 1883) client.publish("sensor/suhu", "25°C") client.disconnect()
Contoh Penerapan MQTT di Dunia Nyata
- Sistem Monitoring IoT
Sensor suhu mengirim data ke broker, lalu dashboard web menampilkannya secara real-time. - Smart Home
Kontrol lampu atau AC melalui aplikasi mobile dengan MQTT. - Industri 4.0
Memantau mesin produksi dan mengirim notifikasi jika ada gangguan.
Tips Optimasi & Troubleshooting
- Pilih QoS Sesuai Kebutuhan: Gunakan QoS 0 untuk data tidak kritis (misal: sensor lingkungan), QoS 2 untuk transaksi penting.
- Gunakan Topik Hierarkis: Contoh:
rumah/kamar1/lampuuntuk organisasi yang rapi. - Error Umum:
- Koneksi Gagal: Pastikan broker aktif dan port 1883 terbuka.
- Pesan Tidak Sampai: Periksa QoS dan jaringan.
Alat Pendukung MQTT
- HiveMQ: Broker enterprise dengan fitur lengkap.
- Node-RED: Platform visual untuk integrasi IoT.
- MQTT Explorer: Aplikasi GUI untuk debugging topik.
Kesimpulan
MQTT adalah protokol ideal untuk IoT karena sederhana, hemat sumber daya, dan fleksibel. Dengan tutorial ini, Anda sudah bisa memulai proyek MQTT sendiri, mulai dari instalasi broker hingga pengiriman data. Selanjutnya, eksplorasi penggunaan QoS lanjutan atau integrasi dengan platform cloud seperti AWS IoT!
Penjelasan MQTT dengan Bahasa Sederhana
Bayangkan kamu punya grup WhatsApp keluarga. Di grup ini, ada anggota keluarga yang suka mengirim pesan, dan ada yang hanya membaca pesan.
Nah, dalam dunia MQTT:
- Grup WhatsApp = MQTT Broker (Tempat semua pesan dikirim dan diterima)
- Anggota keluarga yang mengirim pesan = Publisher (Perangkat yang mengirim data)
- Anggota keluarga yang membaca pesan = Subscriber (Perangkat yang menerima data)
- Topik pembicaraan di grup = Topic (Kategori pesan yang dikirim)
Misalnya, ada topik “Lampu Kamar” di MQTT.
- ESP32 A (Publisher) mengirim pesan “Hidup” atau “Mati” ke topik “Lampu Kamar”
- ESP32 B (Subscriber) yang sudah berlangganan ke topik ini akan menerima pesan itu dan menyalakan atau mematikan lampu sesuai instruksi.
Keunggulan MQTT ini seperti grup WhatsApp yang tidak butuh tahu nomor HP anggota lain—cukup kirim pesan ke grup, semua yang berlangganan bisa membaca. Itulah kenapa MQTT sangat cocok untuk komunikasi antar perangkat dalam sistem IoT (Internet of Things). 🚀
Soal Diskusi tentang MQTT
1. Karakteristik Dasar MQTT
Soal Diskusi
-
Apa itu MQTT, dan mengapa protokol ini dirancang khusus untuk perangkat IoT?
-
Diskusikan karakteristik utama MQTT yang membuatnya cocok untuk komunikasi IoT dengan koneksi terbatas (misalnya: ringan, efisien, publish-subscribe).
-
Bandingkan MQTT dengan HTTP dalam konteks efisiensi penggunaan bandwidth dan arsitektur komunikasi (pub/sub vs. request/response).
Referensi
MQTT adalah protokol ringan yang dirancang untuk perangkat IoT (Message Queuing Telemetry Transport) BisaiotiWikipedia. Protokol ini sangat efisien dalam menggunakan bandwidth dan cocok untuk sistem dengan resource terbatas Amazon Web Services, Inc.Wikipedia. MQTT menggunakan arsitektur publish/subscribe, berbeda dengan HTTP yang menggunakan request/response Iotize DocumentationHiveMQInductive Automation.
2. Komponen dan Arsitektur MQTT
Soal Diskusi
-
Jelaskan peran client, broker, dan topic dalam arsitektur MQTT.
-
Apa keuntungan model publish-subscribe dalam penerapan IoT besar-besaran?
Referensi
MQTT terdiri atas clients, broker, dan topics. Broker bertugas menerima pesan dari publisher dan mendistribusikannya ke subscriber berdasarkan topik yang telah mereka langgani Iotize DocumentationHiveMQWikipedia. Arsitektur ini memungkinkan solusi yang sangat skalabel dan decoupled (tidak saling tergantung antar perangkat) Iotize Documentationwww.emqx.com.
3. Quality of Service (QoS)
Soal Diskusi
-
Apa itu QoS dalam MQTT, dan apa saja tingkat-tingkatnya?
-
Bagaimana penerapan tiap QoS memengaruhi keandalan dan performa sistem IoT?
Referensi
Terdapat tiga tingkat QoS dalam MQTT:
-
QoS 0: paling sederhana, “fire and forget” (sekali saja, tanpa konfirmasi).
-
QoS 1: memastikan pesan diterima minimal sekali (dengan acknowledgment).
-
QoS 2: memastikan pesan diterima tepat sekali melalui mekanisme handshake dua-langkah Wikipedia.
4. Fitur Lanjutan: Retained Messages & Last Will
Soal Diskusi
-
Apa itu retained message? Bagaimana fitur ini membantu subscriber baru?
-
Jelaskan fungsi Last Will and Testament (LWT) dalam sistem MQTT dan pentingnya dalam skenario perangkat tidak terduga terputus.
Referensi
-
Retained message: pesan disimpan oleh broker agar subscriber baru langsung menerima data ketika mereka melakukan subscribe HiveMQWikipedia.
-
Last Will: pesan yang dikirim bila koneksi klien terputus secara tidak normal—berguna untuk mendeteksi perangkat hilang dan memberi informasi sistem HiveMQInductive Automation.
5. Standarisasi dan Perkembangan Versi
Soal Diskusi
-
Siapakah pendiri MQTT dan apa latar belakang pengembangannya?
-
Sebutkan dan jelaskan beberapa fitur baru yang diperkenalkan pada MQTT versi 5.0.
Referensi
MQTT diciptakan pada tahun 1999 oleh Andy Stanford-Clark (IBM) dan Arlen Nipper (Eurotech) dengan tujuan efisiensi bandwidth dan daya untuk pemantauan via satelit Iotize DocumentationInductive AutomationWikipedia.
MQTT 5.0 (rilis 7 Maret 2019) menambahkan:
-
Reason codes (kode alasan untuk ACK).
-
Shared subscriptions (beban dibagi antar client).
-
Message expiry (pesan kadaluarsa otomatis).
-
Topic alias (alias topik untuk efisiensi) Wikipedia.
6. Keamanan Protokol
Soal Diskusi
-
Apa saja risiko keamanan yang melekat pada MQTT? Mengapa protokol ini rentan?
-
Bagaimana cara mengamankan MQTT, misalnya melalui enkripsi atau pendekatan lain?
Referensi
MQTT awalnya dirancang untuk jaringan privat sehingga kurang mempertimbangkan keamanan—menggunakan plaintext tanpa autentikasi bawaan WikipediaarXiv. Masalah seperti DoS (Denial of Service) juga pernah ditemukan Wikipedia.
Untuk keamanan, perlu implementasi TLS (port 8883), autentikasi username/password, atau mekanisme keamanan lanjutan seperti zero-knowledge proof di MQTT-5 WikipediaarXiv.
7. Implementasi Praktis dengan ESP32
Soal Diskusi
-
Bagaimana langkah-langkah umum dalam menerapkan MQTT pada perangkat ESP32?
-
Apa manfaat menggunakan ESP32 untuk implementasi IoT berbasis MQTT?
Referensi
Beberapa tutorial Bisaioti menjelaskan cara mengimplementasikan MQTT pada ESP32, termasuk komunikasi data antara ESP32 dengan broker MQTT—hal ini memungkinkan pembangunan sistem IoT sederhana namun fungsional Bisaioti+1.
8. Perbandingan dengan Protokol Lain (HTTP, CoAP)
Soal Diskusi
-
Kapan sebaiknya menggunakan MQTT dibanding HTTP atau CoAP?
-
Soroti kelebihan dan kekurangan masing-masing dalam konteks IoT.
Referensi
MQTT biasa digunakan melalui TCP port 1883 atau 8883 (TLS), dan bisa juga melalui WebSocket port 443 untuk penetrasi firewall/proxy HTTP Bisaioti.
Ketiga protokol—MQTT, CoAP, HTTP—berdiri di lapisan aplikasi dan mengatur format pertukaran pesan di atas TCP/IP Bisaioti.








