我每分钟通过HTTP POST请求从Arduino发送数据(GPS坐标)到REST API(在OpenShift PaaS中)。然后将数据存储到MySQL数据库。

所谓的“IoT”发布/订阅协议(protocol)(XMPP,MQTT)会更好吗?为什么?

您究竟何时使用这两种协议(protocol)而不是Restful HTTP?我真的可以使用它们节省大量的巴特里能量吗?

这些协议(protocol)机器中的AFAIK会将数据“发布”给经纪人,而我的应用将订阅该数据。如果我想每分钟在我的应用程序中收集数据,我想我将需要一些CRON作业来每分钟订阅数据?或者如何实现数据收集?

最佳答案



如果规模较小(传感器数量不多),或者传感器具有足够的功率(CPU和电气),或者通信成本较低,那么使用MQTT的理由就更少了。相反,对于大规模,CPU/电力受限的传感器或通信成本较高的情况,MQTT或类似的物联网协议(protocol)具有优势。您可以在非常简单的嵌入式CPU中实现MQTT,而对HTTP的实现则更为复杂。



您可以使用以下方法节省电池电量: MQTT over例如3G,因为通过从MQTT客户端到代理的持久TCP连接发布MQTT数据所需的协议(protocol)开销较小,因此每个REST POST通常需要建立SSL连接,使用冗长的HTTP发布数据,然后删除SSL连接,从而减少了协议(protocol)开销。

MQTT连接本质上是双向的(尽管您的应用程序不必使用它)-因此,您自然就可以将命令发送到传感器。要使用REST/HTTP进行相同的操作,必须将服务器配置为长时间轮询。

http://stephendnicholas.com/posts/power-profiling-mqtt-vs-https上比较了SSL上的长轮询HTTPS与MQTT的比较ojit_a,与慢轮询HTTPS相比,它显示了使用MQTT节省的电池电量/天约为4.1%
因此,可以节省大量电池电量。

使用MQTT,您可以发送非常小的消息,例如几字节的二进制数据,开销低。使用REST/HTTP时,数据被封装在许多HTTP协议(protocol)中,而开销却高得多。如果您有很多设备,那么这些开销字节加起来会导致发送更多数据,这会花费很多钱。因此,使用像MQTT这样的紧凑协议(protocol)进行大规模生产并精心设计数据传输可为您节省金钱。



使用MQTT,您的应用程序通常具有对主题的持久预订,并会自动收到更新通知。如果您希望每分钟都有摘要,则您的应用会将更新保存到例如数据库和数据库中的报告。无论如何,通常都需要DB来存储所有数据。您可以订阅通配符主题-这意味着您可以设计主题,以便您的应用订阅例如所有太阳能传感器和代理将发送所有已连接设备的数据,而您的应用不必轮询各个传感器。

关于rest - 为什么/何时使用IoT发布/订阅协议(protocol)而不是RESTful HTTP?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38234272/

10-11 23:00
查看更多