MQTT là gì? Những ứng dụng của MQTT.

MQTT là giao thức giữa các máy với nhau, nhẹ và sử dụng một model xuất bản và đăng ký (publish-and-subscribe) để tái sử dụng kết nối đã thiết lập càng lâu càng tốt. Điều này đảm bảo độ tin cậy cao hơn, là điều kiện tiên quyết cho các kết nối nhà thông minh.

Ngoài ra, MQTT là giao thức gọn nhẹ được thiết kế chủ yếu để kết nối các thiết bị bị hạn chế nguồn trên các mạng băng thông thấp và độ trễ cao. Mặc dù nó đã tồn tại trong hơn một thập kỷ nhưng chỉ khi có sự ra đời của M2M (máy để truyền thông máy) và Internet of Things (IoT) mới làm cho nó trở thành một giao thức phổ biến.

Amazon Web Services, Facebook Messenger và Microsoft Azure IoT Hub đã sử dụng MQTT để duy trì kết nối luôn bật cho người dùng của họ.

Kiến trúc MQTT

Trong đó, broker được coi như trung tâm, nó là điểm giao của tất cả các kết nối đến từ client.

  • Nhiệm vụ chính của broker là nhận mesage từ publisher, xếp các message theo hàng đợi rồi chuyển chúng tới một địa chỉ cụ thể.
  • Nhiệm vụ phụ của broker là nó có thể đảm nhận thêm một vài tính năng liên quan tới quá trình truyền thông như: bảo mật message, lưu trữ message, logs,…

Các khái niệm phương thức MQTT

Cơ chế Publish, subscribe

Trong một hệ thống sử dụng giao thức MQTT, nhiều node trạm (gọi là mqtt client – gọi tắt là client) kết nối tới một MQTT server (gọi là broker). Mỗi client sẽ đăng ký một vài kênh (topic), ví dụ như “/client1/channel1”, “/client1/channel2”. Quá trình đăng ký này gọi là “subscribe”, giống như chúng ta đăng ký nhận tin trên một kênh Youtube vậy. Mỗi client sẽ nhận được dữ liệu khi bất kỳ trạm nào khác gởi dữ liệu và kênh đã đăng ký. Khi một client gởi dữ liệu tới kênh đó, gọi là “publish”.

Message

Trong giao thức MQTT, message còn được gọi là “message payload”, có định dạng mặc định là plain-text (chữ viết người đọc được), tuy nhiên người sử dụng có thể cấu hình thành các định dạng khác.

Topic

Topic có thể coi như một “đường truyền” logic giữa 2 điểm là publisher và subscriber. Về cơ bản, khi message được publish vào một topic thì tất cả những subscriber của topic đó sẽ nhận được message này.

Giao thức MQTT cho phép khai báo các topic kiểu phân cấp.

Giả sử chúng ta có một hệ thống cảm biến đo thông tin môi trường trong ngôi nhà của chúng ta. Một ngôi nhà thường sẽ có nhiều phòng và mỗi phòng lại có bộ cảm biến môi trường riêng. Như vậy, các topic phục vụ truyền tải thông tin môi trường cho ngôi nhà của chúng ta có thể được khai báo như sau:

home/living-room/temperature: topic thông tin nhiệt độ phòng khách

home/living-room/humidity: topic thông tin độ ẩm phòng khách

home/kitchen/temperature: topic thông tin nhiệt độ bếp ăn

Bên cạnh đó, MQTT cũng hộ trợ wildcards trong cú pháp khai báo topic, cụ thể đó là “+” và “#”. Trong đó, “+” bao gồm các topic ở cùng 1 level và “#” bao gồm tất cả các topic nằm dưới topic hiện tại.

Cụ thể như sau, khi muốn biết thông tin nhiệt độ của từng phòng, ta chỉ cần khai báo topic cần theo dõi là:

home/+/temperature

Khi muốn biết tất cả thông tin trong 1 phòng, ta sẽ khai báo topic cần theo dõi là:

home/kitchen/#

QoS

Ở đây có 3 tuỳ chọn QoS (Qualities of service) khi “publish” và “subscribe”:

  • QoS0: Broker/client sẽ gởi dữ liệu đúng 1 lần, quá trình gởi được xác nhận bởi chỉ giao thức TCP/IP, giống kiểu đem con bỏ chợ.
  • QoS1: Broker/client sẽ gởi dữ liệu với ít nhất 1 lần xác nhận từ đầu kia, nghĩa là có thể có nhiều hơn 1 lần xác nhận đã nhận được dữ liệu.
  • QoS2: Broker/client đảm bảm khi gởi dữ liệu thì phía nhận chỉ nhận được đúng 1 lần, quá trình này phải trải qua 4 bước bắt tay.

Retain

Retain là một cờ (flag) được gắn cho một message của giao thức MQTT. Retain chỉ nhận giá trị 0 hoặc 1 (tương ứng 2 giá trị logic false hoặc true). Nếu retain = 1, broker sẽ lưu lại message cuối cùng của 1 topic kèm theo mức QoS tương ứng. Khi client bắt đầu subscribe topic có message được lưu lại đó, client ngay lập tức nhận được message.

MQTT Bridge

MQTT Bridge là một tính năng của MQTT Broker cho phép các MQTT Broker có thể kết nối và trao đổi dữ liệu với nhau. Để sử dụng tính năng này, ta cần tối thiểu 2 Broker, trong đó, một Broker bất kỳ sẽ được cấu hình thành Bridge. Khi cấu hình MQTT bridge, ta cần lưu ý tới các thông số sau:

address: địa chỉ của broker cần kết nối
bridge_protocol_version: phiên bản của giao thức MQTT đang sử dụng chung cho 2 broker
topic: phần này định nghĩa 3 thong số: tên topic được trao đổi giữa 2 broker, chiều trao đổi (1 chiều hay 2 chiều) và topic mapping giữa 2 broker

MQTT và HTTP truyền thống

Tiêu thụ dữ liệu tối thiểu

MQTT tiêu thụ dữ liệu tối thiểu

Tương tự với nhà thông minh, giao thức MQTTT sử dụng một nhà cung cấp giống như nhà môi giới bất động sản để cải thiện việc cung cấp kết nối của nó. Các thiết bị khách khác nhau sẽ kết nối với dịch vụ sử dụng máy chủ môi giới, giúp giảm đáng kể mức tiêu thụ dữ liệu. MQTT chỉ sử dụng tiêu đề 2-bit nhị phân.

Điều này trái ngược hoàn toàn với mô hình HTTP, nơi các máy khách web không có lựa chọn nào khác ngoài giao tiếp trực tiếp với máy chủ. Nếu máy chủ ngừng hoạt động, bạn không thể thấy bất cứ điều gì trên màn hình

Với giao thức MQTT, ngay cả khi một máy chủ bị hỏng, nó sẽ tìm cho bạn một máy chủ đáng tin cậy khác để có quyền truy cập kết nối.

Bảo mật nâng cao

  • MQTT có lợi thế hơn một chút so với HTTP về tính bảo mật dữ liệu được truyền. Theo mặc định, nó sử dụng SSL/TLS như một đường truyền tin nhắn khi mã hóa trọng tải (payload).
  • Ngược lại, HTTP không cung cấp bất cứ mã hóa nào và dữ liệu có sẵn ở dạng plain text. Điều này khiến giao thức có thể bị xâm nhập. Để bảo mật hơn thì bạn cần sử dụng giao thức HTTPS thay thế.

Dễ sử dụng

  • Khi sử dụng lệnh thoại dựa trên MQTT để điều khiển thiết bị gia đình, bạn không cần quan tâm đến việc thiết lập kết nối. Có một lý do nhiều thiết bị thông minh có sẵn trực tuyến đang ngày càng cung cấp hỗ trợ MQTT. Nó có tính linh hoạt, chống giả mạo và thậm chí một người chưa từng sử dụng các sản phẩm IoT trước đây có thể làm việc với chúng một cách dễ dàng.
  • Tuy nhiên với các hệ thống HTTP, bạn sẽ phải làm quen với các lỗi máy khách hoặc máy chủ và cố gắng tự mình tìm ra cách khắc phục các sự cố.

Ứng dụng của MQTT

Có một số dự án thực hiện MQTT. Ví dụ là:

  • Facebook Messenger: Facebook đã sử dụng các khía cạnh của MQTT trong Facebook Messenger để trò chuyện trực tuyến.
  • Amazon Web Services đã công bố Amazon IoT dựa trên MQTT vào năm 2015. [17] [18]
  • Các tổ chức không gian địa lý SensorThings API đặc điểm kỹ thuật tiêu chuẩn có một phần mở rộng MQTT trong tiêu chuẩn như một giao thức thông báo bổ sung ràng buộc. Nó đã được chứng minh trong một thí điểm IoT của Bộ An ninh Nội địa Hoa Kỳ.
  • Các dịch vụ của Cơ sở hạ tầng thượng nguồn OpenStack được kết nối bằng một bus tin nhắn hợp nhất MQTT với Mosquitto là broker MQTT.
  • Adafruit đưa ra một MQTT miễn phí dịch vụ đám mây cho thí nghiệm IOT và người học gọi Adafruit IO trong năm 2015.
  • Microsoft Azure IoT Hub sử dụng MQTT làm giao thức chính cho các tin nhắn từ xa .

Tham khảo:

https://quantrimang.com/so-sanh-mqtt-va-http-166657

https://www.cafeit.info/posts/internet-of-things/mqtt-la-gi-ung-dung-cua-mqtt-trong-iot-nhu-the-nao

Leave a Reply

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