
# 编解码插件相关问题
#### 如何进行编解码插件开发？
物联网平台提供线上编解码插件开发方式：线上开发指导详见[在线开发参考](https://support.huaweicloud.com/devg-iothub/iot_02_0008.html)。
#### 在线开发的插件字段类型为string和varstring类型的编解码规则
在线开发编解码插件时，如果某字段的数据类型为字符串或可变长度字符串，则按照ACSII码进行编解码。
对应的插件在线开发可参考[字符串及可变长字符串的编解码插件在线开发](https://support.huaweicloud.com/devg-iothub/iot_02_0008.html#section1)。
图1数据类型样例1   
![](https://support.huaweicloud.com/iothub_faq/figure/zh-cn_image_0000001597660561.png "点击放大")
#### 在线开发的插件字段为数组和可变长数组类型的编解码规则
在线开发编解码插件时，如果某字段的数据类型为数组或可变长度数组，则按照base64进行编解码。对应的插件在线开发可参考[数组及可变长数组的编解码插件在线开发](https://support.huaweicloud.com/devg-iothub/iot_02_0008.html#section2)示例。
图2数据类型样例2   
![](https://support.huaweicloud.com/iothub_faq/figure/zh-cn_image_0000001546900866.png)
#### 在线开发插件中地址域（messageId）如何使用？
当有相同类型的消息时（例如：两种数据上报的消息），需要添加地址域字段，用于区分不同的消息，且该字段在字段列表的位置必须一致。场景如下：
- 有两条及以上的数据上报消息或命令下发消息。
- 命令响应消息可看作一种数据上报消息，因此如果存在命令响应消息，则需要在数据上报消息中添加地址域。
- 数据上报响应消息可看作一种命令下发消息，因此如果存在数据上报响应消息，则需要在命令下发消息中添加地址域。
 
#### 在线开发的插件中如何实现命令下发响应？
设备在接收到命令后，可以上报两类消息：ACK和命令下发响应。ACK用于表示命令已经到达设备，命令下发响应用于表示设备执行命令的结果。如果需要设备在接到命令后，需要返回命令下发响应，则：
- 需要在数据上报消息和命令响应消息中均定义地址域字段（messageId），并且该字段在两种消息的字段列表中的位置必须相同，使编解码插件可以对数据上报消息和命令响应消息进行区分。
- 需要在命令下发消息和命令响应消息中定义响应标识字段（mid），并且该字段在两种消息的字段列表中的位置必须相同，使编解码插件可以将命令下发消息和对应的命令响应消息进行关联。
 
#### 在线开发的插件部署失败如何处理？
**问题描述**
用户在插件开发界面开发好了编解码插件，单击部署按钮部署失败了。
**可能原因**
1. 如果插件下载成功，但是部署失败，则可能是网络问题导致。
2. 如果插件下载失败，则部署失败的原因如下：
   - 同类消息的（例如：两种数据上报的消息）messageId的值设置重复或在消息中的位置不一致。
   
   - messageId的数据类型设置为非int型。
   
   - 存在字段的默认值设置为非16进制数。
   
   - 存在字段名字设置为java关键字，比如type、int等。
    
**解决方法**
1. 插件如果可以成功下载，但是部署失败，请检查网络状态，并重试。
2. 如果插件下载失败，请排查插件定义是否符合规范。
 
#### 脚本化插件/离线插件开发编解码失败如何处理？
- 脚本化插件可以在"产品 \> 插件开发 \> 脚本化开发"页签进行调测，根据调测结果来进行修改。
- 离线开发的插件需要先通过[编解码插件检测工具](https://developer.obs.cn-north-4.myhuaweicloud.com/manage/tool/pluginDetector/IoT_Codec_Test_Tool.zip)调测，根据检测工具的测试结果来进行修改。
 
#### 离线开发的插件部署失败？
1. 请使用[编解码插件检测工具](https://developer.obs.cn-north-4.myhuaweicloud.com/manage/tool/pluginDetector/IoT_Codec_Test_Tool.zip)对插件进行检测。
2. 根据检测工具返回的错误码进行处理，错误码处理建议详见检测工具包内的《IoT编解码插件检测工具使用说明》。
 
#### 离线开发的插件上传失败？
离线开发的插件需要先通过[编解码插件检测工具](https://developer.obs.cn-north-4.myhuaweicloud.com/manage/tool/pluginDetector/IoT_Codec_Test_Tool.zip)检测后，再上传到平台。请使用编解码插件检测工具对插件包进行检测，并按照工具的错误提示进行修改。
