什么时候以及为什么使用MQTT协议?


34

我正在开发一种可测量温度,湿度和质量的设备。当前,它使用HTTPS将数据上传到远程服务器。现在我知道有一个称为MQTT的协议,该协议被称为“物联网协议”。

在什么情况下,为什么我应该从HTTPS切换到MQTT?

Answers:


32

MQTT是设备之间的“信使”:

  • 您的设备在时间T测量X度的温度
  • 它(本身或通过zwave集线器)连接到MQTT代理
  • 它以主题创建消息 /domotics/myplace/mydevice/temperature
  • 只是放在消息中X(作为“有效载荷”)

在您房子的其他地方:

  • 您的Raspberry Pi已连接到MQTT代理(可以是MQTT实例本身)
  • 它订阅该主题/domotics/+/+/temperature以从使用该主题格式的所有设备接收所有温度信息。有关MQTT主题通配符(和)的更多信息,请参见MQTT规范+#
  • 它会收到一条带有有效负载的消息,X并随心所欲!

在您房子的其他地方:

  • 您的计算机已连接到MQTT代理,并订阅了该主题/domotics/myplace/mydevice/#以从设备中获取所有信息并进行记录
  • 它会收到一条带有有效负载的消息,X并随心所欲!

MQTT对于避免在您的服务器周围放置Web服务和套接字非常有用。Node-RED使用MQTT,可以将Domoticz配置为获取in和设置out信号。

我个人在家中使用MQTT关闭计算机:/house/computers/mycomputer有效负载:0


很好的一点是,我不必麻烦套接字和其他Web服务。
Bence Kaulics,2013年

您能在安全方面发表评论吗?交通是明文吗?
Mawg '16

1
另一个答案是MQTT支持TLS;iot.stackexchange.com/a/69/39
Goufalite 2016年

20

称为MQTT的MQ遥测传输协议是为低功耗和低带宽运行的设备设计的。它是一种轻量级的发布/订阅消息传递协议,这意味着任何其他设备都可以订阅特定主题。

HTTP / HTTPS被设计为用于客户端-服务器计算的请求-响应协议,该协议从不担心功耗,并且具有大量数据开销。

在以下情况下使用MQTT:

  • 您正在使用的设备正在电池上运行,并且您不想每隔x天更换一次(MQTT针对电池使用进行了优化,而HTTP / S并非如此)
  • 需要更快的响应
  • 需要具有发布/订阅机制(如果要将消息推送到许多客户端)
  • 需要以不同级别的QoS可靠地发送数据

MQTT是否提供与HTTPS一样高的安全性?

MQTT依赖TCP作为传输协议,这意味着默认情况下该连接不使用加密的通信。为了加密整个MQTT通信,大多数MQTT代理(例如HiveMQ)都允许使用TLS而不是普通TCP。

参考:HiveMQ


1
MQTT是否提供与HTTPS一样高的安全性?
Bence Kaulics,2013年

2
它可以使用SSL / TLS,因此应与HTTPS一样安全。
加尼玛'16

1
就像@Ghanima所说的那样,我用参考文章更新了答案,以检查有关保护MQTT的内容。
bravokeyl

11

MQTT(消息队列遥测传输)似乎非常适合所建议的应用程序。

就带宽(具有2个字节的标头的最小数据包大小)和客户端代码占用空间(使其能够在ESP8266之类的瘦客户端(典型的IoT客户端)上运行)而言,它都是轻量级的。减少的传输数据有助于延长电池供电的离网客户端(例如传感器)的电池寿命。

MQTT还提供了非常适合IoT任务的简单方法(动词),例如持久订阅,可在客户端意外断开连接后恢复连接。与HTTP / HTTPS相比,从包中提取数据也更加简单(无需解析器)。


5

在这里,我写了一篇文章,展示了我们项目中通信系统的发展。它与微服务有关,但是您可以将任何传感器视为微服务,其工作就是收集和发布任何种类的遥测数据。

因此,最重要的结论是,当您只需要在某个地方发送事件并且对接收者一无所知时,最好使用MQTT。而且,当您对收件人有所了解并需要一些响应时(例如,使用任何命令),最好使用HTTP(通常是REST)。

从流量,CPU,内存和能耗的角度来看,MQTT和HTTP基本相同。


2

关于您的报价,MQTT是“物联网协议”:

是的,有大量的开发人员正在使用此协议(请参阅IoT Developer Survey 2018),但是CoAP(针对IoT进行HTTP调整,基于UDP,基于UDP)提供了HTTP的替代方案,以防您想要在其中使用轻量级的Request / Response功能。你的申请。

另一方面,MQTT提供了内置的发布/订阅逻辑,这使其非常适合扩展(您可以将更多的网关用于更多的设备)。还有一个称为MQTT-SN(用于传感器网络的MQTT)的UDP替代方案(如HTTP的CoAP )。与CoAP相比,这提供了甚至更小的开销,但没有使用R / R。

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.