MQTT协议接入
MQTT(英语:Message Queuing Telemetry Transport)是ISO 标准(ISO/IEC PRF 20922)下基于发布 (Publish)/订阅 (Subscribe)范式的消息协议,它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,广泛被应用于物联网领域
协议规范
安全等级
TCP直连模式(数据不加密,不安全)
Topic规范
连接参数
危险
变量说明
mqttClientId: clientId+"|securemode=3,signmethod=hmacsha1,timestamp=132323232|"
mqttUsername: deviceId+"&"+productId
mqttPassword: sign_hmac(deviceSecret,content)
变量名 | 说明 |
---|---|
mqttClientId | 格式中|| 内为扩展参数 |
clientId | 表示客户端ID,可自定义,长度不可超过64个字符。建议使用设备的MAC地址或SN码,方便您识别区分不同的客户端 |
securemode | 表示目前安全模式,可选值有2(TLS直连模式)和3(TCP直连模式) |
signmethod | 表示签名算法类型。支持hmacmd5,hmacsha1和hmacsha256,默认为hmacmd5 |
timestamp | 表示当前时间毫秒值,可以不传递 |
exclusive | 可选用的扩展参数,表示当前设备以独占模式连接(不允许被使用相同设备ID的客户端顶替),不标识时默认为false ,开启时扩展参数的示例:securemode=3,signmethod=hmacsha1,timestamp=132323232,exclusive=true |
mqttUsername | MQTT连接用户名,格式为deviceId&productId |
mqttPassword | sign签名需把提交给服务器的参数按字典排序后,根据signmethod加签 |
content | 提交给服务器的参数(productId、deviceId、timestamp和clientId),按照参数名称首字母字典排序, 然后将参数值依次拼接 |
变量说明
clientId = 12345,deviceId = device, productId = pk, timestamp = 789,signmethod=hmacsha1,deviceSecret=secret
,那么使用TCP方式提交给MQTT的参数如下:mqttclientId=12345|securemode=3,signmethod=hmacsha1,timestamp=789|
mqttUsername=device&pk
mqttPassword=hmacsha1("secret","clientId12345deviceIddeviceproductIdpktimestamp789").toHexString();
dc8f8498a1a115b58f6a3afd526bc62a1665****
修改于 2025-02-08 03:16:28