物聯(lián)網(wǎng)平臺為設(shè)備端開發(fā)提供了Link SDK,并在SDK中封裝了設(shè)備端與物聯(lián)網(wǎng)平臺交互通信的Alink協(xié)議。您可以直接使用設(shè)備端Link SDK開發(fā)設(shè)備。如果嵌入式環(huán)境復(fù)雜,已提供的設(shè)備端Link SDK不能滿足您的需求,您也可以自行封裝Alink協(xié)議數(shù)據(jù),建立設(shè)備與物聯(lián)網(wǎng)平臺的通信。
概述
Alink協(xié)議是針對物聯(lián)網(wǎng)開發(fā)領(lǐng)域設(shè)計(jì)的一種數(shù)據(jù)交換規(guī)范,數(shù)據(jù)格式是JSON,用于設(shè)備端和物聯(lián)網(wǎng)平臺的雙向通信,更便捷地實(shí)現(xiàn)和規(guī)范了設(shè)備端和物聯(lián)網(wǎng)平臺之間的業(yè)務(wù)數(shù)據(jù)交互。
物聯(lián)網(wǎng)平臺為設(shè)備端開發(fā)提供的各語言Link SDK及功能特性說明,請參見功能特性。
物聯(lián)網(wǎng)平臺各功能的Alink協(xié)議說明,如下表所示。
功能 | 數(shù)據(jù)格式說明 |
---|---|
設(shè)備接入 | |
消息通信 | |
設(shè)備管理 | |
監(jiān)控運(yùn)維 |
以下為您介紹Alink協(xié)議下,設(shè)備的上線流程和數(shù)據(jù)上下行原理。
上線流程
設(shè)備在物聯(lián)網(wǎng)平臺的上線流程,可以按照設(shè)備類型,分為直連設(shè)備與子設(shè)備的接入流程。主要包括:設(shè)備注冊、激活上線和數(shù)據(jù)上報(bào)三個(gè)流程。
直連設(shè)備接入有兩種方式:
- 使用一機(jī)一密方式提前燒錄設(shè)備證書(ProductKey、DeviceName和DeviceSecret),注冊設(shè)備,上線,然后上報(bào)數(shù)據(jù)。
- 使用一型一密動(dòng)態(tài)注冊提前燒錄產(chǎn)品證書(ProductKey和ProductSecret),注冊設(shè)備, 上線,然后上報(bào)數(shù)據(jù)。
子設(shè)備接入流程通過網(wǎng)關(guān)發(fā)起,具體接入方式有兩種:
- 使用一機(jī)一密提前燒錄設(shè)備證書(ProductKey、DeviceName和DeviceSecret),子設(shè)備上報(bào)設(shè)備證書給網(wǎng)關(guān),網(wǎng)關(guān)添加拓?fù)潢P(guān)系,復(fù)用網(wǎng)關(guān)的通道上報(bào)數(shù)據(jù)。
- 使用動(dòng)態(tài)注冊方式提前燒錄ProductKey,子設(shè)備上報(bào)ProductKey和DeviceName給網(wǎng)關(guān),物聯(lián)網(wǎng)平臺校驗(yàn)DeviceName成功后,下發(fā)DeviceSecret。子設(shè)備將獲得的設(shè)備證書信息上報(bào)網(wǎng)關(guān),網(wǎng)關(guān)添加拓?fù)潢P(guān)系,通過網(wǎng)關(guān)的通道上報(bào)數(shù)據(jù)。
設(shè)備上報(bào)屬性或事件
- 透傳格式(透傳/自定義)數(shù)據(jù)
序號 說明 1 設(shè)備通過透傳格式數(shù)據(jù)的Topic,上報(bào)透傳數(shù)據(jù)。Topic說明,請參見設(shè)備屬性、事件、服務(wù)。 1.1 物聯(lián)網(wǎng)平臺通過數(shù)據(jù)解析腳本先對設(shè)備上報(bào)的數(shù)據(jù)進(jìn)行解析:調(diào)用腳本中的 rawDataToProtocol
方法,將設(shè)備上報(bào)的數(shù)據(jù)轉(zhuǎn)換為物聯(lián)網(wǎng)平臺標(biāo)準(zhǔn)數(shù)據(jù)格式(Alink JSON格式)。數(shù)據(jù)解析的詳細(xì)內(nèi)容,請參見數(shù)據(jù)解析。
1.2 物聯(lián)網(wǎng)平臺使用轉(zhuǎn)換后的Alink JSON格式數(shù)據(jù)進(jìn)行業(yè)務(wù)處理。 若配置了規(guī)則引擎,則會根據(jù)數(shù)據(jù)流轉(zhuǎn)規(guī)則,將數(shù)據(jù)流轉(zhuǎn)到數(shù)據(jù)目的地(其他Topic或云產(chǎn)品)中。
重要- 規(guī)則引擎獲取到的數(shù)據(jù)是經(jīng)過腳本解析之后的數(shù)據(jù)。
- 設(shè)置數(shù)據(jù)流轉(zhuǎn)時(shí),數(shù)據(jù)來源的Topic設(shè)置為物模型數(shù)據(jù)上報(bào)的
/${productKey}/${deviceName}/thing/event/property/post
和/${productKey}/${deviceName}/thing/event/${tsl.event.identifier}/post
。詳細(xì)說明,請參見設(shè)置數(shù)據(jù)流轉(zhuǎn)規(guī)則或添加待流轉(zhuǎn)的數(shù)據(jù)源。
1.3 物聯(lián)網(wǎng)平臺調(diào)用數(shù)據(jù)解析腳本中的 protocolToRawData
方法,對結(jié)果數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換,將數(shù)據(jù)解析為設(shè)備可以接收的數(shù)據(jù)格式。1.4 物聯(lián)網(wǎng)平臺推送解析后的數(shù)據(jù)給設(shè)備。 2 您可以通過物聯(lián)網(wǎng)平臺接口QueryDevicePropertyData查詢設(shè)備上報(bào)的屬性歷史數(shù)據(jù),通過物聯(lián)網(wǎng)平臺接口QueryDeviceEventData查詢設(shè)備上報(bào)的事件歷史數(shù)據(jù)。 - 非透傳格式(Alink JSON)數(shù)據(jù)
序號 說明 1 設(shè)備通過非透傳格式數(shù)據(jù)的Topic,上報(bào)透傳數(shù)據(jù)。Topic說明,請參見設(shè)備屬性、事件、服務(wù)。 1.1 物聯(lián)網(wǎng)平臺進(jìn)行業(yè)務(wù)處理。 若配置了規(guī)則引擎,則會根據(jù)數(shù)據(jù)流轉(zhuǎn)規(guī)則,將數(shù)據(jù)流轉(zhuǎn)到數(shù)據(jù)目的地(其他Topic或云產(chǎn)品)中。
重要 設(shè)置數(shù)據(jù)流轉(zhuǎn)時(shí),數(shù)據(jù)來源的Topic設(shè)置為物模型數(shù)據(jù)上報(bào)的/${productKey}/${deviceName}/thing/event/property/post
和/${productKey}/${deviceName}/thing/event/${tsl.event.identifier}/post
。詳細(xì)說明,請參見設(shè)置數(shù)據(jù)流轉(zhuǎn)規(guī)則或添加待流轉(zhuǎn)的數(shù)據(jù)源。1.2 物聯(lián)網(wǎng)平臺返回處理結(jié)果給設(shè)備。 2 您可以通過物聯(lián)網(wǎng)平臺接口QueryDevicePropertyData查詢設(shè)備上報(bào)的屬性歷史數(shù)據(jù),通過物聯(lián)網(wǎng)平臺接口QueryDeviceEventData查詢設(shè)備上報(bào)的事件歷史數(shù)據(jù)。
調(diào)用設(shè)備服務(wù)或設(shè)置屬性
- 異步服務(wù)調(diào)用或?qū)傩栽O(shè)置
序號 說明 1 在物聯(lián)網(wǎng)平臺進(jìn)行服務(wù)調(diào)用。 - 設(shè)置屬性:通過物聯(lián)網(wǎng)平臺接口SetDeviceProperty為設(shè)備設(shè)置具體屬性。
- 調(diào)用服務(wù):通過物聯(lián)網(wǎng)平臺接口InvokeThingService來異步調(diào)用服務(wù)。
定義服務(wù)時(shí),調(diào)用方式選擇為異步的服務(wù)即為異步調(diào)用。
1.1 物聯(lián)網(wǎng)平臺對您提交的參數(shù)進(jìn)行校驗(yàn)。 1.2 物聯(lián)網(wǎng)平臺采用異步調(diào)用方式下發(fā)數(shù)據(jù)給設(shè)備,并返回調(diào)用操作結(jié)果。若沒有報(bào)錯(cuò),則結(jié)果中攜帶下發(fā)給設(shè)備的消息ID。 對于透傳格式(透傳/自定義)數(shù)據(jù),則會先調(diào)用數(shù)據(jù)解析腳本中的
protocolToRawData
方法,對數(shù)據(jù)進(jìn)行數(shù)據(jù)格式轉(zhuǎn)換,再將轉(zhuǎn)換后的數(shù)據(jù)下發(fā)給設(shè)備。2 設(shè)備收到數(shù)據(jù)后,進(jìn)行業(yè)務(wù)處理。 說明 透傳格式(透傳/自定義)和非透傳格式(Alink JSON)數(shù)據(jù),處理消息的Topic不同,詳細(xì)說明,請參見設(shè)置設(shè)備屬性和設(shè)備服務(wù)調(diào)用(異步調(diào)用)。3 設(shè)備完成業(yè)務(wù)處理后,返回處理結(jié)果給物聯(lián)網(wǎng)平臺。 物聯(lián)網(wǎng)平臺收到處理結(jié)果的后續(xù)操作:
- 若是透傳格式數(shù)據(jù),將調(diào)用數(shù)據(jù)解析腳本中的
rawDataToProtocol
方法,對設(shè)備返回的結(jié)果進(jìn)行數(shù)據(jù)格式轉(zhuǎn)換。 - 若配置了規(guī)則引擎,則會根據(jù)數(shù)據(jù)流轉(zhuǎn)規(guī)則,將數(shù)據(jù)流轉(zhuǎn)到數(shù)據(jù)目的地(其他Topic或云產(chǎn)品)中。重要
- 對于透傳格式數(shù)據(jù),規(guī)則引擎獲取到的數(shù)據(jù)是經(jīng)過腳本解析之后的數(shù)據(jù)。
- 設(shè)置數(shù)據(jù)流轉(zhuǎn)時(shí),數(shù)據(jù)來源的Topic設(shè)置為物模型數(shù)據(jù)上報(bào)的
/${productKey}/${deviceName}/thing/downlink/reply/message
。詳細(xì)說明,請參見設(shè)置數(shù)據(jù)流轉(zhuǎn)規(guī)則或添加待流轉(zhuǎn)的數(shù)據(jù)源。
- 同步服務(wù)調(diào)用
序號 說明 1 通過物聯(lián)網(wǎng)平臺接口InvokeThingService,來調(diào)用同步服務(wù)(定義服務(wù)時(shí),調(diào)用方式選擇為同步的服務(wù)即為同步調(diào)用)。 1.1 物聯(lián)網(wǎng)平臺對您提交的參數(shù)進(jìn)行校驗(yàn)。 1.2 使用同步調(diào)用方式,調(diào)用RRPC的Topic,下發(fā)數(shù)據(jù)給設(shè)備。 對于透傳格式(透傳/自定義)數(shù)據(jù),則會先調(diào)用數(shù)據(jù)解析腳本中的
protocolToRawData
方法,對數(shù)據(jù)進(jìn)行數(shù)據(jù)格式轉(zhuǎn)換,再將轉(zhuǎn)換后的數(shù)據(jù)下發(fā)給設(shè)備。1.3 物聯(lián)網(wǎng)平臺同步等待設(shè)備返回結(jié)果。 2 設(shè)備完成業(yè)務(wù)處理后,返回處理結(jié)果給物聯(lián)網(wǎng)平臺。若超時(shí),則返回超時(shí)的錯(cuò)誤信息。 2.1 物聯(lián)網(wǎng)平臺收到設(shè)備處理結(jié)果后,返回結(jié)果給調(diào)用者。 若是透傳格式數(shù)據(jù),將調(diào)用數(shù)據(jù)解析腳本中的
rawDataToProtocol
方法,對設(shè)備返回的結(jié)果進(jìn)行數(shù)據(jù)格式轉(zhuǎn)換。
拓?fù)潢P(guān)系
序號 | 說明 | |
---|---|---|
1 | 子設(shè)備連接到網(wǎng)關(guān)。 若添加拓?fù)潢P(guān)系需要第三方介入,可通過下面的步驟通知網(wǎng)關(guān)添加拓?fù)潢P(guān)系。 | |
1.1 | 網(wǎng)關(guān)通過發(fā)現(xiàn)設(shè)備列表的Topic:/sys/${productKey}/${deviceName}/thing/list/found ,上報(bào)發(fā)現(xiàn)的子設(shè)備信息。物聯(lián)網(wǎng)平臺收到上報(bào)數(shù)據(jù)后,若配置了規(guī)則引擎,則會根據(jù)數(shù)據(jù)流轉(zhuǎn)規(guī)則,將數(shù)據(jù)流轉(zhuǎn)到數(shù)據(jù)目的地(云產(chǎn)品)中。 | |
1.2 | 您可從云產(chǎn)品中獲取子設(shè)備數(shù)據(jù)。 | |
1.3 | 您可決定是否添加網(wǎng)關(guān)與子設(shè)備的拓?fù)潢P(guān)系。 如果需要添加拓?fù)潢P(guān)系,可以調(diào)用物聯(lián)網(wǎng)平臺接口NotifyAddThingTopo,通過Topic: | |
2 |
| |
3 | 您刪除網(wǎng)關(guān)與子設(shè)備的拓?fù)潢P(guān)系:網(wǎng)關(guān)通過刪除拓?fù)潢P(guān)系的Topic:/sys/${productKey}/${deviceName}/thing/topo/delete ,來刪除網(wǎng)關(guān)和子設(shè)備的拓?fù)潢P(guān)系。 | |
4 | 您可以調(diào)用物聯(lián)網(wǎng)平臺接口GetThingTopo,通過Topic:/sys/${productKey}/${deviceName}/thing/topo/get 來獲取網(wǎng)關(guān)和子設(shè)備的拓?fù)潢P(guān)系。 |