MQTT Protocol là gì? Các ứng dụng trong gửi tin nhắn IoT
MQTT Protocol là một giao thức truyền thông gọn nhẹ, thường được áp dụng trong các dự án Internet of Things (IoT), ví dụ như IoT với mạch ESP32. Trong bài viết này, mình sẽ giải thích các thông tin bạn cần biết về MQTT, để bạn có thể hiểu về chúng và áp dụng vào các dự án IoT cho mình nếu cần nhé!
MQTT Protocol là gì?
MQTT tên tiếng Anh là Message Queue Telemetry Transport, thường dùng để truyền các dòng tin nhắn giữa các máy khách (Client) trong mạng với nguồn tài nguyên bị giới hạn. Giao thức MQTT sử dụng mô hình kết nối Publich / Subscribe để gửi dữ liệu. Đây cũng là mô hình thường dùng trong các kết nối Machine to Machine (M2M).
MQTT Protocol (giao thức MQTT) có chi phí khá rẻ, phù hợp để dùng trong các trường hợp:
- Cần giao tiếp giữa các mạch vi xử lý và cảm biến có lượng băng thông thấp, nhưng cần một đường truyền dữ liệu ổn định và hiệu quả.
- Khi các thiết bị có tài nguyên, bộ nhớ và tốc độ bị hạn chế
Trước kia, MQTT được dùng để liên lạc giữa các hệ thống giám sát, thu thập dữ liệu trong ngành dầu khí. Tuy nhiên, đến hiện nay thì chúng đã ngày càng phổ biến và được dùng nhiều trong các ứng dụng IoT như chúng ta đã thấy hiện nay, từ các dự án IoT do Maker tự làm cho đến các IoT trong lĩnh vực công nghiệp như lĩnh vực ô tô, năng lượng đến công nghệ viễn thông,… thậm chí là trong Messenger của Facebook.
>> Xem thêm: Mạng LoRa là gì? Cách cấu hình mạng LoRa trong các ứng dụng IoT
Ưu nhược điểm của giao thức MQTT
Ưu điểm
MQTT thường được ứng dụng trong các dự án IoT, nhờ vào các ưu điểm nổi bật như:
- Truyền dữ liệu ổn định với băng thông thấp, tiêu tốn ít bộ nhớ CPU và RAM của thiết bị
- Mức sử dụng mạng khá thấp
- Gửi tin nhắn nhanh chóng
- Sử dụng một lượng nhỏ điện năng, phù hợp cho các thiết bị chạy bằng pin
- Khả năng mở rộng cao
- Chi phí rẻ
- Giao thức Publish/Subscribe cho phép thu thập nhiều dữ liệu với mức băng thông ít hơn so với các giao thức trước đó
Nhược điểm
Tuy nhiên, không có thứ gì là hoàn hảo, MQTT Protocol cũng vậy. Khi cần dùng giao thức này bạn cần lưu ý một số nhược điểm sau:
- MQTT có chu kỳ truyền dữ liệu chậm hơn so với các giao thức khác như CoAP (Constrained Application Protocol)
- Publisher không biết được trạng thái của Subscribe và ngược lại, nên chúng sẽ không phát hiện được thiết bị kia có bị lỗi hay không
- Dữ liệu khi truyền qua MQTT không được mã hóa, thay vào đó chúng sử dụng TLS/SSL để bảo vệ dữ liệu
- Việc tạo ra một mạng MQTT mở rộng ở mức quy mô toàn cầu là điều rất khó
- Một số nhược điểm khác liên quan đến tính bảo mật dữ liệu, khả năng tương tác và xác thực
- Máy chủ Broker không nhận được thông báo về trạng thái của thông điệp, nên chúng không thể biết được thông điệp đã gửi đi chưa, đã gửi đúng kênh chưa
Do MQTT Protocol là một giao thức chú trọng vào tính gọn nhẹ, nên yếu tố bảo mật ít được chú ý đến. Ngoài ra, không ai biết được thiết bị nào đã gửi tin nhắn gốc, trừ khi các thông tin này có trong tin nhắn.
Cách hoạt động của MQTT
Như đã trình bày, MQTT Protocol hoạt động theo mô hình Publish / Subscribe. Trong đó, nhiều Node (là các thiết bị máy khách, có thể gọi là Client) kết nối với một máy chủ Server (có thể gọi là Broker) thông qua giao thức TCP. Trong đó, Broker có vai trò điều phối tất cả các dòng tin nhắn, sao cho chúng gửi đến đúng kênh và người nhận.
Quá trình Subscribe trong MQTT
Sau đó, mỗi một Client sẽ đăng ký một vài kênh (topic) khác nhau, chẳng hạn như /client2/channel2 hoặc client2/channel3. Quá trình này có thể gọi là Subscribe, tương tự như khi chúng ta thao tác đăng ký một kênh Fanpage nào đó để theo dõi thông tin sau này vậy.
Quá trình Publish trong MQTT
Sau khi Subscribe, khi bất kỳ Client nào gửi dữ liệu lên các kênh đã đăng ký thì quá trình đó gọi là Publish. Các Client nào đã đăng ký kênh sẽ nhận được các thông điệp dữ liệu này.
Bất kỳ Client nào cũng đều có thể thực hiện xuất bản dữ liệu lên kênh hoặc đăng ký nhận dữ liệu từ kênh cụ thể, hoặc thậm chí là cả 2.
>> Bài viết liên quan: Hướng dẫn MQTT ESP32 cho người mới bắt đầu học điện tử
Ứng dụng của MQTT trong IoT
Trong IoT, MQTT Protocol được dùng để phục vụ nhiều dự án khác nhau, chẳng hạn như:
- Đo lường và truyền dữ liệu: Giao thức MQTT được dùng để truyền dữ liệu dưới dạng tin nhắn một cách chính xác và nhanh chóng, phù hợp cho các ứng dụng cần đo và truyền dữ liệu theo thời gian thực
- Thu thập dữ liệu từ các cảm biến xung quanh: Các cảm biến thu thập dữ liệu trong các dự án Makers thường có công suất khá thấp và đa phần có nguồn điện giới hạn, nên MQTT là lựa chọn lý tưởng
- Hệ thống thanh toán: Bên cạnh 2 tính năng chính trên, MQTT còn được dùng để xóa bỏ các tin nhắn dữ liệu trùng lặp hoặc dữ liệu bị mất trong các hóa đơn
Dưới đây là một số ứng dụng đã dùng đến MQTT:
- Messenger trong FB: Gã khổng lồ Facebook đã sử dụng MQTT Protocol để phục vụ việc chat online giauwx các người dùng
- Amazon Web Services: Nhà cung cấp này đã phát triển Amazon IoT dựa trên giao thức MQTT từ những năm 2015
- Cơ sở hạ tầng OpenStack sử dụng MQTT để kết nối với Mosquitto thông qua các bus tin nhắn hợp nhất
- Adafruit sử dụng MQTT cho các thí nghiệm IoT, có tên là Adafruit IO. Nếu bạn thường làm các dự án IoT cần dùng đến Dashboard điều khiển, ắt hẳn bạn đã biết đến Server Adafruit IO này
- Microsoft Azure đã chọn giao thức MQTT để phục vụ cho việc gửi tin nhắn từ xa
Nhưng ngoài ra, MQTT cũng được dùng trong nhiều ứng dụng IoT trong thực tế, chứ không phải chỉ riêng các dự án cho Maker. ví dụ:
- OpenHAB – Một nền tảng Smart Home sử dụng MQTT để xây dựng các tính năng
- XIM xây dựng ứng dụng MQTT Client cho các điện thoại chạy trên hệ điều hành Android và iOS.
- Home Assistant hỗ trợ MQTT Protocol và các MQTT Broker khác nhau
Lời kết
Qua bài viết trên, IoTZone hy vọng bạn đã hiểu rõ hơn về khái niệm MQTT Protocol là gì, các ưu nhược điểm cũng như cách hoạt động và ứng dụng của nó. Đừng quên theo dõi IoTZone để được cập nhật nhiều kiến thức công nghệ mới nhé!