注意, 在進行MQTT CONNECT協議設置的時候
MQTT 連接域名:
使用域名:${productKey}.iot-as-mqtt.cn-shanghai.aliyuncs.com:1883${productKey}請替換為您的產品key,mqtt的Connect報文參數如下:mqtt的Connect報文參數如下:mqttClientId: clientId+"|securemode=3,signmethod=hmacsha1,timestamp=132323232|"mqttUsername: deviceName+"&"+productKeymqttPassword: sign_hmac(deviceSecret,content)sign簽名需要把以下參數按字典序排序后,再根據signmethod加簽。content=提交給服務器的參數(productKey,deviceName,timestamp,clientId), 按照字母順序排序, 然后將參數值依次拼接其中clientId是客戶端自表示id,建議mac或sn,64字符內;timestamp當前時間毫秒值,僅做混淆,可以不傳遞;mqttClientId格式中||內為擴展參數;signmethod代表簽名算法類型,可支持hmacSha1,hmacSha256,hmacMd5;securemode代表目前安全模式,可選值有2 (TLS直連模式)、3(TCP直連模式;實例
如果clientId = 12345,deviceName = device, productKey = pk, timestamp = 789,signmethod=hmacsha1,deviceSecret=secret,那么使用tcp方式提交給mqtt參數分別如下:mqttclientId=12345|securemode=3,signmethod=hmacsha1,timestamp=789|username=device&pkpassword=hmacsha1("secret","clientId12345deviceNamedeviceproductKeypktimestamp789").toHexString(); //最后是二進制轉16制字符串,大小寫不敏感。 這個例子結果為 FAFD82A3D602B37FB0FA8B7892F24A477F851A14注意上面3個參數分別是mqtt Connect登錄報文的mqttClientId,mqttUsername,mqttPasswrod設備端直接通過上發自定義二進制數據, 云端對上傳上來的二進制數據直接進行解析(通過云端轉換腳本, 需自行開發), 并轉換為標準Alink協議數據的格式。而在下行時, 云端同樣會通過經過解析, 把標準的Alink協議數據轉換成二進制數據, 并發送到設備端。
透傳相關的Topic定義如下,傳輸數據為二進制數據。
下行 Topic
設備端訂閱Topic:/sys/{productKey}/{deviceName}/thing/model/down_raw
設備端回復Topic:/sys/{productKey}/{deviceName}/thing/model/down_raw_reply
上行 Topic
設備端發布Topic:/sys/{productKey}/{deviceName}/thing/model/up_raw
服務端回復Topic(需設備端訂閱):/sys/{productKey}/{deviceName}/thing/model/up_raw_reply
設備直接構造對應Topic以及對應的json格式數據, 云端直接進行解析。
設備屬性上報設備端發布Topic: /sys/{productKey}/{deviceName}/thing/event/property/postpayload:{ "id" : "123", "version":"1.0", "params" : { "Power" : "on", "WF" : "2" }, "method":"thing.event.property.post"}服務端回復Topic(需設備端訂閱): /sys/{productKey}/{deviceName}/thing/event/property/post_replypayload:{ "id":"123", "code":200, "data":{}}異步模式下:
設備端訂閱Topic: /sys/{productKey}/{deviceName}/thing/service/{tsl.service.identifer}payload:{ "id" : "123", "version":"1.0", "params" : { "Power" : "on", "WF" : "2" }, "method":"thing.service.{tsl.service.identifer}"}設備端回復Topic:/sys/{productKey}/{deviceName}/thing/service/{tsl.service.identifer}_replypayload:{ "id":"123", "code":200, "data":{}}同步模式下:
注: messageId請參考【同步調用】中具體描述
| 歡迎光臨 (http://m.raoushi.com/bbs/) | Powered by Discuz! X3.1 |