数组及可变长数组数据类型
2. 添加other_info字段,“数据类型”选择“array”,表示数组类型的描述信息。
在本场景中,“长度”配置为5个字节。字段名、默认值、偏移值的说明可参考 2。
设备接入
开发指南 3 产品开发
步骤3 单击“新增消息”,新增“other_info2”消息,上报可变长度数组类型的描述信息。
配置此步骤的主要目的是,将设备上传的可变长度数组二进制码流消息解码成JSON格 式,以便物联网平台理解。配置示例如下:
● 消息名:other_info2
● 消息类型:数据上报
● 添加响应字段:是。添加响应字段后,物联网平台在收到设备上报的数据后,会 下发用户设置的响应数据到设备。
● 响应数据:AAAA0000(默认)
1. 单击“添加字段”,添加messageId字段,表示消息种类。在本场景中,0x0用于 标识上报火灾等级和温度的消息,0x1用于标识只上报温度的消息,0x3用于标识 上报描述信息(可变长度数组类型)的消息。messageID、数据类型、长度、默 认值、偏移值的说明可参考1。
设备接入
开发指南 3 产品开发
2. 添加length字段,表示数组长度。“数据类型”根据可变长度数组的长度进行配 置,长度在255以内,配置为“int8u”。长度、默认值、偏移值的说明可参考2。
3. 添加other_info字段,“数据类型”选择“variant”,表示可变长度数组类型的 描述信息。“长度关联字段”选择“length”,“长度关联字段差值”和“数值 长度”自动填充。“掩码”默认为“0xff”。偏移值说明可参考2。
设备接入
开发指南 3 产品开发
步骤4 拖动右侧“设备模型”区域的属性字段,与数据上报消息的相应字段建立映射关系。
步骤5 单击“保存”,并在插件保存成功后单击“部署”,将编解码插件部署到物联网平 台。
----结束
调测编解码插件
步骤1 在烟感产品的开发空间,选择“在线调试”,并单击“新增测试设备”。
步骤2 用户可根据自己的业务场景,选择使用真实设备或者模拟设备进行调测。具体请参考 在线调试。本文以模拟设备为例,调测编解码插件。
在弹出的“新增测试设备”窗口,选择“模拟设备”,单击“确定”,创建一个虚拟 设备。虚拟设备名称包含 “Simulator”字样,每款产品下只能创建一个虚拟设备。
设备接入
开发指南 3 产品开发
步骤3 单击“调试”,进入调试界面。
步骤4 使用设备模拟器上报数组类型的描述信息。
十六进制码流示例:0211223344。02表示messageId,此消息上报数组类型的描述信 息;11223344表示描述信息,长度为4个字节。
在“应用模拟器”区域查看数据上报的结果:{other_info=null}。描述信息不足5个字 节,编解码插件无法解析。
十六进制码流示例:021122334455。02表示messageId,此消息上报数组类型的描述 信息;1122334455表示描述信息,长度为5个字节。
在“应用模拟器”区域查看数据上报的结果:{serviceId: smokedetector, data:
{"other_info":"ESIzRFU="}}。描述信息长度为5个字节,编解码插件解析成功。
在“应用模拟器”区域查看数据上报的结果:{serviceId: smokedetector, data:
{"other_info":"ESIzRFU="}}。描述信息长度超过5个字节,编解码插件截取前5个字节 进行解析。
步骤5 使用设备模拟器上报可变长度数组类型的描述信息。
十六进制码流示例:030101。03表示messageId,此消息上报可变长度数组类型的描 述信息;01表示描述信息长度(1个字节),长度为1个字节;01表示描述信息,长度 为1个字节。
在“应用模拟器”区域查看数据上报的结果:{serviceId: smokedetector, data:
{"other_info":"AQ=="}}。AQ==是01经过base64编码后的值。
十六进制码流示例:03020102。03表示messageId,此消息上报可变长度数组类型的 描述信息;02表示描述信息长度(2个字节),长度为1个字节;0102表示描述信息,
长度为2个字节。
在“应用模拟器”区域查看数据上报的结果:{serviceId: smokedetector, data:
{"other_info":"AQI="}}。AQI=是01经过base64编码后的值。
十六进制码流示例:03030102。03表示messageId,此消息上报可变长度数组类型的 描述信息;03表示描述信息长度(3个字节),长度为1个字节;0102表示描述信息,
长度为2个字节。
在“应用模拟器”区域查看数据上报的结果:{other_info=null}。描述信息长度不足3 个字节,编解码插件解析失败。
设备接入
开发指南 3 产品开发
十六进制码流示例:0303010203。03表示messageId,此消息上报可变长度数组类型 的描述信息;03表示描述信息长度(3个字节),长度为1个字节;010203表示描述信 息,长度为3个字节。
在“应用模拟器”区域查看数据上报的结果:{serviceId: smokedetector, data:
{"other_info":"AQID"}}。AQID是010203经过base64编码后的值。
十六进制码流示例:030301020304。03表示messageId,此消息上报可变长度数组类 型的描述信息;03表示描述信息长度(3个字节),长度为1个字节;01020304表示描 述信息,长度为4个字节。
在“应用模拟器”区域查看数据上报的结果:{other_info=AQID}。描述信息长度超过 3个字节,编解码插件截取前3个字节进行解析,AQID是010203经过base64编码后的 值。
base64可以将16进制码流当做字符或者数值进行编码,两种方式获得的编码结果不
3.4.3 使用 JavaScript 开发插件
物联网平台支持JavaScript脚本编解码的功能,根据您提交的脚本文件,实现设备二进 制数据和平台JSON格式之间转换。本文以烟感设备为例,介绍如何开发一个支持设备 属性上报和命令下发的JavaScript编解码脚本,并介绍JavaScript脚本开发编解码插件 的格式转换要求和调试方法。
说明
● JavaScript语法规则需要遵循ECMAScript 5.1规范。
● JavaScript脚本大小不能超过1M。
● 产品部署JavaScript脚本插件后,该产品下所有设备的上下行数据都会进行JavaScript脚本解 析。开发者实现JavaScript插件时需要注意实现设备所有的上下行场景。
● 上行数据JavaScript解码后的JSON数据需要符合平台的格式要求,具体格式要求见: 数据解 码格式定义 。