协议解析
协议解析概述
大多数智能设备使用二进制格式将数据上报到云端,对于使用自定义协议格式的开发者,需要将二进制格式数据转换成可理解的json数据从而使用设备属性完成设备数据的存储、推送、报警等服务。
AbleCloud提供标准协议上报解析服务,开发者只需要将协议的构成在页面进行简单定义,就可以实现云端协议解析,解析后的数据将直接以json形式转发到云端自定服务,同时还将自动触发属性存储、属性推送、属性报警。
协议解析页如下图所示。
虚拟设备页及虚拟设备详情页包括以下各项内容:
序号 | 内容 | 描述 |
---|---|---|
1. | 添加协议 | 点击弹出添加协议页 |
2. | 协议详情 | 点击进入协议详情页 |
3. | 编辑协议 | 修改协议的名称及message code号 |
添加协议
AbleCloud的设备上报协议包括messagecode与payload两部分,一个messagecode对应一个payload的解析规则。所以新建一个协议就需要先指定一个messagecode。
操作步骤
1.进入管理控制台主菜单。
2.点击左侧对应的产品,进入产品详情页。
3.点击左侧标签栏的“协议解析”标签,进入解析解析页。
4.点击上方的“添加协议”按钮,弹出添加协议页,如下图所示。
添加协议页包括以下各项内容:
序号 | 内容 | 描述 |
---|---|---|
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,数据格式选择大端,无符号,如下图所示。
2.重复步骤1创建风量、PM2.5、甲醛的数据点并进行相关配置,如下图所示。
3.状态开关开关为多个状态共享一个Byte,我们将状态开关创建为一个拆分数据属性,如下图所示。
4.在状态开关的拆分数据属性下,新建1个bit的蜂鸣器开关属性、1个bit的指示灯开关属性,6个bit的忽略数据属性,如下图所示。
5.重复步骤1创建模式控制的数据点并进行相关配置。 6.创建4个Byte的忽略数据作为4个字节保留字段。 7.重复步骤1创建滤芯剩余百分比的数据点并进行相关配置,最终结果如下图所示。
协议测试
协议配置完成后,可以直接在当前页面下方的协议测试模块进行协议解析测试,按照上文中的协议定义,我们假设设备状态为1、风量为2、PM2.5为48(十进制),甲醛值为35(十进制),蜂鸣器状态为关、指示灯状态为开、滤芯剩余量为20。根据二进制协议的定义,上传到云端的payload数据应该为01 02 00 30 00 23 40 02 00 00 00 00 14。
将数据输入到协议测试的输入框内,点击测试按钮,相应的json结果将显示在输出框内,如下图所示。