Khi nào và tại sao nên sử dụng giao thức MQTT?


34

Tôi đang phát triển một thiết bị đo nhiệt độ, độ ẩm và khối lượng. Hiện tại nó sử dụng HTTPS để tải dữ liệu lên máy chủ từ xa. Bây giờ tôi biết rằng có một giao thức gọi là MQTT được tuyên bố là "giao thức của Internet of Things".

Trong trường hợp nào và tại sao tôi nên chuyển từ HTTPS sang MQTT?

Câu trả lời:


32

MQTT là "trình nhắn tin" giữa các thiết bị:

  • thiết bị của bạn đo tại thời điểm T nhiệt độ X độ
  • nó kết nối (chính nó hoặc thông qua trung tâm zwave) với nhà môi giới MQTT
  • nó tạo ra một thông điệp với chủ đề /domotics/myplace/mydevice/temperature
  • trong thông điệp nó chỉ đặt X(dưới dạng "tải trọng")

Những nơi khác trong nhà bạn:

  • Raspberry Pi của bạn được kết nối với nhà môi giới MQTT (nó có thể là phiên bản MQTT)
  • nó đăng ký chủ đề /domotics/+/+/temperatuređể nhận TẤT CẢ thông tin nhiệt độ từ tất cả các thiết bị sử dụng định dạng chủ đề này. Xem thông số kỹ thuật MQTT để biết thêm thông tin về ký tự đại diện chủ đề MQTT ( +#).
  • nó sẽ nhận được một tin nhắn với tải trọng Xvà làm bất cứ điều gì nó muốn!

Những nơi khác trong nhà bạn:

  • máy tính của bạn được kết nối với nhà môi giới MQTT và đăng ký chủ đề /domotics/myplace/mydevice/#để lấy TẤT CẢ thông tin từ thiết bị của bạn và đăng nhập nó
  • nó sẽ nhận được một tin nhắn với tải trọng Xvà làm bất cứ điều gì nó muốn!

MQTT rất hữu ích để tránh đặt các dịch vụ web và ổ cắm xung quanh máy chủ của bạn. Node-RED sử dụng MQTT và Domoticz có thể được cấu hình để nhận invà đặt outtín hiệu.

Cá nhân tôi sử dụng MQTT tại nhà để tắt máy tính: /house/computers/mycomputertải trọng:0


Điểm hay là tôi không phải bận tâm đến các socket và các dịch vụ web khác.
Bence Kaulics

Bạn có thể bình luận về các khía cạnh bảo mật? Là bản rõ giao thông?
Mawg

1
Một câu trả lời khác nói MQTT hỗ trợ TLS; iot.stackexchange.com/a/69/39
Goufalite

20

Giao thức truyền tải từ xa MQ được gọi là MQTT được thiết kế cho các thiết bị chạy với công suất thấp và băng thông thấp. Đây là một giao thức nhắn tin xuất bản / đăng ký nhẹ, có nghĩa là bất kỳ thiết bị nào khác cũng có thể đăng ký vào một chủ đề cụ thể.

HTTP / HTTPS được thiết kế như một giao thức đáp ứng yêu cầu cho điện toán máy chủ-máy khách, không bao giờ bận tâm về việc sử dụng năng lượng và có nhiều chi phí dữ liệu.

Sử dụng MQTT nếu:

  • Thiết bị bạn đang sử dụng đang chạy trên pin và bạn không muốn thay thế mỗi x số ngày (MQTT được tối ưu hóa cho việc sử dụng pin trong khi HTTP / S thì không)
  • Cần phản ứng nhanh hơn
  • Cần có cơ chế pub / sub (Nếu bạn muốn đẩy tin nhắn đến nhiều khách hàng)
  • Cần gửi dữ liệu đáng tin cậy với các mức QoS khác nhau

MQTT có cung cấp bảo mật nhiều như HTTPS không?

MQTT dựa trên TCP là giao thức truyền tải, có nghĩa là theo mặc định, kết nối không sử dụng giao tiếp được mã hóa. Để mã hóa toàn bộ giao tiếp MQTT, hầu hết nhiều nhà môi giới MQTT - như HiveMQ - cho phép sử dụng TLS thay vì TCP đơn giản.

Tham chiếu: HiveMQ


1
MQTT có cung cấp bảo mật nhiều như HTTPS không?
Bence Kaulics

2
Nó có thể sử dụng SSL / TLS vì vậy nó phải an toàn như HTTPS.
Ghanima

1
Chính xác như @Ghanima đã nói, tôi đã cập nhật câu trả lời với bài viết tham khảo để kiểm tra xem nói về việc bảo mật MQTT.
bravokeyl

11

MQTT (Message Queue Tel Remotery Transport) dường như rất phù hợp cho ứng dụng được đề xuất.

Nó rất nhẹ cả về băng thông (kích thước gói nhỏ nhất với tiêu đề chỉ 2 byte) và dấu chân mã máy khách (cho phép nó chạy trên các máy khách mỏng như ESP8266, máy khách IoT điển hình). Giảm dữ liệu truyền có lợi cho tuổi thọ pin dài hơn đối với các máy khách chạy bằng pin ngoài lưới như cảm biến.

MQTT cũng cung cấp các phương thức đơn giản ( động từ ) phù hợp với các nhiệm vụ IoT, như đăng ký bền, phục hồi các kết nối sau khi ngắt kết nối máy khách không mong muốn. So với HTTP / HTTPS, việc trích xuất dữ liệu từ gói cũng đơn giản hơn (không cần trình phân tích cú pháp).


5

Ở đây tôi đã viết một bài báo cho thấy và tiến hóa trong hệ thống truyền thông chúng tôi đã có trong dự án của chúng tôi. Nó nói về các dịch vụ vi mô, nhưng bạn có thể coi bất kỳ cảm biến nào là dịch vụ vi mô với công việc của nó là thu thập và xuất bản bất kỳ loại dữ liệu từ xa nào.

Vì vậy, kết luận quan trọng nhất là tốt hơn là sử dụng MQTT khi bạn chỉ cần gửi sự kiện ở đâu đó và bạn không biết gì về người nhận. Và sẽ tốt hơn nhiều khi sử dụng HTTP (thường là REST) ​​khi bạn biết điều gì đó về người nhận và cần một số phản hồi - ví dụ như trong trường hợp có lệnh gì.

Từ quan điểm lưu lượng, CPU, bộ nhớ và tiêu thụ năng lượng MQTT và HTTP về cơ bản là giống nhau.


2

Liên quan đến trích dẫn của bạn MQTT là "giao thức của Internet of Things":

Có, có rất nhiều nhà phát triển sử dụng giao thức này (xem Khảo sát nhà phát triển IoT 2018) nhưng CoAP (được điều chỉnh HTTP cho IoT, dựa trên UDP) cung cấp giải pháp thay thế cho HTTP trong trường hợp bạn muốn sử dụng chức năng Yêu cầu / Phản hồi nhẹ trong ứng dụng của bạn.

Mặt khác, MQTT cung cấp logic Xuất bản / Đăng ký tích hợp, giúp mở rộng quy mô (bạn có thể sử dụng nhiều cổng hơn cho số lượng thiết bị lớn hơn). Ngoài ra còn có một giải pháp thay thế UDP (như CoAP thành HTTP) được gọi là MQTT-SN (MQTT cho Mạng cảm biến). Điều này thậm chí còn cung cấp một chi phí nhỏ hơn CoAP, nhưng không sử dụng R / R.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.