我需要使用 MQTT 还是 HTTP?

物联网 MQTT 协议 https
2021-06-25 01:22:45

我正在开发一种设备,可以从环境中感知和收集信息,例如温度、湿度等。

该设备没有连接任何电源,但它有一个电池和一个太阳能电池板来充电。

大部分时间它几乎处于深度睡眠状态,只有在需要感知和传输数据时才会醒来。此操作大约需要1-2分钟,然后再次进入睡眠状态。

我不是这方面的专家,但我认为 MQTT 应该是一个不错的选择,如果设备需要一直可以访问以接收来自主题的消息,但在我的场景中它只读取传感器,并将数据发送到服务器定期。

目前我正在通过 HTTP 发送数据,但我想知道实现 MQTT 是否有意义?在这种情况下,我应该比 HTTP 有什么优势吗?

2个回答

如果您要存储数据,只需坚持使用 HTTP。HTTP 只是一种单向信号。

如果您的服务器或任何其他“事物”应对特定信号(低温等)做出反应,则使用 MQTT。像这样,许多设备可以订阅您的温度信号并立即做出反应,而无需使用您的服务器。

您提到太阳能电池板和电池是设备的一部分,因此您可能希望最大限度地减少传输过程中的用电量,以确保您的设备不会完全耗尽电量。

因此,你可能要考虑CoAP协议,将共同nstrained一个pplication P rotocol,邮局这是专门为在物联网的受限设备设计的。

在文章比较 Web of Things 应用程序中 CoAP 和 HTTP 的成本效率 中,您可以找到一些非常有说服力的证据,证明 CoAP 可以在此处为您节省一些电力。在附录 A(第 38 页)中,您可以查看表 A.4 中设备的预期电池寿命。对于 120 秒的时间间隔,正如您在用例中所期望的那样:

t bat (HTTP),天数 — 2013

t bat (CoAP),天数 — 11013

这些计算是在一对碳锌 AA 电池上运行的,但您可以清楚地看到 CoAP 使用的功率要少得多,因此可能值得考虑。正如论文中所描述的,它的“推送模式”似乎正是您计划做的事情。

虽然你没有具体问到 CoAP,但我认为值得一提,因为 Goufalite 已经涵盖了 MQTT 和 HTTP 之间的本质区别。一个好的经验法则是:您打算进行一对一交流还是一对多交流如果是前者,HTTP 和 CoAP 似乎更合适。如果是后者,MQTT 可能更方便。