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

  1. Publish-Subscribe Model
    mqtt publiser-subscriber

    • 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..
  2. 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. 
  3. Topik (Topic)
    topik

    • 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 :
      aplikasi topik mqtt

      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.

  4. 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
  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.
    • 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.
    • 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:
          1. Publisher mengirim pesan ke broker dan menyimpannya sampai menerima konfirmasi (PUBREC).
          2. Broker mengirim pesan ke subscriber dan menyimpannya sampai menerima konfirmasi (PUBREC) dari subscriber.
          3. Setelah konfirmasi diterima, broker mengirim pesan final (PUBREL) ke publisher dan subscriber untuk menyelesaikan proses.
        • Jika ada kegagalan, pesan akan dikirim ulang sesuai kebutuhan.
      • Contoh Penggunaan:
        • Transaksi keuangan atau sistem kontrol industri yang memerlukan keandalan tinggi.

Langkah Praktis Menerapkan MQTT

1. Instalasi Broker MQTT

mqtt broker

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

  1. Sistem Monitoring IoT
    Sensor suhu mengirim data ke broker, lalu dashboard web menampilkannya secara real-time.
  2. Smart Home
    Kontrol lampu atau AC melalui aplikasi mobile dengan MQTT.
  3. 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/lampu untuk organisasi yang rapi.
  • Error Umum:
    • Koneksi Gagal: Pastikan broker aktif dan port 1883 terbuka.
    • Pesan Tidak Sampai: Periksa QoS dan jaringan.

Alat Pendukung MQTT

  1. HiveMQ: Broker enterprise dengan fitur lengkap.
  2. Node-RED: Platform visual untuk integrasi IoT.
  3. 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). 🚀

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *