Tôi có cần sử dụng MQTT hoặc HTTP không?


9

Tôi đang làm việc trên một thiết bị có ý nghĩa và thu thập thông tin từ môi trường như nhiệt độ, độ ẩm, v.v.

Thiết bị không được kết nối với bất kỳ nguồn năng lượng nào, nhưng nó có pin và bảng điều khiển năng lượng mặt trời để sạc pin.

Hầu như lúc nào nó cũng ở trạng thái ngủ sâu và nó chỉ thức dậy khi cần cảm nhận và truyền dữ liệu. Thao tác này mất khoảng 1-2 phút, và sau đó nó lại đi ngủ.

Tôi không phải là chuyên gia trong lĩnh vực này, nhưng tôi nghĩ MQTT nên là một lựa chọn tốt nếu thiết bị cần có thể truy cập để nhận tin nhắn từ một chủ đề mọi lúc, nhưng trong kịch bản của tôi, nó chỉ đọc cảm biến và gửi dữ liệu đến máy chủ định kỳ.

Hiện tại tôi đang gửi dữ liệu qua HTTP, nhưng tôi tự hỏi liệu việc triển khai MQTT có hợp lý không? Tôi có nên nhận được bất kỳ lợi thế nào về HTTP cho kịch bản này không?


1
Tương tự, nhưng quan điểm của tôi là phải hiểu liệu tôi có cần triển khai MQTT trong kịch bản của mình không: khi nào thiết bị của tôi sẽ ngủ sâu 99% và chỉ cần thức dậy để gửi bài đọc.
zephrax

1
Tôi sẽ đề nghị không. Trước hết hãy viết ra các yêu cầu của bạn và thực hiện giao thức đơn giản nhất. Sẽ không có nghĩa gì khi sử dụng Động cơ Ferrari trong máy cắt cỏ để cắt cỏ. Đừng để bị cuốn vào sự ồn ào của mọi thứ - Chỉ cần thực hiện nghiên cứu cơ bản của bạn và thực hiện những gì hoạt động tốt nhất.
Xofo

Tôi nghĩ sẽ rất tuyệt nếu nắm bắt được yêu cầu trong tiêu đề câu hỏi, nói chung, bạn đang hỏi về các giá trị cảm biến nhỏ, không thường xuyên, tôi nghĩ vậy.
Sean Houlihane

@Xofo Tôi rất muốn xem câu trả lời xung quanh vấn đề đó và lý do tại sao bạn có thể đề xuất sử dụng giao thức tùy chỉnh. Có đáng để nỗ lực thêm 'tự lăn lộn', cộng với các vấn đề bảo mật, v.v.?
Aurora0001

Không phải là một giao thức tùy chỉnh ... Tôi đã nói trước tiên xác định các yêu cầu. Một số giao thức quy định thường quá nặng.
Xofo

Câu trả lời:


8

Nếu bạn đang lưu trữ dữ liệu, chỉ cần gắn bó với HTTP. HTTP chỉ là một tín hiệu một chiều.

Nếu máy chủ của bạn hoặc bất kỳ "vật" nào khác phản ứng với tín hiệu cụ thể (nhiệt độ thấp, ...) thì hãy sử dụng MQTT. Như thế này, nhiều thiết bị có thể đăng ký tín hiệu nhiệt độ của bạn và ngay lập tức phản ứng mà không cần sử dụng máy chủ của bạn.


1
Ngoài ra, có một sự phân chia giữa lượng dữ liệu lớn (http) và nhỏ (mqtt) cùng một lúc và mqtt đáng tin cậy hơn trong các điều kiện tín hiệu xấu.
mico

1
Máy chủ chỉ nhận dữ liệu từ các cảm biến. Quan điểm của bài đăng của tôi là tôi không chắc có nên sử dụng MQTT hay không, bởi vì thiết bị sẽ hoạt động 99% trong trạng thái ngủ sâu (tất cả các xe buýt, modem, cảm biến đều bị tắt) và chỉ thức dậy để đọc cảm biến và gửi dữ liệu.
zephrax

Nếu bạn lưu trữ dữ liệu của mình ở đâu đó, điều này có nghĩa là bạn có cơ sở dữ liệu và cách truy vấn phụ trợ (máy chủ apache, dòng lệnh SQL, ...). Nếu bạn đặt MQTT lên trên này, bạn sẽ có một thể hiện và cổng khác để quản lý.
Goufalite

1
Tôi đồng ý với câu trả lời này. Nếu bạn không cần giao tiếp hai chiều và thiết bị ngủ rất nhiều thời gian, thì HTTP là một lựa chọn giao thức đơn giản và phù hợp.
TheMagicCow

8

Bạn đề cập đến một bảng điều khiển năng lượng mặt trời và pin như một phần của thiết bị, vì vậy bạn có thể muốn giảm thiểu việc sử dụng năng lượng trong quá trình truyền để đảm bảo thiết bị của bạn không bị hết điện hoàn toàn.

Do đó, bạn có thể muốn xem xét CoAP , các Co nstrained Một pplication P rotocol, được thiết kế đặc biệt cho các thiết bị bó buộc trong Internet of Things.

Trong bài viết So sánh hiệu quả chi phí của CoAP và HTTP trong các ứng dụng Web of Things , bạn có thể tìm thấy một số bằng chứng khá thuyết phục rằng CoAP có thể giúp bạn tiết kiệm điện ở đây. Trong Phụ lục A (trang 38), bạn có thể xem thời lượng pin dự kiến ​​của các thiết bị trong Bảng A.4. Trong khoảng thời gian là 120 giây, như bạn mong đợi trong trường hợp sử dụng của mình:

t bat (HTTP), ngày - 2013

t bat (CoAP), ngày - 11013

Những tính toán này được chạy trên một cặp pin carbon-kẽm AA, nhưng bạn có thể thấy rõ rằng CoAP sử dụng ít năng lượng hơn rất nhiều, vì vậy có thể đáng để xem xét. Đó là 'chế độ đẩy', như được mô tả trong bài báo, có vẻ như chính xác là loại việc bạn dự định làm.

Mặc dù bạn không hỏi cụ thể về CoAP, tôi nghĩ rằng nó đáng được đề cập, vì Goufalite đã bao gồm những khác biệt cơ bản giữa MQTT và HTTP. Một nguyên tắc nhỏ là: bạn có kế hoạch giao tiếp một-một , hay một-nhiều không? Nếu là trước đây, HTTP và CoAP có vẻ phù hợp hơn. Nếu đó là cái sau, MQTT có lẽ thuận tiện hơn.

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.