子裝置身份註冊後,需由網關向物聯網平台上報網關與子裝置的拓撲關係,然後進行子裝置上線。
子裝置上線過程中,物聯網平台會校正子裝置的身份和與網關的拓撲關係。所有校正通過,才會建立並綁定子裝置邏輯通道至網關物理通道上。子裝置與物聯網平台的資料上下行通訊與直連裝置的通訊協定一致,協議上不需要露出網關資訊。
刪除拓撲關係後,子裝置不能再通過網關上線。系統將提示拓撲關係不存在,認證不通過等錯誤。
添加裝置拓撲關係
網關類型的裝置,可以通過該Topic上行請求添加它和子裝置之間的拓撲關係,返回成功添加拓撲關係的子裝置。
資料上行。
- 請求Topic:
/sys/${productKey}/${deviceName}/thing/topo/add
- 響應Topic:
/sys/${productKey}/${deviceName}/thing/topo/add_reply
Alink請求資料格式:
{
"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響應資料格式:
{
"id": "123",
"code": 200,
"data": [
{
"deviceName": "deviceName1234",
"productKey": "1234556554"
}
]
}
請求參數說明:
參數 | 類型 | 說明 |
id | String | 訊息ID號。需定義為String類型的數字,取值範圍0~4294967295,且每個訊息ID在當前裝置中具有唯一性。 |
version | String | 協議版本號碼,目前協議版本號碼唯一取值為1.0。 |
sys | Object | 擴充功能的參數,其下包含各功能欄位。 說明 使用裝置端SDK開發時,如果未設定擴充功能,則無此參數,相關功能保持預設配置。 |
ack | Integer | |
params | List | 請求入參。 |
deviceName | String | 子裝置的名稱。 |
productKey | String | 子裝置所屬產品的ProductKey。 |
sign | String | 簽名。 加簽演算法:
簽名計算樣本:
|
signmethod | String | 簽名方法,支援hmacSha1、hmacSha256、hmacMd5、Sha256。 |
timestamp | String | 時間戳記(單位:毫秒)。 |
clientId | String | 裝置本地標記,非必填。可以設定為具體的productKey&deviceName。 |
method | String | 要求方法,取值thing.topo.add 。 |
響應參數說明:
參數 | 類型 | 說明 |
id | String | 訊息ID,String類型的數字,取值範圍0~4294967295,且每個訊息ID在當前裝置中具有唯一性。 |
code | Integer | 返回結果,200代表成功。 |
data | Object | 請求成功時返回的子裝置資訊,具體參數請參見下表data。 |
參數 | 類型 | 說明 |
deviceName | String | 子裝置的裝置名稱。 |
productKey | String | 子裝置所屬產品的ProductKey。 |
錯誤資訊:
錯誤碼 | 訊息 | 描述 |
460 | request parameter error | 請求參數錯誤。 |
6402 | topo relation cannot add by self | 裝置不能把自己添加為自己的子裝置。 |
401 | request auth error | 簽名校正授權失敗。 |
刪除裝置的拓撲關係
網關類型的裝置,可以通過該Topic上行請求刪除它和子裝置之間的拓撲關係,返回成功刪除拓撲關係的子裝置。
資料上行。
- 請求Topic:
/sys/${productKey}/${deviceName}/thing/topo/delete
- 響應Topic:
/sys/${productKey}/${deviceName}/thing/topo/delete_reply
Alink請求資料格式:
{
"id": "123",
"version": "1.0",
"sys":{
"ack":0
},
"params": [
{
"deviceName": "deviceName1234",
"productKey": "1234556554"
}
],
"method": "thing.topo.delete"
}
Alink響應資料格式:
{
"id": "123",
"code": 200,
"data": [
{
"deviceName": "deviceName1234",
"productKey": "1234556554"
}
]
}
請求參數說明:
參數 | 類型 | 說明 |
id | String | 訊息ID號。需定義為String類型的數字,取值範圍0~4294967295,且每個訊息ID在當前裝置中具有唯一性。 |
version | String | 協議版本號碼,目前協議版本號碼唯一取值為1.0。 |
sys | Object | 擴充功能的參數,其下包含各功能欄位。 說明 使用裝置端SDK開發時,如果未設定擴充功能,則無此參數,相關功能保持預設配置。 |
ack | Integer | |
params | List | 請求參數。 |
deviceName | String | 子裝置名稱。 |
productKey | String | 子裝置所屬產品的ProductKey |
method | String | 要求方法。取值thing.topo.delete 。 |
響應參數說明:
參數 | 類型 | 說明 |
id | String | 訊息ID,String類型的數字,取值範圍0~4294967295,且每個訊息ID在當前裝置中具有唯一性。 |
code | Integer | 返回結果,200代表成功。 |
data | Object | 請求成功時返回的子裝置資訊,具體參數請參見下表data。 |
參數 | 類型 | 說明 |
deviceName | String | 子裝置的裝置名稱。 |
productKey | String | 子裝置所屬產品的ProductKey。 |
錯誤資訊:
錯誤碼 | 訊息 | 描述 |
460 | request parameter error | 請求參數錯誤。 |
6100 | device not found | 裝置不存在。 |
擷取裝置的拓撲關係
資料上行。
- 請求Topic:
/sys/${productKey}/${deviceName}/thing/topo/get
- 響應Topic:
/sys/${productKey}/${deviceName}/thing/topo/get_reply
網關類型的裝置,可以通過該Topic擷取該裝置和子裝置的拓撲關係。
Alink請求資料格式:
{
"id": "123",
"version": "1.0",
"sys":{
"ack":0
},
"params": {},
"method": "thing.topo.get"
}
Alink響應資料格式:
{
"id": "123",
"code": 200,
"data": [
{
"deviceName": "deviceName1234",
"productKey": "1234556554"
}
]
}
請求參數說明:
參數 | 類型 | 說明 |
id | String | 訊息ID號。需定義為String類型的數字,取值範圍0~4294967295,且每個訊息ID在當前裝置中具有唯一性。 |
version | String | 協議版本號碼,目前協議版本號碼唯一取值為1.0。 |
sys | Object | 擴充功能的參數,其下包含各功能欄位。 說明 使用裝置端SDK開發時,如果未設定擴充功能,則無此參數,相關功能保持預設配置。 |
ack | Integer | |
params | Object | 請求參數,可為空白。 |
method | String | 要求方法,取值thing.topo.get 。 |
響應參數說明:
參數 | 類型 | 說明 |
id | String | 訊息ID,String類型的數字,取值範圍0~4294967295,且每個訊息ID在當前裝置中具有唯一性。 |
code | Integer | 返回結果,200代表成功。 |
data | Object | 請求成功時的返回結果。 |
deviceName | String | 子裝置的名稱。 |
productKey | String | 子裝置所屬產品的ProductKey。 |
錯誤資訊:
錯誤碼 | 訊息 | 描述 |
460 | request parameter error | 請求參數錯誤。 |
發現裝置列表上報
資料上行。
- 請求Topic:
/sys/${productKey}/${deviceName}/thing/list/found
- 響應Topic:
/sys/${productKey}/${deviceName}/thing/list/found_reply
在一些情境下,網關可以發現新接入的子裝置。發現後,需將新接入子裝置的資訊上報雲端,然後通過資料流轉到第三方應用,選擇將哪些子裝置接入該網關。
Alink請求資料格式:
{
"id": "123",
"version": "1.0",
"sys":{
"ack":0
},
"params": [
{
"deviceName": "deviceName1234",
"productKey": "1234556554"
}
],
"method": "thing.list.found"
}
Alink響應資料格式:
{
"id": "123",
"code": 200,
"data":{}
}
請求參數說明:
參數 | 類型 | 說明 |
id | String | 訊息ID號。需定義為String類型的數字,取值範圍0~4294967295,且每個訊息ID在當前裝置中具有唯一性。 |
version | String | 協議版本號碼,目前協議版本號碼唯一取值為1.0。 |
sys | Object | 擴充功能的參數,其下包含各功能欄位。 說明 使用裝置端SDK開發時,如果未設定擴充功能,則無此參數,相關功能保持預設配置。 |
ack | Integer | |
params | Object | 請求參數,可為空白。 |
method | String | 要求方法,取值thing.list.found 。 |
deviceName | String | 子裝置的名稱。 |
productKey | String | 子裝置所屬產品的ProductKey。 |
響應參數說明:
參數 | 類型 | 說明 |
id | String | 訊息ID,String類型的數字,取值範圍0~4294967295,且每個訊息ID在當前裝置中具有唯一性。 |
code | Integer | 返回結果,200代表成功。 |
data | Object | 請求成功時的返回結果。 |
錯誤資訊:
錯誤碼 | 訊息 | 描述 |
460 | request parameter error | 請求參數錯誤。 |
6250 | product not found | 上報的子裝置產品不存在。 |
6280 | devicename not meet specs | 上報的子裝置的名稱不符規範。 |
通知網關添加裝置拓撲關係
資料下行。
- 請求Topic:
/sys/${productKey}/${deviceName}/thing/topo/add/notify
- 響應Topic:
/sys/${productKey}/${deviceName}/thing/topo/add/notify_reply
通知網關裝置對子裝置發起添加拓撲關係,可以配合發現裝置列表上報功能使用。可以通過資料流轉擷取裝置返回的結果,資料流轉Topic為/${productKey}/${deviceName}/thing/downlink/reply/message
。
Alink請求資料格式:
{
"id": "123",
"version": "1.0",
"params": [
{
"deviceName": "deviceName1234",
"productKey": "1234556554"
}
],
"method": "thing.topo.add.notify"
}
Alink響應資料格式:
{
"id": "123",
"code": 200,
"data": {}
}
請求參數說明:
參數 | 類型 | 說明 |
id | String | 資料下行訊息ID號,由物聯網平台產生,取值範圍0~4294967295,且每個訊息ID在當前裝置中具有唯一性。 |
version | String | 協議版本號碼,目前協議版本號碼唯一取值為1.0。 |
params | Object | 請求參數,可為空白。 |
method | String | 要求方法,取值thing.topo.add.notify 。 |
deviceName | String | 子裝置的名稱。 |
productKey | String | 子裝置所屬產品的ProductKey。 |
響應參數說明:
參數 | 類型 | 說明 |
id | String | 訊息ID,String類型的數字,取值範圍0~4294967295,且每個訊息ID在當前裝置中具有唯一性。 |
code | Integer | 返回結果,200代表成功。 |
data | Object | 請求成功時的返回結果。 |
通知網關拓撲關係變化
將拓撲關係變化通知網關。
網關訂閱Topic:/sys/${productKey}/${deviceName}/thing/topo/change
操作 | 行為 | 通知方式 |
網關下添加子裝置 | 添加網關與子裝置的拓撲關係。 | 通知網關。 |
刪除子裝置 | 刪除子裝置與對應網關的拓撲關係。 | |
禁用子裝置 | 禁用子裝置,並禁用當前子裝置與對應網關的拓撲關係。 | |
啟用子裝置 | 解除子裝置禁用,恢複當前子裝置和對應網關的拓撲關係。 |
下行訊息Alink資料格式:
{
"id":"123",
"version":"1.0",
"params":{
"status":0, //0-建立 1-刪除 2-恢複禁用 8-禁用
"subList":[{
"productKey":"a1hRrzD****",
"deviceName":"abcd"
}]
},
"method":"thing.topo.change"
}
參數說明:
參數 | 類型 | 說明 |
id | String | 資料下行訊息ID號,由物聯網平台產生,取值範圍0~4294967295,且每個訊息ID在當前裝置中具有唯一性。 |
version | String | 協議版本號碼,目前協議版本號碼唯一取值為1.0。 |
method | String | 要求方法,取值thing.topo.change 。 |
params | Object | 請求參數,包含參數status(拓撲關係狀態)和sublist(子裝置列表)。 |
status | Integer | 拓撲關係狀態。
|
deviceName | String | 子裝置的名稱。 |
productKey | String | 子裝置所屬產品的Key。 |
Alink響應資料格式:
{
"id":"123",
"code":200,
"message":"success",
"data":{}
}