# 什么是编解码插件
编解码插件是供物联网平台调用的数据格式转换插件，可以对设备上报给平台的数据、和平台要下发给设备的数据进行二进制格式与JSON格式之间的转换，或JSON格式之间的转换。
以NB-IoT场景为例，编解码插件将设备上报的二进制数据解码为JSON格式供应用服务器"阅读"，将应用服务器下行的JSON格式命令编码为二进制格式数据供终端设备（UE）"理解执行"。NB-IoT设备和物联网平台之间采用CoAP协议通讯，CoAP消息的payload为应用层数据，应用层数据的格式由设备自行定义。由于NB-IoT设备一般对省电要求较高，所以应用层数据一般不采用流行的JSON格式，而是采用二进制格式。但是，物联网平台与应用侧使用JSON格式进行通信。因此，您需要开发编码插件，供物联网平台调用，可以完成二进制格式和JSON格式的转换。
![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0000001081428053.png "点击放大")
#### 应用场景
1. 使用LwM2M/CoAP协议接入。
2. 泛协议接入，如TCP协议、JT808协议、GB32960协议等。
3. MQTT(S)/HTTP(S)协议设备接入无需进行编解码插件开发。
#### 数据上报流程
图1数据上报编解码插件   
![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0000001851902864.png "点击放大")
在数据上报流程中，有两处需要用到编解码插件：
- 将设备上报的二进制码流解码成JSON格式的数据，发送给应用服务器。
- 将应用服务器响应的JSON格式数据编码成二进制码流，下发给设备。
 
#### 命令下发流程
图2命令下发编解码插件流程   
![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0000001851914020.png "点击放大")
在命令下发流程中，有两处需要用到编解码插件：
- 将应用服务器下发的JSON格式数据编码成二进制码流，下发给设备。
- 将设备响应的二进制码流解码成JSON格式的数据，上报给应用服务器。
 
#### 图形化开发和脚本化开发
编解码插件的开发方式有图形化开发和脚本化开发。
- [图形化开发插件](https://support.huaweicloud.com/devg-iothub/iot_02_0008.html)是指在设备接入控制台，通过可视化的方式快速开发一款产品的编解码插件。
- [使用JavaScript开发插件](https://support.huaweicloud.com/devg-iothub/iot_02_0009.html)是指使用JavaScript脚本实现编解码的功能。2024年12月1日后新用户不再提供JavaScript插件功能，推荐使用FunctionGraph进行JavaScript脚本编写，详细请参考[FunctionGraph开发说明](https://support.huaweicloud.com/devg-iothub/iot_02_0011.html)。
 
#### 相关FAQ
[编解码插件相关问题](https://support.huaweicloud.com/iothub_faq/iot_faq_00018.html)
[什么是NB-IoT？](https://support.huaweicloud.com/iothub_faq/iot_faq_00200.html)
#### 相关最佳实践
[模拟NB设备智慧路灯的接入与调试](https://support.huaweicloud.com/bestpractice-iothub/iot_bp_0014.html)
