物联网平台为设备端开发提供了Link SDK,并在SDK中封装了设备端与物联网平台的交互协议。您可以直接使用设备端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来获取网关和子设备的拓扑关系。