协议解析

协议解析概述

大多数智能设备使用二进制格式将数据上报到云端,对于使用自定义协议格式的开发者,需要将二进制格式数据转换成可理解的json数据从而使用设备属性完成设备数据的存储、推送、报警等服务。
AbleCloud提供标准协议上报解析服务,开发者只需要将协议的构成在页面进行简单定义,就可以实现云端协议解析,解析后的数据将直接以json形式转发到云端自定服务,同时还将自动触发属性存储、属性推送、属性报警。
协议解析页如下图所示。

arch

虚拟设备页及虚拟设备详情页包括以下各项内容:

序号 内容 描述
1. 添加协议 点击弹出添加协议页
2. 协议详情 点击进入协议详情页
3. 编辑协议 修改协议的名称及message code号

添加协议

AbleCloud的设备上报协议包括messagecode与payload两部分,一个messagecode对应一个payload的解析规则。所以新建一个协议就需要先指定一个messagecode。

操作步骤
1.进入管理控制台主菜单。
2.点击左侧对应的产品,进入产品详情页。
3.点击左侧标签栏的“协议解析”标签,进入解析解析页。
4.点击上方的“添加协议”按钮,弹出添加协议页,如下图所示。

arch

添加协议页包括以下各项内容:

序号 内容 描述
1. 协议名称 协议的显示名称,如故障上报协议、数据上报协议等
2. message code 该协议的消息号,范围200-255

5.按照界面提示正确填写相关信息后,点击“确定”按钮,成功添加协议。

管理协议数据

在AbleCloud协议解析模块的定义中,基本数据点的长度支持1-4个Byte,包括四种类型数据,属性数据、自定义数据、拆分数据、忽略数据。

序号 类型 描述
1. 属性数据 指该数据对应为产品的某一属性,需要设定数据的大小端、符号格式等
2. 自定义数据 指该数据为非属性的可解析字段,需要设定数据的标识,当此字段用于位矢量时,转换结果将是整型数值,否则,会将此字节段做16进制编码,比如字节序列 {0xFF, 0x12, 0x34, 0x56} 将转换成 "ff123456"
3. 拆分数据 指该数据点可以拆分为更小的bit维度,可以在拆分数据之下添加子数据,子数据同样可以选择为属性数据、自定义数据或者忽略数据
4. 忽略数据 在指定位置直接跳过指定长度的字节

下面我们将通过一个实际的协议配置实例,来演示如何将一个二进制协议在平台进行定义。

设备状态 风量 PM2.5 甲醛 状态开关参数 模式控制 预留字段 滤芯剩余百分比
1Byte 1Byte 2Byte大端 2Byte大端 1Byte,其中蜂鸣器开关1bit、指示灯开关1bit、剩余6个bit预留 1Byte 4Byte 1Byte

其中设备状态、风量、PM2.5、甲醛、蜂鸣器开关、指示灯开关、模式控制、滤芯剩余百分比已经在平台提前定义好属性,属性的定义方法请点击这里查看。

操作步骤
1.按照协议的顺序,我们从左往右创建第一个数据点。点击屏幕中央的+号,弹出新建数据框,数据类型选择属性,属性类型选择设备状态(DeviceStatus),数据长度选择1Byte,数据格式选择大端,无符号,如下图所示。

arch

2.重复步骤1创建风量、PM2.5、甲醛的数据点并进行相关配置,如下图所示。

arch

3.状态开关开关为多个状态共享一个Byte,我们将状态开关创建为一个拆分数据属性,如下图所示。

arch

4.在状态开关的拆分数据属性下,新建1个bit的蜂鸣器开关属性、1个bit的指示灯开关属性,6个bit的忽略数据属性,如下图所示。

arch

5.重复步骤1创建模式控制的数据点并进行相关配置。 6.创建4个Byte的忽略数据作为4个字节保留字段。 7.重复步骤1创建滤芯剩余百分比的数据点并进行相关配置,最终结果如下图所示。

arch

协议测试

协议配置完成后,可以直接在当前页面下方的协议测试模块进行协议解析测试,按照上文中的协议定义,我们假设设备状态为1、风量为2、PM2.5为48(十进制),甲醛值为35(十进制),蜂鸣器状态为关、指示灯状态为开、滤芯剩余量为20。根据二进制协议的定义,上传到云端的payload数据应该为01 02 00 30 00 23 40 02 00 00 00 00 14。
将数据输入到协议测试的输入框内,点击测试按钮,相应的json结果将显示在输出框内,如下图所示。

arch