编解码插件相关问题
如何进行编解码插件开发?
物联网平台提供线上编解码插件开发方式:线上开发指导详见在线开发参考。
在线开发的插件字段类型为string和varstring类型的编解码规则
在线开发编解码插件时,如果某字段的数据类型为字符串或可变长度字符串,则按照ACSII码进行编解码。
对应的插件在线开发可参考字符串及可变长字符串的编解码插件在线开发。
在线开发的插件字段为数组和可变长数组类型的编解码规则
在线开发编解码插件时,如果某字段的数据类型为数组或可变长度数组,则按照base64进行编解码。对应的插件在线开发可参考数组及可变长数组的编解码插件在线开发示例。
在线开发插件中地址域(messageId)如何使用?
当有相同类型的消息时(例如:两种数据上报的消息),需要添加地址域字段,用于区分不同的消息,且该字段在字段列表的位置必须一致。场景如下:
- 有两条及以上的数据上报消息或命令下发消息。
- 命令响应消息可看作一种数据上报消息,因此如果存在命令响应消息,则需要在数据上报消息中添加地址域。
- 数据上报响应消息可看作一种命令下发消息,因此如果存在数据上报响应消息,则需要在命令下发消息中添加地址域。
在线开发的插件中如何实现命令下发响应?
- 需要在数据上报消息和命令响应消息中均定义地址域字段(messageId),并且该字段在两种消息的字段列表中的位置必须相同,使编解码插件可以对数据上报消息和命令响应消息进行区分。
- 需要在命令下发消息和命令响应消息中定义响应标识字段(mid),并且该字段在两种消息的字段列表中的位置必须相同,使编解码插件可以将命令下发消息和对应的命令响应消息进行关联。
在线开发的插件部署失败如何处理?
问题描述
用户在插件开发界面开发好了编解码插件,点击部署按钮部署失败了
可能原因
- 如果插件下载成功,但是部署失败,则可能是网络问题导致
- 如果插件下载失败,则部署失败的原因如下:
- 同类消息的(例如:两种数据上报的消息)messageId的值设置重复或在消息中的位置不一致。
- messageId的数据类型设置为非int型。
- 存在字段的默认值设置为非16进制数。
- 存在字段名字设置为java关键字,比如type、int等
解决方法
- 插件如果可以成功下载,但是部署失败,请检查网络状态,并重试。
- 如果插件下载失败,请排查插件定义是否符合规范。
脚本化插件/离线插件开发编解码失败如何处理?
- 脚本化插件可以在 页签进行调测,根据调测结果来进行修改。
- 离线开发的插件需要先通过编解码插件检测工具调测,根据检测工具的测试结果来进行修改。
离线开发的插件部署失败?
- 请使用编解码插件检测工具对插件进行检测。
- 根据检测工具返回的错误码进行处理,错误码处理建议详见检测工具包内的《IoT编解码插件检测工具使用说明》。
离线开发的插件上传失败?
离线开发的插件需要先通过编解码插件检测工具检测后,再上传到平台。请使用编解码插件检测工具对插件包进行检测,并按照工具的错误提示进行修改。
离线开发的插件包通过了工具检测,上传到平台时,提示找不到插件?
问题描述
离线开发的插件包已经通过了编解码插件检测工具检测后,在产品详情界面上传离线插件包,提示找不到插件。
可能原因
- 反编译preload文件夹下的jar包,OSGI-INF文件夹下的CodecProvideHandler.xml文件格式有问题或者存在乱码。
- CodecProvideHandler.xml文件中的name和implementation class的路径和插件代码的路径不一致。
解决方法
- 使用反编译工具打开preload文件夹下jar包,检查OSGI-INF->CodecProvideHandler.xml是否为xml格式,且不存在乱码。
- 检查CodecProvideHandler.xml文件中的name和implementation class的路径是否和插件代码的路径一致。
离线开发的插件通过了工具检测,上传到平台后,设备日志提示异常?
问题描述
离线开发的插件包已经通过了编解码插件检测工具检测后,上传平台后,设备日志提示异常。
可能原因
该异常是运行插件代码抛出的异常,一般是相关依赖没有引入或者代码逻辑有误,可根据日志中的Java异常提示进行处理。
解决方法
在离线插件关键代码处(例如decode函数入口处,出口处等)打印日志,并联系物联网平台支撑人员在后台获取日志,辅助定位问题。