1.基于MQTT自主接入IoT
阿里云IoT物联网平台支持MQTT协议自主接入。
1.1 连接域名
根据产品是在区域regionId不同而不同。
${productKey}.iot-as-mqtt.${regionId}.aliyuncs.com:1883
1.2 MQTT的Connect报文
设备端与阿里云IoT平台建立MQTT通道的CONNECT报文有三个关键参数:__客户端标识符 (ClientId) ,用户名(User Name),密码(Password)。__这三个参数由__设备三元组(productKey,deviceName,deviceSecret)__按照阿里云IoT签名规则生成。
参数
|
生成方式
|
描述
|
mqttClientId
|
clientId+"|securemode=3,signmethod=hmacsha1,timestamp=132323232|"
|
clientId:表示客户端ID,64字符内。 timestamp:表示当前时间毫秒值。 mqttClientId:格式中||内为扩展参数。 signmethod:表示签名算法类型。 securemode:表示目前安全模式,可选值有2 (TLS加密)和3(普通)
|
mqttUsername
|
deviceName+"&"+productKey
|
|
mqttPassword
|
sign_hmac(deviceSecret,content)
|
sign_hmac为mqttClientId中的signmethod
content为 "clientId${clientId}deviceName${deviceName}productKey${productKey}timestamp${timestamp}"
|
2. 三元组接入示例
2.1 设备三元组信息
设备三元组
productKey = a14Xib5kdYd
deviceName = light1983432
deviceSecret = oLyaKqVxtRvjH284LdhqVgVUx1UPy6zq
建立MQTT连接时参数
clientId = SN1928339
timestamp = 1539421321846
signmethod = hmacsha1
2.2 参数生成结果
mqttClientId = SN1928339|securemode=3,signmethod=hmacsha1,timestamp=1539421321846|
mqttUsername = light1983432&a14Xib5kdYd
mqttPassword = b2488041f64f425016b467ee1c94959ebd592ad1
生成password的content
content=clientIdSN1928339deviceNamelight1983432productKeya14Xib5kdYdtimestamp1539421321846
2.3 建立连接
mqttClientId__作为MQTT客户端标识符 (ClientId) __
mqttUsername__作为MQTT用户名(User Name)__
mqttPassword__作为MQTT密码(Password)__
在线算法
https://1024tools.com/hmac
官方文档参考
https://help.aliyun.com/document_detail/63656.html