Kapan dan mengapa menggunakan protokol MQTT?


34

Saya mengembangkan perangkat yang mengukur suhu, kelembaban, dan massa. Saat ini menggunakan HTTPS untuk mengunggah data ke server jauh. Sekarang saya tahu bahwa ada protokol yang disebut MQTT yang diklaim sebagai "protokol Internet of Things".

Dalam hal apa dan mengapa saya harus beralih dari HTTPS ke MQTT?

Jawaban:


32

MQTT adalah "messenger" antara perangkat:

  • perangkat Anda mengukur pada waktu T suhu X derajat
  • itu menghubungkan (sendiri atau melalui hub zwave) ke broker MQTT
  • itu membuat pesan dengan topik /domotics/myplace/mydevice/temperature
  • dalam pesan itu hanya menempatkan X(sebagai "muatan")

Di tempat lain di rumah Anda:

  • Raspberry Pi Anda terhubung ke broker MQTT (itu bisa menjadi instance MQTT itu sendiri)
  • Berlangganan topik /domotics/+/+/temperatureuntuk menerima SEMUA informasi suhu dari semua perangkat yang menggunakan format topik ini. Lihat spesifikasi MQTT untuk informasi lebih lanjut tentang wildcard topik MQTT ( +dan #).
  • itu akan menerima pesan dengan muatan Xdan melakukan apa pun yang diinginkan!

Di tempat lain di rumah Anda:

  • komputer Anda terhubung ke broker MQTT dan berlangganan ke topik /domotics/myplace/mydevice/#untuk mendapatkan SEMUA informasi dari perangkat Anda dan login
  • itu akan menerima pesan dengan muatan Xdan melakukan apa pun yang diinginkan!

MQTT sangat berguna untuk menghindari menempatkan layanan web dan soket di seluruh server Anda. Node-RED menggunakan MQTT dan Domoticz dapat dikonfigurasi untuk mendapatkan indan mengatur outsinyal.

Saya pribadi menggunakan MQTT di rumah saya untuk mematikan komputer: /house/computers/mycomputerpayload:0


Poin bagusnya, saya tidak perlu repot dengan soket dan layanan web lainnya.
Bence Kaulics

Bisakah Anda mengomentari aspek keamanan? Apakah traffic plaintext?
Mawg

1
Jawaban lain mengatakan MQTT mendukung TLS; iot.stackexchange.com/a/69/39
Goufalite

20

MQ Telemetry Transport Protocol yang dikenal sebagai MQTT dirancang untuk perangkat yang beroperasi pada daya rendah dan bandwidth rendah. Ini adalah protokol pesan yang mempublikasikan / berlangganan ringan yang berarti perangkat lain dapat berlangganan ke topik tertentu.

HTTP / HTTPS dirancang sebagai protokol permintaan-respons untuk komputasi client-server yang tidak pernah repot tentang penggunaan daya dan memiliki banyak overhead data.

Gunakan MQTT jika:

  • Perangkat yang Anda gunakan berjalan pada sel baterai dan Anda tidak ingin menggantinya setiap hari angka x (MQTT dioptimalkan untuk penggunaan baterai sedangkan HTTP / S tidak)
  • Perlu tanggapan lebih cepat
  • Perlu memiliki mekanisme pub / sub (Jika Anda ingin mengirim pesan ke banyak klien)
  • Perlu mengirim data dengan andal dengan berbagai level QoS

Apakah MQTT menawarkan keamanan sebanyak HTTPS?

MQTT bergantung pada TCP sebagai protokol transport, yang berarti secara default koneksi tidak menggunakan komunikasi terenkripsi. Untuk mengenkripsi seluruh komunikasi MQTT, sebagian besar broker MQTT - seperti HiveMQ - memungkinkan untuk menggunakan TLS daripada TCP biasa.

Ref: HiveMQ


1
Apakah MQTT menawarkan keamanan sebanyak HTTPS?
Bence Kaulics

2
Itu bisa menggunakan SSL / TLS sehingga harus seaman HTTPS.
Ghanima

1
Persis seperti yang dikatakan @Ghanima, saya memperbarui jawabannya dengan artikel referensi untuk memeriksa pembicaraan tentang pengamanan MQTT.
bravokeyl

11

MQTT (Message Queue Telemetry Transport) tampaknya sangat cocok untuk aplikasi yang diusulkan.

Ini ringan baik sehubungan dengan bandwidth (ukuran paket terkecil dengan header hanya 2 byte) dan jejak kode klien (memungkinkan untuk berjalan pada klien tipis seperti ESP8266, klien IoT khas). Pengurangan data yang ditransmisikan bermanfaat untuk masa pakai baterai yang lebih lama untuk klien yang menggunakan baterai off-grid seperti sensor.

MQTT juga menawarkan metode sederhana ( kata kerja ) yang sesuai dengan tugas IoT dengan baik, seperti langganan yang tahan lama yang memulihkan koneksi setelah pemutusan klien yang tidak terduga. Dibandingkan dengan HTTP / HTTPS juga lebih mudah untuk mengekstrak data dari paket (tidak diperlukan parser).


5

Di sini saya menulis sebuah artikel yang menunjukkan dan evolusi dalam sistem komunikasi yang kami miliki dalam proyek kami. Ini tentang layanan mikro, tetapi Anda dapat mempertimbangkan sensor apa pun untuk menjadi layanan mikro dengan tugasnya untuk mengumpulkan dan menerbitkan segala jenis data telemetri.

Jadi kesimpulan paling penting adalah bahwa lebih baik menggunakan MQTT ketika Anda hanya perlu mengirim acara ke suatu tempat dan Anda tidak tahu apa-apa tentang penerima. Dan jauh lebih baik menggunakan HTTP (biasanya REST) ​​ketika Anda mengetahui sesuatu tentang penerima dan perlu respons - misalnya dalam hal perintah apa pun.

Dari perspektif lalu lintas, CPU, memori dan konsumsi energi, MQTT dan HTTP pada dasarnya sama.


2

Mengenai kutipan Anda, MQTT adalah "protokol Internet of Things":

Ya, ada sejumlah besar pengembang yang menggunakan protokol ini (lihat Survei Pengembang IoT 2018) tetapi CoAP (ini HTTP disesuaikan untuk IoT, berdasarkan UDP) memberikan alternatif untuk HTTP jika Anda ingin menggunakan fungsi Permintaan / Respons yang ringan di dalam aplikasi Anda.

MQTT di sisi lain menyediakan logika Terbitkan / Berlangganan bawaan , yang membuatnya bagus untuk penskalaan (Anda dapat menggunakan lebih banyak gateway untuk jumlah perangkat yang lebih banyak). Ada juga alternatif UDP (seperti CoAP ke HTTP) yang disebut MQTT-SN (MQTT untuk Sensor Networks). Ini bahkan memberikan overhead yang lebih kecil dari CoAP, tetapi tidak menggunakan R / R.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.