Apa itu MQTT?

MQTT adalah protokol pesan berbasis standar, atau seperangkat aturan, yang digunakan untuk komunikasi mesin-ke-mesin. Sensor pintar, perangkat yang dapat dikenakan, dan perangkat Internet untuk Segala (IoT) lainnya biasanya harus mengirim dan menerima data melalui jaringan dengan sumber daya dan bandwidth terbatas. Perangkat IoT ini menggunakan MQTT untuk transmisi data, karena mudah diterapkan dan dapat mengomunikasikan data IoT secara efisien. MQTT mendukung pengiriman pesan antara perangkat ke cloud dan cloud ke perangkat.

Mengapa protokol MQTT penting?

Protokol MQTT telah menjadi standar untuk transmisi data IoT karena memberikan manfaat sebagai berikut:

Ringan dan efisien

Implementasi MQTT pada perangkat IoT memerlukan sumber daya yang minimum, bahkan dapat digunakan pada mikrokontroler kecil. Misalnya, pesan kontrol MQTT minimal dapat berukuran paling sedikit dua bita data. Header pesan MQTT juga kecil sehingga Anda dapat mengoptimalkan bandwidth jaringan.

Dapat diskalakan

Implementasi MQTT membutuhkan jumlah kode minimal yang mengonsumsi daya yang sangat kecil dalam operasi. Protokol tersebut juga memiliki fitur bawaan untuk mendukung komunikasi dengan sejumlah besar perangkat IoT. Oleh karena itu, Anda dapat menerapkan protokol MQTT untuk terhubung dengan jutaan perangkat ini.

Dapat diandalkan

Banyak perangkat IoT terhubung melalui jaringan seluler yang tidak dapat diandalkan dengan bandwidth rendah dan berlatensi tinggi. MQTT memiliki fitur bawaan yang mengurangi waktu yang dibutuhkan perangkat IoT untuk terhubung kembali dengan cloud. MQTT juga menentukan tiga tingkat kualitas layanan yang berbeda guna memastikan keandalan untuk kasus penggunaan IoT, paling banyak sekali (0), setidaknya sekali (1), dan tepat sekali (2).

Aman

MQTT memudahkan developer untuk mengenkripsi pesan dan mengautentikasi perangkat serta pengguna menggunakan protokol autentikasi modern, seperti OAuth, TLS1.3, Sertifikat yang Dikelola Pelanggan, dan masih banyak lagi.

Didukung dengan baik

Beberapa bahasa seperti Python memiliki dukungan ekstensif untuk implementasi protokol MQTT. Oleh karena itu, developer dapat dengan cepat mengimplementasikan Python dengan pengodean minimal di semua tipe aplikasi.

Bagaimana sejarah di balik protokol MQTT?

Protokol MQTT diciptakan pada tahun 1999 untuk digunakan dalam industri minyak dan gas. Teknisi membutuhkan protokol untuk bandwidth minimal dan kehilangan baterai minimal untuk memantau jaringan pipa minyak melalui satelit. Awalnya, protokol tersebut dikenal sebagai Message Queuing Telemetry Transport karena produk IBM Seri MQ yang pertama kali mendukung fase awalnya. Pada tahun 2010, IBM merilis MQTT 3.1 sebagai protokol bebas dan terbuka untuk diterapkan oleh siapa pun, yang kemudian diserahkan untuk pemeliharaan, pada tahun 2013, ke badan spesifikasi Organization for the Advancement of Structured Information Standards (OASIS). Pada tahun 2019, MQTT versi 5 yang ditingkatkan dirilis oleh OASIS. Kini MQTT bukan lagi akronim tetapi dianggap sebagai nama resmi bagi protokol. 

Apa prinsip di balik MQTT?

Protokol MQTT bekerja berdasarkan prinsip model publikasi/berlangganan. Dalam komunikasi jaringan tradisional, klien dan server berkomunikasi satu sama lain secara langsung. Klien meminta sumber daya atau data dari server, kemudian server memproses dan mengirimkan kembali respons. Namun, MQTT menggunakan pola publikasi/berlangganan untuk memisahkan pengirim pesan (penerbit) dari penerima pesan (pelanggan). Sebagai gantinya, komponen ketiga, yang disebut broker pesan, menangani komunikasi antara penerbit dengan pelanggan. Tugas broker adalah memfilter semua pesan masuk dari penerbit dan mendistribusikannya dengan benar ke pelanggan. Broker memisahkan penerbit dan pelanggan seperti di bawah ini:

Pemisahan ruang

Penerbit dan pelanggan tidak mengetahui satu sama lain lokasi jaringan dan tidak bertukar informasi seperti alamat IP atau nomor port.

Pemisahan waktu

Penerbit dan pelanggan tidak menjalankan atau memiliki konektivitas jaringan secara bersamaan.

Pemisahan sinkronisasi

Baik penerbit maupun pelanggan dapat mengirim atau menerima pesan tanpa saling mengganggu. Misalnya, pelanggan tidak harus menunggu penerbit mengirim pesan.

Apa itu komponen MQTT?

MQTT menerapkan model publikasi/berlangganan dengan menentukan klien dan broker seperti di bawah ini.

Klien MQTT

Klien MQTT adalah setiap perangkat dari server ke mikrokontroler yang menjalankan pustaka MQTT. Jika klien mengirim pesan, ia bertindak sebagai penerbit, dan jika klien menerima pesan, ia bertindak sebagai penerima. Pada dasarnya, perangkat apa pun yang berkomunikasi menggunakan MQTT melalui jaringan dapat disebut perangkat klien MQTT.

Broker MQTT

Broker MQTT adalah sistem backend yang mengoordinasikan pesan antara klien yang berbeda. Tanggung jawab broker meliputi menerima dan memfilter pesan, mengidentifikasi klien yang berlangganan setiap pesan, serta mengirimi pesan kepada klien. Broker juga bertanggung jawab untuk tugas-tugas lain seperti:

  • Mengotorisasi dan mengautentikasi klien MQTT
  • Mengirim pesan ke sistem lain untuk analisis lebih lanjut
  • Menangani pesan tak terjawab dan sesi klien

Koneksi MQTT

Klien dan broker mulai berkomunikasi dengan menggunakan koneksi MQTT. Klien memulai koneksi dengan mengirimkan pesan CONNECT ke broker MQTT. Broker mengonfirmasi bahwa koneksi telah dibuat dengan merespons menggunakan pesan CONNACK. Baik klien MQTT maupun broker memerlukan tumpukan TCP/IP untuk berkomunikasi. Klien tidak pernah terhubung satu sama lain, hanya dengan broker.

Bagaimana cara kerja MQTT?

Gambaran umum mengenai cara kerja MQTT diberikan di bawah ini. 

  1. Klien MQTT membuat koneksi dengan broker MQTT.
  2. Setelah terhubung, klien dapat memublikasikan pesan, berlangganan pesan tertentu, atau melakukan keduanya.
  3. Saat broker MQTT menerima pesan, broker meneruskan pesan tersebut ke pelanggan yang tertarik.

Mari kita uraikan detailnya untuk pemahaman lebih lanjut.

Topik MQTT

Istilah ‘topik’ mengacu pada kata kunci yang digunakan broker MQTT untuk memfilter pesan bagi klien MQTT. Topik diatur secara hierarki, mirip dengan direktori file atau folder. Misalnya, mempertimbangkan sistem rumah pintar yang beroperasi di rumah bertingkat, dan rumah tersebut memiliki perangkat pintar yang berbeda di setiap lantainya. Dalam hal ini, broker MQTT dapat mengatur topik sebagai:

rumahkami/lantaidasar/ruangtamu/lampu

rumahkami/lantaipertama/dapur/suhu

Publikasi di MQTT

Klien MQTT memublikasikan pesan yang berisi topik dan data dalam format bita. Klien menentukan format data seperti data teks, data biner, XML, atau file JSON. Misalnya, lampu di sistem rumah pintar dapat memublikasikan pesan menyalauntuk topik ruangtamu/lampu.

Berlangganan di MQTT

Klien MQTT mengirimkan pesan BERLANGGANAN ke broker MQTT, untuk menerima pesan mengenai topik yang menarik. Pesan ini berisi pengenal unik dan daftar langganan. Misalnya, aplikasi rumah pintar di ponsel Anda ingin menampilkan jumlah lampu yang menyala di rumah. Aplikasi ini akan berlangganan ke topik lampu dan meningkatkan penghitung untuk semua pesan menyala

Apa itu MQTT over WSS?

MQTT over WebSockets (WSS) adalah implementasi MQTT untuk menerima data secara langsung ke peramban web. Protokol MQTT menentukan klien JavaScript untuk menyediakan dukungan WSS bagi peramban. Dalam hal ini, protokol berfungsi seperti biasa tetapi memberikan header tambahan ke pesan MQTT yang juga mendukung protokol WSS. Anda dapat menganggapnya sebagai payload MQTT yang dibungkus dalam amplop WSS.

Apakah MQTT aman?

Komunikasi MQTT menggunakan protokol SSL untuk melindungi data sensitif yang dikirimkan oleh perangkat IoT. Anda dapat menerapkan identitas, autentikasi, dan otorisasi antara klien dan broker menggunakan sertifikat SSL dan/atau kata sandi. Broker MQTT biasanya mengautentikasi klien menggunakan kata sandi mereka serta pengidentifikasi klien unik yang dialokasikan untuk setiap klien. Dalam sebagian besar implementasi, klien mengautentikasi server dengan sertifikat atau pencarian DNS. Anda juga dapat menerapkan protokol enkripsi dengan MQTT. 

Apakah MQTT adalah RESTful?

MQTT bukanlah RESTful. Representational state transfer (REST) adalah pendekatan arsitektur untuk komunikasi jaringan yang menggunakan pola komunikasi minta-respons antara pengirim dan penerima pesan. Sebaliknya, MQTT menggunakan model komunikasi publikasi/berlangganan di lapisan aplikasi dan memerlukan koneksi TCP untuk mengirimkan pesan secara push. Namun, MQTT versi 5 menambahkan metode minta/repons baru untuk bertindak dengan cara yang mirip dengan REST, di mana penerbit dapat melampirkan topik respons khusus, yang diproses oleh penerima dan menghasilkan respons yang sesuai.

Bagaimana AWS dapat mendukung implementasi MQTT Anda?

AWS IoT Core adalah layanan terkelola penuh yang memungkinkan Anda menghubungkan miliaran perangkat IoT dan merutekan triliunan pesan ke layanan AWS. Anda dapat:

  • Menyambungkan, mengelola, dan menskalakan armada perangkat Anda dengan mudah dan andal tanpa menyediakan atau mengelola server.
  • Pilih protokol komunikasi pilihan Anda, termasuk MQTT, HTTPS, MQTT melalui WSS, dan LoRaWAN.
  • Amankan koneksi perangkat dan data dengan autentikasi bersama serta enkripsi end-to-end.
  • Memfilter, mentransformasikan, dan menindaklanjuti pada data perangkat dengan cepat, berdasarkan aturan bisnis yang Anda tentukan.

Mulai MQTT di AWS dengan membuat akun gratis sekarang juga!

Langkah berikutnya pada AWS MQTT

Lihat sumber daya tambahan terkait produk
Pelajari selengkapnya tentang Layanan Internet untuk Segala 
Daftar untuk akun gratis

Dapatkan akses secara instan ke AWS Tingkat Gratis. 

Daftar 
Mulai membangun di konsol

Mulai membangun dengan AWS di Konsol Manajemen AWS.

Masuk