MQTT协议是否适合通过BLE传输传感器读数?


12

假设有许多弱传感器(例如Arduino级设备)依赖BLE作为通信手段,并且这些设备已连接到功能更强大的网关(例如Raspberry pi级设备)。

我想知道MQTT是否被认为是传输其读数(短而频繁的突发消息)的合适协议。

许多博客/文档都认为MQTT适用于“ IoT应用程序”,因为与HTTP相比,MQTT的重量更轻,并且可以节省功耗。但是,据我所知,它要求保持连接开放,而BLE或其他适用于IoT的通信协议并非如此。BLE不会长时间保持连接打开以保留能量。显然,当使用MAC层协议(例如WiFi)时,MQTT是合适的。首先,这几乎打破了使用MQTT的基本原理(即,如果设备可计算地处理诸如WiFi之类的协议,则它可能不需要诸如MQTT之类的协议)。您是否看到这种逻辑上的缺陷?

为此有任何其他应用层协议吗?当它们与网关通信以及直接与服务器通信时,这些类型的消息(例如原始二进制数据,JSON,XML)中最常见的结构是什么?


本地BLE机制是否由于任何特定原因而不合适?
肖恩·霍利哈内

肖恩(Sean)的问题最好分为两部分-A)本地BLE协议机制是否可用于设备的直接链接,以及B)数据最终需要存放在哪里?如果B部分的答案超出BLE的范围,则需要一座桥梁(至少在无线电格式之间,但也可能在协议之间)。
克里斯·斯特拉顿

网关使用原始读数还是简单地中继它们,并且在这种情况下,有意义的是端对端地隧道传输MQTT,而不是在网关处桥接MQTT本身的BLE?
肖恩·霍利哈内

Answers:


14

MQTT必须在TCP / IP上运行(我不记得它是否确实在规范中,或者是否做出了足够的假设),但是它的姊妹协议MQTT-SN可以在几乎任何可以传递数据的协议上运行,我已经看到了UDP和串行的实现。

话虽这么说,但我不确定您通过在BLE上运行会获得什么,BLE的内置特性会在通知之类的功能(如果仅以1对1的基础)上提供很多相同的好处。

我认为要记住的重要一件事是“ I”在物联网中的含义,这意味着在某个时候可以访问Internet(即使它是网关设备或电话)。那时,MQTT可能非常有用,但是并不一定意味着一直到(出血)边缘。


首先,感谢您让我知道MQTT-SN的存在。绝大多数文献在某种程度上具有误导性,因为它暗示MQTT主要是由于其节能特性而为边缘设备提供了支持。在那种情况下,降低功耗并不是真正的理由,因为在具有该配置文件的设备中,根本就没有关系。这些设备应实现完整的IP堆栈,并且由于MQTT保持开放连接,因此节能MAC层协议不是一种选择。
dr.doom

1
与HTTP之类的东西相比,MQTT确实节省了功率,因为​​一旦您已经运行了TCP堆栈,打开的TCP连接实际上并不会消耗那么多的能量来保持打开状态,并且保持活动的数据包很小。此外,协议开销比HTTP低得多,因为HTTP头与MQTT数据包头相比非常庞大。许多计算文献都基于蜂窝设备,例如电话
hardillb

同样,边缘也发生了变化,它曾经是TCP / IP停止的地方,诸如ble和ZigBee(尤其是lpwan)之类的东西,甚至更低功率的处理器也已经迁移到了更薄的设备上
hardillb

显然,它不仅是TCP / IP,还包括TCP / IP。唯一的要求是协议必须提供“有序,无损,双向连接”。就像文档摘要的第二段一样。存在SN是因为对于小型系统,特别是基于无线电的系统,这一要求非常繁重。也许这就是您的意思,即“做出足够的假设才能做到这一点”,但这绝对不依赖于TCP / IP。
戴夫牛顿

9

可以说,最好将数据从BLE范例简单映射到MQTT,而不是尝试通过BLE实际发送MQTT。

BLE通常以特征形式交换数据。它们具有各种BLE独特的机制,可发现您可能会发现有用的价值变化。 但是它们的最大数据长度为20个字节

这是可能的过度BLE以流的串行数据,在时间移动20个字节。有时这样做是为了实现虚拟串行端口,您可以通过该通道建立完整的MQTT。

但是您可能最好使用BLE特征的集合来承载不同主题的数据,并拥有一个将特征标识映射到MQTT主题并将映射到MQTT有效负载的桥。

BLE具有持续连接会话和非连接会话的感觉。可能您应该弄清楚BLE的哪种用法最适合您的应用程序,然后将其映射到MQTT维护连接的意义上。

您应该能够在一个或两个方向上执行此操作:BLE-> MQTT和MQTT-> BLE


5
如果您想使用MQTT 2 BLE桥接器,请查看我的github.com/hardillb/mqtt2ble
hardillb '17

感谢您提供的链接,我现在就来看一下。
dr.doom
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.