物聯網平臺為設備端開發提供了Link SDK,并在SDK中封裝了設備端與物聯網平臺交互通信的Alink協議。您可以直接使用設備端Link SDK開發設備。如果嵌入式環境復雜,已提供的設備端Link SDK不能滿足您的需求,您也可以自行封裝Alink協議數據,建立設備與物聯網平臺的通信。

概述

Alink協議是針對物聯網開發領域設計的一種數據交換規范,數據格式是JSON,用于設備端和物聯網平臺的雙向通信,更便捷地實現和規范了設備端和物聯網平臺之間的業務數據交互。

物聯網平臺為設備端開發提供的各語言Link SDK及功能特性說明,請參見功能特性

物聯網平臺各功能的Alink協議說明,如下表所示。

表 1. Alink協議說明
功能數據格式說明
設備接入
消息通信
設備管理
監控運維

以下為您介紹Alink協議下,設備的上線流程和數據上下行原理。

上線流程

設備在物聯網平臺的上線流程,可以按照設備類型,分為直連設備與子設備的接入流程。主要包括:設備注冊、激活上線和數據上報三個流程。

直連設備接入有兩種方式:

  • 使用一機一密方式提前燒錄設備證書(ProductKey、DeviceName和DeviceSecret),注冊設備,上線,然后上報數據。
  • 使用一型一密動態注冊提前燒錄產品證書(ProductKey和ProductSecret),注冊設備, 上線,然后上報數據。

子設備接入流程通過網關發起,具體接入方式有兩種:

  • 使用一機一密提前燒錄設備證書(ProductKey、DeviceName和DeviceSecret),子設備上報設備證書給網關,網關添加拓撲關系,復用網關的通道上報數據。
  • 使用動態注冊方式提前燒錄ProductKey,子設備上報ProductKey和DeviceName給網關,物聯網平臺校驗DeviceName成功后,下發DeviceSecret。子設備將獲得的設備證書信息上報網關,網關添加拓撲關系,通過網關的通道上報數據。
設備上報數據

設備上報屬性或事件

  • 透傳格式(透傳/自定義)數據 設備透傳數據
    序號說明
    1設備通過透傳格式數據的Topic,上報透傳數據。Topic說明,請參見設備屬性、事件、服務
    1.1物聯網平臺通過數據解析腳本先對設備上報的數據進行解析:調用腳本中的rawDataToProtocol方法,將設備上報的數據轉換為物聯網平臺標準數據格式(Alink JSON格式)。

    數據解析的詳細內容,請參見數據解析

    1.2物聯網平臺使用轉換后的Alink JSON格式數據進行業務處理。

    若配置了規則引擎,則會根據數據流轉規則,將數據流轉到數據目的地(其他Topic或云產品)中。

    重要
    • 規則引擎獲取到的數據是經過腳本解析之后的數據。
    • 設置數據流轉時,數據來源的Topic設置為物模型數據上報/${productKey}/${deviceName}/thing/event/property/post/${productKey}/${deviceName}/thing/event/${tsl.event.identifier}/post。詳細說明,請參見設置數據流轉規則添加待流轉的數據源
    1.3物聯網平臺調用數據解析腳本中的protocolToRawData方法,對結果數據進行格式轉換,將數據解析為設備可以接收的數據格式。
    1.4物聯網平臺推送解析后的數據給設備。
    2您可以通過物聯網平臺接口QueryDevicePropertyData查詢設備上報的屬性歷史數據,通過物聯網平臺接口QueryDeviceEventData查詢設備上報的事件歷史數據。
  • 非透傳格式(Alink JSON)數據 Alink 數據
    序號說明
    1設備通過非透傳格式數據的Topic,上報透傳數據。Topic說明,請參見設備屬性、事件、服務
    1.1物聯網平臺進行業務處理。

    若配置了規則引擎,則會根據數據流轉規則,將數據流轉到數據目的地(其他Topic或云產品)中。

    重要 設置數據流轉時,數據來源的Topic設置為物模型數據上報/${productKey}/${deviceName}/thing/event/property/post/${productKey}/${deviceName}/thing/event/${tsl.event.identifier}/post。詳細說明,請參見設置數據流轉規則添加待流轉的數據源
    1.2物聯網平臺返回處理結果給設備。
    2您可以通過物聯網平臺接口QueryDevicePropertyData查詢設備上報的屬性歷史數據,通過物聯網平臺接口QueryDeviceEventData查詢設備上報的事件歷史數據。

調用設備服務或設置屬性

  • 異步服務調用或屬性設置 Alink 數據傳輸
    序號說明
    1在物聯網平臺進行服務調用。
    • 設置屬性:通過物聯網平臺接口SetDeviceProperty為設備設置具體屬性。
    • 調用服務:通過物聯網平臺接口InvokeThingService來異步調用服務。

      定義服務時,調用方式選擇為異步的服務即為異步調用。

    1.1物聯網平臺對您提交的參數進行校驗。
    1.2物聯網平臺采用異步調用方式下發數據給設備,并返回調用操作結果。若沒有報錯,則結果中攜帶下發給設備的消息ID。

    對于透傳格式(透傳/自定義)數據,則會先調用數據解析腳本中的protocolToRawData方法,對數據進行數據格式轉換,再將轉換后的數據下發給設備。

    2設備收到數據后,進行業務處理。
    說明 透傳格式(透傳/自定義)和非透傳格式(Alink JSON)數據,處理消息的Topic不同,詳細說明,請參見設置設備屬性設備服務調用(異步調用)
    3設備完成業務處理后,返回處理結果給物聯網平臺。

    物聯網平臺收到處理結果的后續操作:

    • 若是透傳格式數據,將調用數據解析腳本中的rawDataToProtocol方法,對設備返回的結果進行數據格式轉換。
    • 若配置了規則引擎,則會根據數據流轉規則,將數據流轉到數據目的地(其他Topic或云產品)中。
      重要
      • 對于透傳格式數據,規則引擎獲取到的數據是經過腳本解析之后的數據。
      • 設置數據流轉時,數據來源的Topic設置為物模型數據上報/${productKey}/${deviceName}/thing/downlink/reply/message。詳細說明,請參見設置數據流轉規則添加待流轉的數據源
  • 同步服務調用 Alink 數據傳輸
    序號說明
    1通過物聯網平臺接口InvokeThingService,來調用同步服務(定義服務時,調用方式選擇為同步的服務即為同步調用)。
    1.1物聯網平臺對您提交的參數進行校驗。
    1.2使用同步調用方式,調用RRPC的Topic,下發數據給設備。

    對于透傳格式(透傳/自定義)數據,則會先調用數據解析腳本中的protocolToRawData方法,對數據進行數據格式轉換,再將轉換后的數據下發給設備。

    1.3物聯網平臺同步等待設備返回結果。
    2設備完成業務處理后,返回處理結果給物聯網平臺。若超時,則返回超時的錯誤信息。
    2.1物聯網平臺收到設備處理結果后,返回結果給調用者。

    若是透傳格式數據,將調用數據解析腳本中的rawDataToProtocol方法,對設備返回的結果進行數據格式轉換。

拓撲關系

Alink 數據傳輸
序號說明
1子設備連接到網關。

若添加拓撲關系需要第三方介入,可通過下面的步驟通知網關添加拓撲關系。

1.1網關通過發現設備列表的Topic:/sys/${productKey}/${deviceName}/thing/list/found,上報發現的子設備信息。

物聯網平臺收到上報數據后,若配置了規則引擎,則會根據數據流轉規則,將數據流轉到數據目的地(云產品)中。

1.2您可從云產品中獲取子設備數據。
1.3您可決定是否添加網關與子設備的拓撲關系。

如果需要添加拓撲關系,可以調用物聯網平臺接口NotifyAddThingTopo,通過Topic:/sys/${productKey}/${deviceName}/thing/topo/add/notify通知網關向子設備添加拓撲關系。

2
  • 網關可通過添加拓撲關系Topic:/sys/${productKey}/${deviceName}/thing/topo/add,直接添加拓撲關系,物聯網平臺返回添加的結果。
  • 網關收到添加拓撲關系通知指令后,通過添加拓撲關系Topic,完成添加拓撲關系。
3您刪除網關與子設備的拓撲關系:網關通過刪除拓撲關系的Topic:/sys/${productKey}/${deviceName}/thing/topo/delete,來刪除網關和子設備的拓撲關系。
4您可以調用物聯網平臺接口GetThingTopo,通過Topic:/sys/${productKey}/${deviceName}/thing/topo/get來獲取網關和子設備的拓撲關系。