概览
MQTT 是一种为物联网设备和应用程序设计的消息协议,采用发布与订阅模型,具有轻量、高效、可靠的,支持实时通讯等优点。 MQTT 非常适合资源受限的环境,特别是需要高效使用电力和带宽的场景。
Neuron 支持 MQTT 作为其通讯协议之一。 Neuron MQTT 插件允许用户快速构建使用 MQTT 协议的物联网应用程序,可以在设备和云之间进行通讯。 使用 MQTT 插件,开发人员还可以向 IoT 设备发布消息,触发设备操作,例如打开或关闭灯、电机或者其他设备。 该插件还支持使用身份验证和加密通讯协议进行安全通讯,确保数据的安全性和隐私性。
参数
以下是使用 MQTT 插件配置节点时可用的参数:
字段 | 说明 |
---|---|
client-id | MQTT 通信的客户端 id,必填。 |
upload-topic | 订阅数据上报的主题,必填。 |
format | 上报数据的 JSON 格式,必填。有 VALUES 格式和 TAGS 格式。 |
cache-mem-size | 通信失败时内存消息缓存大小 (MB) 限制,必填。范围在 [0, 1024] 。 不能大于 cache-disk-size。 |
cache-disk-size | 通信失败时磁盘消息缓存大小 (MB) 限制,必填。范围在 [0, 10240] 。设为非零值时, cache-mem-size 也须为非零值。 |
host | MQTT Broker 地址,必填。 |
port | MQTT Broker 端口号,必填。 |
username | 连接到 Broker 时使用的用户名,选填。 |
password | 连接到 Broker 时使用的密码,选填。 |
ssl | 是否启用 SSL,选填,默认不启用。 |
ca | CA 证书,启用 SSL 时必填。 |
cert | 客户端证书,使用 SSL 双向认证时必填。 |
key | 客户端密钥,使用 SSL 双向认证时必填。 |
keypass | 客户端密钥密码,使用 SSL 双向认证时选填。 |
数据上报
在订阅了南向节点之后,Neuron 的 MQTT 插件将收集到的数据以 JSON 形式发布到由 upload-topic 参数指定的主题上。 上报数据的确切格式由 format 参数控制。 有 tags-format 和 values-format 两种格式。
更多详细信息,请参阅 MQTT API
离线数据缓存
离线数据缓存是 MQTT 插件特有的功能,在网络发生中断时可将数据存储在本地, 当网络连接恢复时,MQTT 插件可以将数据同步到服务器。 这项功能在网络连接不稳定的场景中非常有用,可以增强构建在 Neuron 上的应用程序的鲁棒性和可靠性。
离线数据缓存由 cache-mem-size 和 cache-disk-size 参数控制。 cache-mem-size 参数指定内存缓存大小(单位为兆字节),最大允许缓存大小为 1GB 。 cache-disk-size 参数指定磁盘缓存大小(单位为兆字节),最大允许缓存大小为 10GB 。 当网络中断发生时,MQTT 插件首先将数据存储在内存缓存中,并且仅当内存缓存已满时才将数据刷新到磁盘缓存中。 当网络恢复连接时,MQTT 插件将以 FIFO(先进先出)的顺序将缓存的数据发布到服务器上。
您可以通过将 cache-mem-size 和 cache-disk-size 都设置为零来禁用离线数据缓存。
数据安全
SSL/TLS(安全套接字层/传输层安全)是一种安全协议,用于加密网络设备之间的通信通道。 它能够在不安全的网络(例如互联网)上使通信变得安全。 MQTT over SSL/TLS 是一种通过 SSL/TLS 加密传输 MQTT 消息的安全方法,用于在客户端和 MQTT 服务器之间传输数据。 这可以确保客户端和服务器之间传递的所有数据都是加密且安全的。
Neuron 的 MQTT 插件支持 MQTT over SSL。要启用 SSL 加密,请在配置节点时打开 ssl 参数, 并提供证书授权机构的证书作为 ca 参数。 要连接到的服务器的证书应由提供的证书授权机构颁发。 如果使用双向身份验证,还应通过 cert,key,和 keypass 参数分别提供客户端证书,密钥文件,和密钥文件密码。
示例
请参见快速上手示例 连接 MQTT