物联网平台为设备端开发提供了Link SDK,并在SDK中封装了设备端与物联网平台交互通信的Alink协议。您可以直接使用设备端Link SDK开发设备。如果嵌入式环境复杂,已提供的设备端Link SDK不能满足您的需求,您也可以自行封装Alink协议数据,建立设备与物联网平台的通信。
概述
Alink协议是针对物联网开发领域设计的一种数据交换规范,数据格式是JSON,用于设备端和物联网平台的双向通信,更便捷地实现和规范了设备端和物联网平台之间的业务数据交互。
物联网平台为设备端开发提供的各语言Link SDK及功能特性说明,请参见功能特性。
物联网平台各功能的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或云产品)中。
1.3 物联网平台调用数据解析脚本中的 protocolToRawData
方法,对结果数据进行格式转换,将数据解析为设备可以接收的数据格式。1.4 物联网平台推送解析后的数据给设备。 2 您可以通过物联网平台接口QueryDevicePropertyData查询设备上报的属性历史数据,通过物联网平台接口QueryDeviceEventData查询设备上报的事件历史数据。 - 非透传格式(Alink JSON)数据
序号 说明 1 设备通过非透传格式数据的Topic,上报透传数据。Topic说明,请参见设备属性、事件、服务。 1.1 物联网平台进行业务处理。 若配置了规则引擎,则会根据数据流转规则,将数据流转到数据目的地(其他Topic或云产品)中。
1.2 物联网平台返回处理结果给设备。 2 您可以通过物联网平台接口QueryDevicePropertyData查询设备上报的属性历史数据,通过物联网平台接口QueryDeviceEventData查询设备上报的事件历史数据。
调用设备服务或设置属性
- 异步服务调用或属性设置
序号 说明 1 在物联网平台进行服务调用。 - 设置属性:通过物联网平台接口SetDeviceProperty为设备设置具体属性。
- 调用服务:通过物联网平台接口InvokeThingService来异步调用服务。
定义服务时,调用方式选择为异步的服务即为异步调用。
1.1 物联网平台对您提交的参数进行校验。 1.2 物联网平台采用异步调用方式下发数据给设备,并返回调用操作结果。若没有报错,则结果中携带下发给设备的消息ID。 对于透传格式(透传/自定义)数据,则会先调用数据解析脚本中的
protocolToRawData
方法,对数据进行数据格式转换,再将转换后的数据下发给设备。2 设备收到数据后,进行业务处理。 说明 透传格式(透传/自定义)和非透传格式(Alink JSON)数据,处理消息的Topic不同,详细说明,请参见设置设备属性和设备服务调用(异步调用)。3 设备完成业务处理后,返回处理结果给物联网平台。 物联网平台收到处理结果的后续操作:
- 若是透传格式数据,将调用数据解析脚本中的
rawDataToProtocol
方法,对设备返回的结果进行数据格式转换。 - 若配置了规则引擎,则会根据数据流转规则,将数据流转到数据目的地(其他Topic或云产品)中。
- 同步服务调用
序号 说明 1 通过物联网平台接口InvokeThingService,来调用同步服务(定义服务时,调用方式选择为同步的服务即为同步调用)。 1.1 物联网平台对您提交的参数进行校验。 1.2 使用同步调用方式,调用RRPC的Topic,下发数据给设备。 对于透传格式(透传/自定义)数据,则会先调用数据解析脚本中的
protocolToRawData
方法,对数据进行数据格式转换,再将转换后的数据下发给设备。1.3 物联网平台同步等待设备返回结果。 2 设备完成业务处理后,返回处理结果给物联网平台。若超时,则返回超时的错误信息。 2.1 物联网平台收到设备处理结果后,返回结果给调用者。 若是透传格式数据,将调用数据解析脚本中的
rawDataToProtocol
方法,对设备返回的结果进行数据格式转换。
拓扑关系
序号 | 说明 | |
---|---|---|
1 | 子设备连接到网关。 若添加拓扑关系需要第三方介入,可通过下面的步骤通知网关添加拓扑关系。 | |
1.1 | 网关通过发现设备列表的Topic:/sys/${productKey}/${deviceName}/thing/list/found ,上报发现的子设备信息。物联网平台收到上报数据后,若配置了规则引擎,则会根据数据流转规则,将数据流转到数据目的地(云产品)中。 | |
1.2 | 您可从云产品中获取子设备数据。 | |
1.3 | 您可决定是否添加网关与子设备的拓扑关系。 如果需要添加拓扑关系,可以调用物联网平台接口NotifyAddThingTopo,通过Topic: | |
2 |
| |
3 | 您删除网关与子设备的拓扑关系:网关通过删除拓扑关系的Topic:/sys/${productKey}/${deviceName}/thing/topo/delete ,来删除网关和子设备的拓扑关系。 | |
4 | 您可以调用物联网平台接口GetThingTopo,通过Topic:/sys/${productKey}/${deviceName}/thing/topo/get 来获取网关和子设备的拓扑关系。 |