子設(shè)備身份注冊后,需由網(wǎng)關(guān)向物聯(lián)網(wǎng)平臺上報網(wǎng)關(guān)與子設(shè)備的拓撲關(guān)系,然后進行子設(shè)備上線。

子設(shè)備上線過程中,物聯(lián)網(wǎng)平臺會校驗子設(shè)備的身份和與網(wǎng)關(guān)的拓撲關(guān)系。所有校驗通過,才會建立并綁定子設(shè)備邏輯通道至網(wǎng)關(guān)物理通道上。子設(shè)備與物聯(lián)網(wǎng)平臺的數(shù)據(jù)上下行通信與直連設(shè)備的通信協(xié)議一致,協(xié)議上不需要露出網(wǎng)關(guān)信息。

刪除拓撲關(guān)系后,子設(shè)備不能再通過網(wǎng)關(guān)上線。系統(tǒng)將提示拓撲關(guān)系不存在,認證不通過等錯誤。

添加設(shè)備拓撲關(guān)系

網(wǎng)關(guān)類型的設(shè)備,可以通過該Topic上行請求添加它和子設(shè)備之間的拓撲關(guān)系,返回成功添加拓撲關(guān)系的子設(shè)備。

重要 單次最多可請求添加30個子設(shè)備。

數(shù)據(jù)上行。

  • 請求Topic:/sys/${productKey}/${deviceName}/thing/topo/add
  • 響應(yīng)Topic:/sys/${productKey}/${deviceName}/thing/topo/add_reply

Alink請求數(shù)據(jù)格式:

{
  "id": "123",
  "version": "1.0",
  "sys":{
      "ack":0
  },
  "params": [
    {
      "deviceName": "deviceName1234",
      "productKey": "1234556554",
      "sign": "xxxxxx",
      "signmethod": "hmacSha1",
      "timestamp": "1524448722000",
      "clientId": "xxxxxx"
    }
  ],
  "method": "thing.topo.add"
}

Alink響應(yīng)數(shù)據(jù)格式:

{
  "id": "123",
  "code": 200,
  "data": [
    {
      "deviceName": "deviceName1234",
      "productKey": "1234556554"
    }
  ]
}

請求參數(shù)說明:

參數(shù)類型說明
idString消息ID號。需定義為String類型的數(shù)字,取值范圍0~4294967295,且每個消息ID在當(dāng)前設(shè)備中具有唯一性。
versionString協(xié)議版本號,目前協(xié)議版本號唯一取值為1.0。
sysObject擴展功能的參數(shù),其下包含各功能字段。
說明 使用設(shè)備端SDK開發(fā)時,如果未設(shè)置擴展功能,則無此參數(shù),相關(guān)功能保持默認配置。
ackIntegersys下的擴展功能字段,表示是否返回響應(yīng)數(shù)據(jù)。
  • 1:云端返回響應(yīng)數(shù)據(jù)。
  • 0:云端不返回響應(yīng)數(shù)據(jù)。
重要 該功能配置說明,請參見物模型使用示例。

如果未配置該功能,則無此參數(shù),云端默認返回響應(yīng)數(shù)據(jù)。

paramsList請求入?yún)ⅰ?/td>
deviceNameString子設(shè)備的名稱。
productKeyString子設(shè)備所屬產(chǎn)品的ProductKey。
signString

簽名。

加簽算法:

  1. 將所有提交給服務(wù)器的參數(shù)(signsignMethod除外)按照字母順序排序,然后將參數(shù)和值依次拼接(無拼接符號)。
  2. 對加簽內(nèi)容,需通過signMethod指定的加簽算法,使用設(shè)備的DeviceSecret值,進行簽名計算。
簽名計算示例:
sign= hmac_md5(deviceSecret, clientId123deviceNametestproductKey123timestamp1524448722000)
signmethodString簽名方法,支持hmacSha1、hmacSha256、hmacMd5、Sha256。
timestampString時間戳(單位:毫秒)。
clientIdString設(shè)備本地標(biāo)記,非必填??梢栽O(shè)置為具體的productKey&deviceName。
methodString請求方法,取值thing.topo.add。

響應(yīng)參數(shù)說明:

參數(shù)類型說明
idString消息ID,String類型的數(shù)字,取值范圍0~4294967295,且每個消息ID在當(dāng)前設(shè)備中具有唯一性。
codeInteger返回結(jié)果,200代表成功。
dataObject請求成功時返回的子設(shè)備信息,具體參數(shù)請參見下表data。
表 1. data
參數(shù)類型說明
deviceNameString子設(shè)備的設(shè)備名稱。
productKeyString子設(shè)備所屬產(chǎn)品的ProductKey。

錯誤信息:

錯誤碼消息描述
460request parameter error請求參數(shù)錯誤。
6402topo relation cannot add by self設(shè)備不能把自己添加為自己的子設(shè)備。
401request auth error簽名校驗授權(quán)失敗。

刪除設(shè)備的拓撲關(guān)系

網(wǎng)關(guān)類型的設(shè)備,可以通過該Topic上行請求刪除它和子設(shè)備之間的拓撲關(guān)系,返回成功刪除拓撲關(guān)系的子設(shè)備。

重要 單次最多可請求刪除30個子設(shè)備。

數(shù)據(jù)上行。

  • 請求Topic:/sys/${productKey}/${deviceName}/thing/topo/delete
  • 響應(yīng)Topic:/sys/${productKey}/${deviceName}/thing/topo/delete_reply

Alink請求數(shù)據(jù)格式:

{
  "id": "123",
  "version": "1.0",
  "sys":{
      "ack":0
  },
  "params": [
    {
      "deviceName": "deviceName1234",
      "productKey": "1234556554"
    }
  ],
  "method": "thing.topo.delete"
}

Alink響應(yīng)數(shù)據(jù)格式:

{
  "id": "123",
  "code": 200,
  "data": [
    {
      "deviceName": "deviceName1234",
      "productKey": "1234556554"
    }
  ]
}

請求參數(shù)說明:

參數(shù)類型說明
idString消息ID號。需定義為String類型的數(shù)字,取值范圍0~4294967295,且每個消息ID在當(dāng)前設(shè)備中具有唯一性。
versionString協(xié)議版本號,目前協(xié)議版本號唯一取值為1.0。
sysObject擴展功能的參數(shù),其下包含各功能字段。
說明 使用設(shè)備端SDK開發(fā)時,如果未設(shè)置擴展功能,則無此參數(shù),相關(guān)功能保持默認配置。
ackIntegersys下的擴展功能字段,表示是否返回響應(yīng)數(shù)據(jù)。
  • 1:云端返回響應(yīng)數(shù)據(jù)。
  • 0:云端不返回響應(yīng)數(shù)據(jù)。
重要 該功能配置說明,請參見物模型使用示例

如果未配置該功能,則無此參數(shù),云端默認返回響應(yīng)數(shù)據(jù)。

paramsList請求參數(shù)。
deviceNameString子設(shè)備名稱。
productKeyString子設(shè)備所屬產(chǎn)品的ProductKey
methodString請求方法。取值thing.topo.delete。

響應(yīng)參數(shù)說明:

參數(shù)類型說明
idString消息ID,String類型的數(shù)字,取值范圍0~4294967295,且每個消息ID在當(dāng)前設(shè)備中具有唯一性。
codeInteger返回結(jié)果,200代表成功。
dataObject請求成功時返回的子設(shè)備信息,具體參數(shù)請參見下表data。
表 2. data
參數(shù)類型說明
deviceNameString子設(shè)備的設(shè)備名稱。
productKeyString子設(shè)備所屬產(chǎn)品的ProductKey。

錯誤信息:

錯誤碼消息描述
460request parameter error請求參數(shù)錯誤。
6100device not found設(shè)備不存在。

獲取設(shè)備的拓撲關(guān)系

數(shù)據(jù)上行。

  • 請求Topic:/sys/${productKey}/${deviceName}/thing/topo/get
  • 響應(yīng)Topic:/sys/${productKey}/${deviceName}/thing/topo/get_reply

網(wǎng)關(guān)類型的設(shè)備,可以通過該Topic獲取該設(shè)備和子設(shè)備的拓撲關(guān)系。

Alink請求數(shù)據(jù)格式:

{
  "id": "123",
  "version": "1.0",
  "sys":{
      "ack":0
  },
  "params": {},
  "method": "thing.topo.get"
}

Alink響應(yīng)數(shù)據(jù)格式:

{
  "id": "123",
  "code": 200,
  "data": [
    {
      "deviceName": "deviceName1234",
      "productKey": "1234556554"
    }
  ]
}

請求參數(shù)說明:

參數(shù)類型說明
idString消息ID號。需定義為String類型的數(shù)字,取值范圍0~4294967295,且每個消息ID在當(dāng)前設(shè)備中具有唯一性。
versionString協(xié)議版本號,目前協(xié)議版本號唯一取值為1.0。
sysObject擴展功能的參數(shù),其下包含各功能字段。
說明 使用設(shè)備端SDK開發(fā)時,如果未設(shè)置擴展功能,則無此參數(shù),相關(guān)功能保持默認配置。
ackIntegersys下的擴展功能字段,表示是否返回響應(yīng)數(shù)據(jù)。
  • 1:云端返回響應(yīng)數(shù)據(jù)。
  • 0:云端不返回響應(yīng)數(shù)據(jù)。
重要 該功能配置說明,請參見物模型使用示例

如果未配置該功能,則無此參數(shù),云端默認返回響應(yīng)數(shù)據(jù)。

paramsObject請求參數(shù),可為空。
methodString請求方法,取值thing.topo.get。

響應(yīng)參數(shù)說明:

參數(shù)類型說明
idString消息ID,String類型的數(shù)字,取值范圍0~4294967295,且每個消息ID在當(dāng)前設(shè)備中具有唯一性。
codeInteger返回結(jié)果,200代表成功。
dataObject請求成功時的返回結(jié)果。
deviceNameString子設(shè)備的名稱。
productKeyString子設(shè)備所屬產(chǎn)品的ProductKey。

錯誤信息:

錯誤碼消息描述
460request parameter error請求參數(shù)錯誤。

發(fā)現(xiàn)設(shè)備列表上報

數(shù)據(jù)上行。

  • 請求Topic:/sys/${productKey}/${deviceName}/thing/list/found
  • 響應(yīng)Topic:/sys/${productKey}/${deviceName}/thing/list/found_reply

在一些場景下,網(wǎng)關(guān)可以發(fā)現(xiàn)新接入的子設(shè)備。發(fā)現(xiàn)后,需將新接入子設(shè)備的信息上報云端,然后通過數(shù)據(jù)流轉(zhuǎn)到第三方應(yīng)用,選擇將哪些子設(shè)備接入該網(wǎng)關(guān)。

Alink請求數(shù)據(jù)格式:

{
  "id": "123",
  "version": "1.0",
  "sys":{
      "ack":0
  },
  "params": [
    {
      "deviceName": "deviceName1234",
      "productKey": "1234556554"
    }
  ],
  "method": "thing.list.found"
}

Alink響應(yīng)數(shù)據(jù)格式:

{
  "id": "123",
  "code": 200,
  "data":{}
}

請求參數(shù)說明:

參數(shù)類型說明
idString消息ID號。需定義為String類型的數(shù)字,取值范圍0~4294967295,且每個消息ID在當(dāng)前設(shè)備中具有唯一性。
versionString協(xié)議版本號,目前協(xié)議版本號唯一取值為1.0。
sysObject擴展功能的參數(shù),其下包含各功能字段。
說明 使用設(shè)備端SDK開發(fā)時,如果未設(shè)置擴展功能,則無此參數(shù),相關(guān)功能保持默認配置。
ackIntegersys下的擴展功能字段,表示是否返回響應(yīng)數(shù)據(jù)。
  • 1:云端返回響應(yīng)數(shù)據(jù)。
  • 0:云端不返回響應(yīng)數(shù)據(jù)。
重要 該功能配置說明,請參見物模型使用示例

如果未配置該功能,則無此參數(shù),云端默認返回響應(yīng)數(shù)據(jù)。

paramsObject請求參數(shù),可為空。
methodString請求方法,取值thing.list.found
deviceNameString子設(shè)備的名稱。
productKeyString子設(shè)備所屬產(chǎn)品的ProductKey。

響應(yīng)參數(shù)說明:

參數(shù)類型說明
idString消息ID,String類型的數(shù)字,取值范圍0~4294967295,且每個消息ID在當(dāng)前設(shè)備中具有唯一性。
codeInteger返回結(jié)果,200代表成功。
dataObject請求成功時的返回結(jié)果。

錯誤信息:

錯誤碼消息描述
460request parameter error請求參數(shù)錯誤。
6250product not found上報的子設(shè)備產(chǎn)品不存在。
6280devicename not meet specs上報的子設(shè)備的名稱不符規(guī)范。

通知網(wǎng)關(guān)添加設(shè)備拓撲關(guān)系

數(shù)據(jù)下行。

  • 請求Topic:/sys/${productKey}/${deviceName}/thing/topo/add/notify
  • 響應(yīng)Topic:/sys/${productKey}/${deviceName}/thing/topo/add/notify_reply

通知網(wǎng)關(guān)設(shè)備對子設(shè)備發(fā)起添加拓撲關(guān)系,可以配合發(fā)現(xiàn)設(shè)備列表上報功能使用??梢酝ㄟ^數(shù)據(jù)流轉(zhuǎn)獲取設(shè)備返回的結(jié)果,數(shù)據(jù)流轉(zhuǎn)Topic為/${productKey}/${deviceName}/thing/downlink/reply/message。

Alink請求數(shù)據(jù)格式:

{
  "id": "123",
  "version": "1.0",
  "params": [
    {
      "deviceName": "deviceName1234",
      "productKey": "1234556554"
    }
  ],
  "method": "thing.topo.add.notify"
}

Alink響應(yīng)數(shù)據(jù)格式:

{
  "id": "123",
  "code": 200,
  "data": {}
}

請求參數(shù)說明:

參數(shù)類型說明
idString

數(shù)據(jù)下行消息ID號,由物聯(lián)網(wǎng)平臺生成,取值范圍0~4294967295,且每個消息ID在當(dāng)前設(shè)備中具有唯一性。

versionString協(xié)議版本號,目前協(xié)議版本號唯一取值為1.0。
paramsObject請求參數(shù),可為空。
methodString請求方法,取值thing.topo.add.notify。
deviceNameString子設(shè)備的名稱。
productKeyString子設(shè)備所屬產(chǎn)品的ProductKey。

響應(yīng)參數(shù)說明:

參數(shù)類型說明
idString消息ID,String類型的數(shù)字,取值范圍0~4294967295,且每個消息ID在當(dāng)前設(shè)備中具有唯一性。
codeInteger返回結(jié)果,200代表成功。
dataObject請求成功時的返回結(jié)果。

通知網(wǎng)關(guān)拓撲關(guān)系變化

將拓撲關(guān)系變化通知網(wǎng)關(guān)。

網(wǎng)關(guān)訂閱Topic:/sys/${productKey}/${deviceName}/thing/topo/change

操作行為通知方式
網(wǎng)關(guān)下添加子設(shè)備添加網(wǎng)關(guān)與子設(shè)備的拓撲關(guān)系。通知網(wǎng)關(guān)。
刪除子設(shè)備刪除子設(shè)備與對應(yīng)網(wǎng)關(guān)的拓撲關(guān)系。
禁用子設(shè)備禁用子設(shè)備,并禁用當(dāng)前子設(shè)備與對應(yīng)網(wǎng)關(guān)的拓撲關(guān)系。
啟用子設(shè)備解除子設(shè)備禁用,恢復(fù)當(dāng)前子設(shè)備和對應(yīng)網(wǎng)關(guān)的拓撲關(guān)系。

下行消息Alink數(shù)據(jù)格式:

{
    "id":"123",
    "version":"1.0",
    "params":{
        "status":0,  //0-創(chuàng)建  1-刪除 2-恢復(fù)禁用  8-禁用
        "subList":[{
            "productKey":"a1hRrzD****",
            "deviceName":"abcd"
        }]
    }, 
  "method":"thing.topo.change"  
}

參數(shù)說明:

參數(shù)類型說明
idString

數(shù)據(jù)下行消息ID號,由物聯(lián)網(wǎng)平臺生成,取值范圍0~4294967295,且每個消息ID在當(dāng)前設(shè)備中具有唯一性。

versionString協(xié)議版本號,目前協(xié)議版本號唯一取值為1.0。
methodString請求方法,取值thing.topo.change
paramsObject請求參數(shù),包含參數(shù)status(拓撲關(guān)系狀態(tài))和sublist(子設(shè)備列表)。
statusInteger拓撲關(guān)系狀態(tài)。
  • 0:創(chuàng)建
  • 1:刪除
  • 2:解除禁用(啟用)
  • 8:禁用
deviceNameString子設(shè)備的名稱。
productKeyString子設(shè)備所屬產(chǎn)品的Key。

Alink響應(yīng)數(shù)據(jù)格式:

{
    "id":"123",
    "code":200,
    "message":"success",
    "data":{}
}