物聯(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é)議說明,如下表所示。

表 1. 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ù)

設(shè)備上報(bào)屬性或事件

  • 透傳格式(透傳/自定義)數(shù)據(jù) 設(shè)備透傳數(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ù) Alink 數(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è)置 Alink 數(shù)據(jù)傳輸
    序號說明
    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)品)中。
      重要
  • 同步服務(wù)調(diào)用 Alink 數(shù)據(jù)傳輸
    序號說明
    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)系

Alink 數(shù)據(jù)傳輸
序號說明
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:/sys/${productKey}/${deviceName}/thing/topo/add/notify通知網(wǎng)關(guān)向子設(shè)備添加拓?fù)潢P(guān)系。

2
  • 網(wǎng)關(guān)可通過添加拓?fù)潢P(guān)系Topic:/sys/${productKey}/${deviceName}/thing/topo/add,直接添加拓?fù)潢P(guān)系,物聯(lián)網(wǎng)平臺返回添加的結(jié)果。
  • 網(wǎng)關(guān)收到添加拓?fù)潢P(guān)系通知指令后,通過添加拓?fù)潢P(guān)系Topic,完成添加拓?fù)潢P(guān)系。
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)系。