我需要使用MQTT还是HTTP?


9

我正在研究一种可从环境中感应和收集信息的设备,例如温度,湿度等。

该设备未连接任何电源,但具有电池和一块太阳能电池板来为其充电。

大多数情况下,它几乎处于深度睡眠状态,并且仅在需要感测和传输数据时才唤醒。此操作大约需要1-2分钟,然后再次进入睡眠状态。

我不是该领域的专家,但是我认为,如果需要随时访问设备以接收来自某个主题的消息,那么MQTT应该是一个不错的选择,但是在我的情况下,它仅读取传感器并将数据发送到服务器定期。

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


1
这是相似的,但是我的意思是要了解我是否需要在我的场景中实现MQTT:当我的设备99%的时间处于深度睡眠状态时,只是醒来发送读数。
zephrax

1
我都不建议。首先写出您的要求,并实施最简单的协议。在割草机上使用法拉利引擎来剪草是没有意义的。不要陷入繁琐的话题中-只需进行基础研究并实施最有效的方法即可。
Xofo

很好地捕捉问题标题中的要求,一般来说,我想问的是小的,不经常使用的传感器值。
肖恩·霍利哈内

@Xofo我很想看到一个答案,以及为什么您可能建议使用自定义协议。值得“自己动手”的额外努力,再加上安全性问题等吗?
Aurora0001

不是自定义协议...我说的是首先定义需求。规定的某些协议通常过于繁琐。
Xofo

Answers:


8

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

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


1
同时,大数据量(http)和小数据量(mqtt)会立即分开,并且在信号不好的情况下mqtt更可靠。
mico '17

1
服务器仅从传感器接收数据。我的帖子的重点是,我不确定使用MQTT是否有意义,因为该设备将在99%的时间处于深度睡眠状态(所有总线,调制解调器,传感器均已关闭),并且仅醒来以读取传感器并发送数据。
zephrax

如果将数据存储在某处,则意味着您具有数据库和用于查询数据的后端方法(Apache服务器,命令行SQL等)。如果将MQTT放在此之上,则将有另一个实例和要管理的端口。
Goufalite

1
我同意这个答案。如果您不需要双向通信,并且设备经常处于睡眠状态,那么HTTP是一种简单且合适的协议选择。
TheMagicCow

8

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

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

比较Web物联网应用程序中CoAP和HTTP的成本​​效率中,您可以找到一些非常有说服力的证据,证明CoAP在这里可以为您节省一些电能。在附录A(第38页)中,您可以在表A.4中查看设备的预期电池寿命。如您在用例中所期望的,在120秒的时间间隔内:

t bat(HTTP),天— 2013年

牛逼蝙蝠(CoAP协议),天- 11013

这些计算是基于一对碳锌AA电池进行的,但是您可以清楚地看到CoAP所消耗的电量要少得多,因此可能值得考虑。如本文所述,其“推送模式”似乎完全是您计划要做的事情。

尽管您没有特别询问CoAP,但我认为值得一提,因为Goufalite已经介绍了MQTT和HTTP之间的本质区别。一个好的经验法则是:您打算进行一对一一对多的交流吗?如果是前者,HTTP和CoAP似乎更合适。如果是后者,则MQTT可能更方便。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.