子設(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è)備。
數(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ù) | 類型 | 說明 |
---|---|---|
id | String | 消息ID號。需定義為String類型的數(shù)字,取值范圍0~4294967295,且每個消息ID在當(dāng)前設(shè)備中具有唯一性。 |
version | String | 協(xié)議版本號,目前協(xié)議版本號唯一取值為1.0。 |
sys | Object | 擴展功能的參數(shù),其下包含各功能字段。 說明 使用設(shè)備端SDK開發(fā)時,如果未設(shè)置擴展功能,則無此參數(shù),相關(guān)功能保持默認配置。 |
ack | Integer | sys下的擴展功能字段,表示是否返回響應(yīng)數(shù)據(jù)。
重要 該功能配置說明,請參見物模型使用示例。 如果未配置該功能,則無此參數(shù),云端默認返回響應(yīng)數(shù)據(jù)。 |
params | List | 請求入?yún)ⅰ?/td> |
deviceName | String | 子設(shè)備的名稱。 |
productKey | String | 子設(shè)備所屬產(chǎn)品的ProductKey。 |
sign | String | 簽名。 加簽算法:
簽名計算示例:
|
signmethod | String | 簽名方法,支持hmacSha1、hmacSha256、hmacMd5、Sha256。 |
timestamp | String | 時間戳(單位:毫秒)。 |
clientId | String | 設(shè)備本地標(biāo)記,非必填??梢栽O(shè)置為具體的productKey&deviceName。 |
method | String | 請求方法,取值thing.topo.add 。 |
響應(yīng)參數(shù)說明:
參數(shù) | 類型 | 說明 |
---|---|---|
id | String | 消息ID,String類型的數(shù)字,取值范圍0~4294967295,且每個消息ID在當(dāng)前設(shè)備中具有唯一性。 |
code | Integer | 返回結(jié)果,200代表成功。 |
data | Object | 請求成功時返回的子設(shè)備信息,具體參數(shù)請參見下表data。 |
參數(shù) | 類型 | 說明 |
---|---|---|
deviceName | String | 子設(shè)備的設(shè)備名稱。 |
productKey | String | 子設(shè)備所屬產(chǎn)品的ProductKey。 |
錯誤信息:
錯誤碼 | 消息 | 描述 |
---|---|---|
460 | request parameter error | 請求參數(shù)錯誤。 |
6402 | topo relation cannot add by self | 設(shè)備不能把自己添加為自己的子設(shè)備。 |
401 | request auth error | 簽名校驗授權(quán)失敗。 |
刪除設(shè)備的拓撲關(guān)系
網(wǎng)關(guān)類型的設(shè)備,可以通過該Topic上行請求刪除它和子設(shè)備之間的拓撲關(guān)系,返回成功刪除拓撲關(guān)系的子設(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ù) | 類型 | 說明 |
---|---|---|
id | String | 消息ID號。需定義為String類型的數(shù)字,取值范圍0~4294967295,且每個消息ID在當(dāng)前設(shè)備中具有唯一性。 |
version | String | 協(xié)議版本號,目前協(xié)議版本號唯一取值為1.0。 |
sys | Object | 擴展功能的參數(shù),其下包含各功能字段。 說明 使用設(shè)備端SDK開發(fā)時,如果未設(shè)置擴展功能,則無此參數(shù),相關(guān)功能保持默認配置。 |
ack | Integer | sys下的擴展功能字段,表示是否返回響應(yīng)數(shù)據(jù)。
重要 該功能配置說明,請參見物模型使用示例。 如果未配置該功能,則無此參數(shù),云端默認返回響應(yīng)數(shù)據(jù)。 |
params | List | 請求參數(shù)。 |
deviceName | String | 子設(shè)備名稱。 |
productKey | String | 子設(shè)備所屬產(chǎn)品的ProductKey |
method | String | 請求方法。取值thing.topo.delete 。 |
響應(yīng)參數(shù)說明:
參數(shù) | 類型 | 說明 |
---|---|---|
id | String | 消息ID,String類型的數(shù)字,取值范圍0~4294967295,且每個消息ID在當(dāng)前設(shè)備中具有唯一性。 |
code | Integer | 返回結(jié)果,200代表成功。 |
data | Object | 請求成功時返回的子設(shè)備信息,具體參數(shù)請參見下表data。 |
參數(shù) | 類型 | 說明 |
---|---|---|
deviceName | String | 子設(shè)備的設(shè)備名稱。 |
productKey | String | 子設(shè)備所屬產(chǎn)品的ProductKey。 |
錯誤信息:
錯誤碼 | 消息 | 描述 |
---|---|---|
460 | request parameter error | 請求參數(shù)錯誤。 |
6100 | device 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ù) | 類型 | 說明 |
---|---|---|
id | String | 消息ID號。需定義為String類型的數(shù)字,取值范圍0~4294967295,且每個消息ID在當(dāng)前設(shè)備中具有唯一性。 |
version | String | 協(xié)議版本號,目前協(xié)議版本號唯一取值為1.0。 |
sys | Object | 擴展功能的參數(shù),其下包含各功能字段。 說明 使用設(shè)備端SDK開發(fā)時,如果未設(shè)置擴展功能,則無此參數(shù),相關(guān)功能保持默認配置。 |
ack | Integer | sys下的擴展功能字段,表示是否返回響應(yīng)數(shù)據(jù)。
重要 該功能配置說明,請參見物模型使用示例。 如果未配置該功能,則無此參數(shù),云端默認返回響應(yīng)數(shù)據(jù)。 |
params | Object | 請求參數(shù),可為空。 |
method | String | 請求方法,取值thing.topo.get 。 |
響應(yīng)參數(shù)說明:
參數(shù) | 類型 | 說明 |
---|---|---|
id | String | 消息ID,String類型的數(shù)字,取值范圍0~4294967295,且每個消息ID在當(dāng)前設(shè)備中具有唯一性。 |
code | Integer | 返回結(jié)果,200代表成功。 |
data | Object | 請求成功時的返回結(jié)果。 |
deviceName | String | 子設(shè)備的名稱。 |
productKey | String | 子設(shè)備所屬產(chǎn)品的ProductKey。 |
錯誤信息:
錯誤碼 | 消息 | 描述 |
---|---|---|
460 | request 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ù) | 類型 | 說明 |
---|---|---|
id | String | 消息ID號。需定義為String類型的數(shù)字,取值范圍0~4294967295,且每個消息ID在當(dāng)前設(shè)備中具有唯一性。 |
version | String | 協(xié)議版本號,目前協(xié)議版本號唯一取值為1.0。 |
sys | Object | 擴展功能的參數(shù),其下包含各功能字段。 說明 使用設(shè)備端SDK開發(fā)時,如果未設(shè)置擴展功能,則無此參數(shù),相關(guān)功能保持默認配置。 |
ack | Integer | sys下的擴展功能字段,表示是否返回響應(yīng)數(shù)據(jù)。
重要 該功能配置說明,請參見物模型使用示例。 如果未配置該功能,則無此參數(shù),云端默認返回響應(yīng)數(shù)據(jù)。 |
params | Object | 請求參數(shù),可為空。 |
method | String | 請求方法,取值thing.list.found 。 |
deviceName | String | 子設(shè)備的名稱。 |
productKey | String | 子設(shè)備所屬產(chǎn)品的ProductKey。 |
響應(yīng)參數(shù)說明:
參數(shù) | 類型 | 說明 |
---|---|---|
id | String | 消息ID,String類型的數(shù)字,取值范圍0~4294967295,且每個消息ID在當(dāng)前設(shè)備中具有唯一性。 |
code | Integer | 返回結(jié)果,200代表成功。 |
data | Object | 請求成功時的返回結(jié)果。 |
錯誤信息:
錯誤碼 | 消息 | 描述 |
---|---|---|
460 | request parameter error | 請求參數(shù)錯誤。 |
6250 | product not found | 上報的子設(shè)備產(chǎn)品不存在。 |
6280 | devicename 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ù) | 類型 | 說明 |
---|---|---|
id | String | 數(shù)據(jù)下行消息ID號,由物聯(lián)網(wǎng)平臺生成,取值范圍0~4294967295,且每個消息ID在當(dāng)前設(shè)備中具有唯一性。 |
version | String | 協(xié)議版本號,目前協(xié)議版本號唯一取值為1.0。 |
params | Object | 請求參數(shù),可為空。 |
method | String | 請求方法,取值thing.topo.add.notify 。 |
deviceName | String | 子設(shè)備的名稱。 |
productKey | String | 子設(shè)備所屬產(chǎn)品的ProductKey。 |
響應(yīng)參數(shù)說明:
參數(shù) | 類型 | 說明 |
---|---|---|
id | String | 消息ID,String類型的數(shù)字,取值范圍0~4294967295,且每個消息ID在當(dāng)前設(shè)備中具有唯一性。 |
code | Integer | 返回結(jié)果,200代表成功。 |
data | Object | 請求成功時的返回結(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ù) | 類型 | 說明 |
---|---|---|
id | String | 數(shù)據(jù)下行消息ID號,由物聯(lián)網(wǎng)平臺生成,取值范圍0~4294967295,且每個消息ID在當(dāng)前設(shè)備中具有唯一性。 |
version | String | 協(xié)議版本號,目前協(xié)議版本號唯一取值為1.0。 |
method | String | 請求方法,取值thing.topo.change 。 |
params | Object | 請求參數(shù),包含參數(shù)status(拓撲關(guān)系狀態(tài))和sublist(子設(shè)備列表)。 |
status | Integer | 拓撲關(guān)系狀態(tài)。
|
deviceName | String | 子設(shè)備的名稱。 |
productKey | String | 子設(shè)備所屬產(chǎn)品的Key。 |
Alink響應(yīng)數(shù)據(jù)格式:
{
"id":"123",
"code":200,
"message":"success",
"data":{}
}