我正在开发一种测量温度、湿度和质量的设备。目前它使用 HTTPS 将数据上传到远程服务器。现在我知道有一个叫MQTT的协议,号称是“物联网协议”。
在什么情况下以及为什么我应该从 HTTPS 切换到 MQTT?
我正在开发一种测量温度、湿度和质量的设备。目前它使用 HTTPS 将数据上传到远程服务器。现在我知道有一个叫MQTT的协议,号称是“物联网协议”。
在什么情况下以及为什么我应该从 HTTPS 切换到 MQTT?
MQTT 是设备之间的“信使”:
/domotics/myplace/mydevice/temperature
X
(作为“有效负载”)在你家的其他地方:
/domotics/+/+/temperature
以从使用此主题格式的所有设备接收所有温度信息。有关MQTT 主题通配符(和)的更多信息,请参阅MQTT 规范。+
#
X
然后做任何想做的事!在你家的其他地方:
/domotics/myplace/mydevice/#
以从您的设备获取所有信息并记录下来X
然后做任何想做的事!MQTT 对于避免在服务器周围放置 Web 服务和套接字非常有用。Node-RED 使用 MQTT 并且可以配置 Domoticz 来获取in
和设置out
信号。
我个人在家中使用 MQTT 来关闭计算机:/house/computers/mycomputer
有效载荷:0
称为MQTT 的MQ 遥测传输协议专为在低功耗和低带宽下运行的设备而设计。它是一种轻量级发布/订阅消息传递协议,这意味着任何其他设备都可以订阅特定主题。
HTTP/HTTPS被设计为客户端-服务器计算的请求-响应协议,它从不关心电源使用情况并且具有大量数据开销。
在以下情况下使用 MQTT:
MQTT 是否提供与 HTTPS 一样多的安全性?
MQTT 依赖 TCP 作为传输协议,这意味着默认情况下连接不使用加密通信。为了加密整个 MQTT 通信,大多数 MQTT 代理(如 HiveMQ)允许使用 TLS 而不是普通 TCP。
参考:HiveMQ
MQTT(消息队列遥测传输)似乎非常适合建议的应用程序。
它在带宽(最小的数据包大小,只有 2 个字节的标头)和客户端代码占用空间(使其能够在像 ESP8266 这样的瘦客户端上运行,典型的 IoT 客户端)方面都是轻量级的。减少传输的数据有利于延长离网电池供电客户端(如传感器)的电池寿命。
MQTT 还提供了非常适合 IoT 任务的简单方法(动词),例如在客户端意外断开连接后恢复连接的持久订阅。与 HTTP/HTTPS 相比,从包中提取数据也更简单(不需要解析器)。
在这里,我写了一篇文章,展示了我们项目中通信系统的发展和演变。它是关于微服务的,但您可以将任何传感器视为微服务,其工作是收集和发布任何类型的遥测数据。
所以最重要的结论是,当您只需要将事件发送到某个地方而您对接收者一无所知时,最好使用 MQTT。当您对接收者有所了解并需要一些响应时,最好使用 HTTP(通常是 REST)——例如,在任何命令的情况下。
从流量、CPU、内存和能耗来看MQTT和HTTP基本一致。