Dasar-dasar MQTT

Message Queuing Telemetry Transport (MQTT) protocol telah digunakan selama bertahun-tahun, tetapi kini menjadi sangat relevan karena pertumbuhan pesat IoT: baik perangkat pelanggan maupun industri menerapkan jaringan terdistribusi dan edge computing, dan perangkat dengan transmisi data konstan menjadi bagian dari kehidupan sehari-hari. Pertumbuhan intensif semacam itu memaksa orang untuk mencari cara mentransfer data secara efisien.

Apa itu MQTT

Andy Stanford-Clark (IBM) dan Arlen Nipper (yang saat itu bekerja untuk Eurotech, Inc.) menulis versi pertama protokol ini pada tahun 1999. Itu digunakan untuk memantau pipa minyak dalam kerangka SCADA. Tujuannya adalah memiliki protokol yang hemat bandwidth, ringan, dan menggunakan sedikit daya baterai, karena perangkat terhubung melalui tautan satelit yang, pada waktu itu, sangat mahal. Saat ini, sebagian besar perangkat menggunakan versi 5.0.

Message Queuing Telemetry Transport (MQTT) adalah protokol jaringan ringan berbasis publish-subscribe yang mengirimkan pesan antar perangkat. Protokol ini biasanya berjalan di atas TCP/IP; namun, protokol jaringan apa pun yang menyediakan koneksi berurut, tanpa kehilangan, dan dua arah dapat mendukung MQTT. Ini dirancang untuk koneksi dengan lokasi jarak jauh di mana diperlukan "jejak kode kecil" atau bandwidth jaringan terbatas. Protokol ini adalah standar terbuka OASIS dan rekomendasi ISO (ISO/IEC 20922).

Mengingat kondisi operasi, protokol dibuat kecil dan ringan. Ini ideal untuk perangkat dengan konsumsi daya rendah dan masa pakai baterai terbatas. Sekarang, ini termasuk smartphone, serta jumlah sensor dan perangkat terhubung yang terus bertambah.

Dengan demikian, MQTT telah menjadi protokol untuk streaming data antara perangkat dengan daya CPU dan/atau masa pakai baterai terbatas, serta untuk jaringan dengan biaya tinggi atau bandwidth rendah, stabilitas tidak dapat diprediksi, atau latensi tinggi. Itulah sebabnya MQTT dikenal sebagai protokol ideal untuk IoT. Ia dibangun di atas protokol TCP/IP, tetapi ada cabang MQTT-SN untuk bekerja melalui Bluetooth, UDP, ZigBee, dan jaringan IoT lain selain TCP/IP.

Cara kerjanya

Model publish dan subscribe

Ada 2 definisi utama dalam MQTT: MQTT Broker dan klien MQTT.

Seorang MQTT broker adalah server yang menerima semua pesan dari klien dan kemudian mengarahkan pesan tersebut ke klien tujuan yang sesuai. Secara sederhana, broker bertindak seperti kantor pos, MQTT tidak menggunakan alamat penerima yang dituju tetapi menggunakan baris subjek yang disebut “Topic”, dan siapa pun yang menginginkan salinan pesan itu akan berlangganan topik tersebut. Beberapa klien dapat menerima pesan dari satu broker (kapabilitas satu ke banyak). Demikian juga, beberapa publisher dapat menerbitkan topik kepada satu subscriber (banyak ke satu).

Klien MQTT adalah perangkat apa pun (dari mikrokontroler hingga server penuh) yang menjalankan pustaka MQTT dan terhubung ke broker MQTT melalui jaringan.

  • Klien terhubung ke broker. Klien dapat berlangganan ke topik pesan apa pun di broker. Koneksi ini bisa berupa koneksi TCP/IP biasa atau koneksi TLS terenkripsi untuk pesan sensitif.

  • Klien menerbitkan pesan di bawah suatu topik dengan mengirimkan pesan dan topik ke broker.

  • Broker kemudian meneruskan pesan ke semua klien yang berlangganan topik tersebut.

Karena pesan MQTT diorganisir berdasarkan topik, pengembang aplikasi memiliki fleksibilitas untuk menentukan bahwa klien tertentu hanya dapat berinteraksi dengan pesan tertentu. Misalnya, sensor akan menerbitkan pembacaan mereka di bawah topik “sensor_data” dan berlangganan topik “config_change”. Aplikasi pemrosesan data yang menyimpan data sensor ke dalam basis data backend akan berlangganan topik “sensor_data”. Aplikasi konsol admin dapat menerima perintah admin sistem untuk menyesuaikan konfigurasi sensor, seperti sensitivitas dan frekuensi sampel, dan menerbitkan perubahan tersebut ke topik “config_change”.

Jenis pesan MQTT

Sesi MQTT dibagi menjadi empat tahap: koneksi, otentikasi, komunikasi, dan terminasi. Klien memulai dengan membuat koneksi Transmission Control Protocol/Internet Protocol (TCP/IP) ke broker menggunakan port standar atau port khusus yang ditentukan oleh operator broker. Saat membuat koneksi, penting untuk mengenali bahwa server mungkin melanjutkan sesi lama jika diberikan identitas klien yang digunakan kembali.

Port standar adalah 1883 untuk komunikasi yang tidak terenkripsi dan 8883 untuk komunikasi terenkripsi -- menggunakan Secure Sockets Layer (SSL)/Transport Layer Security (TLS). Selama handshake SSL/TLS, klien memvalidasi sertifikat server dan mengotentikasi server. Klien juga dapat menyediakan sertifikat klien kepada broker selama handshake. Broker dapat menggunakan ini untuk mengotentikasi klien. Meskipun tidak secara spesifik merupakan bagian dari spesifikasi MQTT, telah menjadi kebiasaan bagi broker untuk mendukung otentikasi klien dengan sertifikat sisi-klien SSL/TLS.

Karena protokol MQTT bertujuan menjadi protokol untuk perangkat yang memiliki sumber daya terbatas dan perangkat IoT, SSL/TLS mungkin tidak selalu menjadi opsi dan, dalam beberapa kasus, mungkin tidak diinginkan. Pada kesempatan seperti itu, otentikasi disajikan sebagai nama pengguna dan kata sandi dalam teks jelas, yang dikirim oleh klien ke server - ini merupakan bagian dari urutan paket CONNECT/CONNACK. Selain itu, beberapa broker, terutama broker terbuka yang dipublikasikan di internet, akan menerima klien anonim. Dalam kasus seperti itu, nama pengguna dan kata sandi dibiarkan kosong.

Format pesan MQTT

MQTT dianggap sebagai protokol ringan karena semua pesannya memiliki jejak kode kecil. Paket terdiri dari header tetap 2-byte + header variabel dan payload. Dalam 2-byte pertama ini, header tetap akan selalu ada di semua paket dan dua lainnya, header variabel dan payload, tidak selalu ada.

Format pesan MQTT

Dari header tetap dua byte, byte pertama adalah bidang kontrol. Bidang kontrol 8-bit ini dibagi menjadi dua bidang 4 bit. 4 bit MSB pertama adalah bidang tipe perintah. Tipe ini menentukan tindakan yang akan dilakukan: klien ingin berlangganan topik, pesan baru diterbitkan untuk subscriber dan lainnya.

4 bit berikutnya adalah bit bendera kontrol dan digunakan oleh perintah publish; untuk sisa perintah bit ini dicadangkan dan nilainya akan 0.

Byte kedua dari header tetap berisi sisa panjang yang merupakan, panjang header variabel + panjang payload.

Header variabel tidak ada di semua paket MQTT. Beberapa perintah atau pesan MQTT menggunakan bidang ini untuk memberikan informasi tambahan atau flag dan mereka bervariasi tergantung pada jenis paket. Identifier paket umum pada sebagian besar jenis paket.

Pada akhirnya, paket mungkin berisi payload. Bahkan payload bersifat opsional dan bervariasi sesuai jenis paket. Bidang ini biasanya berisi data yang dikirim. Mis. Untuk paket CONNECT, payload adalah ID klien dan ‘username and password’ jika tersedia. Dan untuk paket PUBLISH, itu adalah pesan yang akan diterbitkan.

Quality of Service

QoS mengacu pada kesepakatan antara pengirim pesan dan penerima pesan. Ini berperan sebagai fitur kunci dalam MQTT, memberi klien kemampuan untuk memilih antara tiga tingkat layanan.

Tiga tingkat QoS yang berbeda menentukan bagaimana konten dikelola oleh protokol MQTT. Meskipun tingkat QoS yang lebih tinggi lebih andal, mereka memiliki latensi dan kebutuhan bandwidth lebih besar, sehingga klien yang berlangganan dapat menentukan tingkat QoS tertinggi yang ingin mereka terima.

  • Tingkat QoS yang paling sederhana adalah layanan tanpa pengakuan. Tingkat QoS ini menggunakan urutan paket PUBLISH; publisher mengirimkan pesan ke broker satu kali, dan broker meneruskan pesan kepada subscriber satu kali. Tidak ada mekanisme untuk memastikan pesan telah diterima dengan benar, dan broker tidak menyimpan pesan. Tingkat QoS ini juga dapat disebut sebagai paling banyak sekali, QoS0 atau fire and forget.

  • Tingkat QoS kedua adalah layanan dengan pengakuan. Tingkat QoS ini menggunakan urutan paket PUBLISH/PUBACK antara publisher dan brokernya, serta antara broker dan subscriber. Paket pengakuan memverifikasi bahwa konten telah diterima, dan mekanisme pengulangan akan mengirimkan kembali konten asli jika pengakuan tidak diterima dalam waktu yang tepat. Ini dapat mengakibatkan subscriber menerima beberapa salinan pesan yang sama. Tingkat QoS ini juga dapat disebut sebagai paling tidak sekali atau QoS1.

  • Tingkat QoS ketiga adalah layanan terjamin. Tingkat QoS ini mengirimkan pesan dengan dua pasang paket. Pasangan pertama disebut PUBLISH/PUBREC, dan pasangan kedua disebut PUBREL/PUBCOMP. Dua pasang ini memastikan bahwa, terlepas dari jumlah pengulangan, pesan hanya akan dikirim sekali. Tingkat QoS ini juga dapat disebut sebagai tepat sekali atau QoS2.

QoS MQTT

Keuntungan dan kerugian

Keuntungan:

  • MQTT tidak memandang isi paket. Payload protokol MQTT dapat membawa jenis data apa pun seperti biner, teks ASCII, dll. Penerima perlu menafsirkan dan mendekode sesuai format yang digunakan oleh pemancar.

  • Ia menggunakan paket berukuran kecil dan dapat digunakan untuk aplikasi berbandwidth rendah.

  • Ia menawarkan konsumsi daya baterai yang lebih rendah.

  • Ini adalah protokol yang andal karena menggunakan opsi QoS untuk menyediakan pengiriman yang dijamin.

  • Karena model publish/subscribe-nya, ini skalabel.

  • Ia menawarkan desain yang terpisah karena mudah untuk memisahkan perangkat dan server. Ideal untuk komunikasi terdistribusi satu-ke-banyak dan aplikasi yang terpisah.

  • Perangkat penerbit dapat mengirim data ke server kapan saja terlepas dari kondisinya.

  • Dilengkapi dengan fungsi LWT (Last Will and Testament) untuk memberi tahu pihak terkait tentang pemutusan koneksi klien yang tidak normal.

  • Bergantung pada TCP/IP untuk tugas komunikasi dasar.

  • Dirancang untuk mengirim pesan sesuai dengan template "paling banyak sekali", "paling tidak sekali" dan "tepat sekali".

Kekurangan:

  • MQTT tidak dapat mendukung streaming video.

  • Masalah dengan Latensi.

  • Keamanan tidak terbangun secara bawaan. MQTT tidak terenkripsi. Sebagai gantinya, ia menggunakan TLS/SSL (Transport Layer Security/Secure Sockets Layer) untuk enkripsi keamanan.

  • Broker terpusat dapat menjadi titik kegagalan karena koneksi klien dengan broker terbuka sepanjang waktu.

  • Ia tidak mendukung fitur lanjutan seperti kontrol aliran.

Di mana MQTT dapat digunakan

Seiring aplikasi IoT kini diterapkan dalam skala besar, MQTT muncul sebagai cara terbuka, sederhana, dan skalabel untuk menerapkan komputasi terdistribusi dan fungsionalitas IoT kepada basis pengguna yang lebih luas — baik di pasar konsumen maupun industri.

  • Manajemen armada. Organisasi menggunakan MQTT untuk membangun sistem manajemen armada yang lebih cerdas yang meningkatkan optimasi armada, keselamatan pengemudi, dan menurunkan biaya bahan bakar. Mode transportasi baru yang menggunakan drone juga mengubah cara kita memindahkan barang. Konektivitas antara perangkat bergerak yang digunakan operator, informasi telemetri langsung dari kendaraan, dan integrasi ke sistem penjadwalan dan perutean backend menyediakan visibilitas yang dibutuhkan untuk meningkatkan operasi armada secara keseluruhan.

  • Data sensor lingkungan. MQTT mendukung model pengiriman pesan "paling banyak sekali". Dalam jaringan dengan cakupan wilayah sebagian atau latensi tinggi, ini berarti informasi dapat hilang atau terduplikasi. Di daerah di mana sensor jarak jauh merekam dan mengirim data pada interval tertentu, ini bukan masalah, karena pembacaan baru diterima secara rutin. Sensor di lingkungan terpencil biasanya perangkat berdaya rendah, yang menjadikan MQTT solusi ideal untuk sensor IoT dengan prioritas transfer data relatif rendah.

  • Data kesehatan mesin: untuk merespons masalah yang muncul dengan cepat dan mencegah waktu henti. Misalnya, untuk pembangkit listrik tenaga angin, Anda memerlukan pengiriman indikator kinerja saat ini yang dijamin kepada tim lokal bahkan sebelum informasi ini sampai ke pusat pemrosesan data. Dalam situasi seperti itu, pengiriman pesan "paling tidak sekali" menjamin bahwa flag yang sesuai akan diperhatikan oleh spesialis yang diperlukan tepat waktu, bahkan jika datang sebagai duplikat. Ini penting untuk komunikasi mesin-ke-mesin dengan prioritas lebih tinggi.

  • Sistem penagihan: Ada pesan yang lebih prioritas dan akurat yang perlu ditangani dengan benar. Dalam situasi bisnis di mana duplikasi catatan tidak dapat diterima, termasuk dalam sistem penagihan, flag QoS transmisi "tepat sekali" berguna. Ini menghilangkan duplikasi atau kehilangan paket dalam sistem penagihan, mengurangi jumlah anomali dan kontradiksi yang tidak perlu dalam perjanjian.

  • Aplikasi pesan berbasis teks untuk komunikasi real-time yang memanfaatkan penggunaan data dan energi rendah MQTT. Misalnya, Facebook menggunakan MQTT untuk aplikasi Messenger-nya, bukan hanya karena protokol menghemat daya baterai selama pengiriman pesan dari ponsel ke ponsel, tetapi juga karena protokol memungkinkan pesan dikirimkan secara efisien dalam hitungan milidetik, meskipun koneksi internet tidak konsisten di seluruh dunia.

Perangkat MQTT yang didukung oleh Navixy

  • Xirgo Global FMS500 Light MQTT (IOTM

  • Xirgo Global FMS500 Light+ MQTT (IOTM)

  • Xirgo Global FMS500 StCAN MQTT (IOTM)

  • BCE FMS500 Light MQTT (IOTM)

  • BCE FMS500 Light+ MQTT (IOTM)

  • BCE FMS500 StCAN MQTT (IOTM)

  • GlobalmatiX xTCU

Cara mengonfigurasi perangkat MQTT agar bekerja dengan Navixy

Konfigurasi perangkat Xirgo & BCE MQTT

Untuk mengonfigurasi perangkat Xirgo & BCE agar bekerja dengan MQTT:

Konfigurasi perangkat Globalmatix MQTT

Untuk mengonfigurasi perangkat Globalmatix agar bekerja dengan MQTT:

Untuk mengonfigurasi perangkat Globalmatix agar bekerja dengan MQTTS:

Last updated

Was this helpful?