【我的物联网成长记21】IoT开发最全技巧之编解码插件离线开发(上)
什么是编解码插件
一款产品的设备上报数据时,如果“数据格式”为“二进制码流”,则该产品需要进行编解码插件开发;如果“数据格式”为“JSON”,则该产品下不需要进行编解码插件开发。
以NB-IoT场景为例,NB-IoT设备和物联网平台之间采用CoAP协议通讯,CoAP消息的payload为应用层数据,应用层数据的格式由设备自行定义。由于NB-IoT设备一般对省电要求较高,所以应用层数据一般不采用流行的JSON格式,而是采用二进制格式。但是,物联网平台与应用侧使用JSON格式进行通信。因此,您需要开发编码插件,供物联网平台调用,以完成二进制格式和JSON格式的转换。
编解码插件开发方式有:图形化、离线开发、脚本化开发。本文介绍如何通过离线方式开发编解码插件。
开发环境准备
Maven的配置涉及Windows环境变量的配置与在Eclipse中的配置,环境变量的配置请参考网上资源,本节仅介绍Maven在Eclipse中的配置。
1. 选择Eclipse菜单“Windows”->“Preferences”,打开Preferences窗口,选择“Maven”->“Installations”->“Add”。
2. 选择maven插件包路径,点击“Finish”,导入Maven插件。
3. 选择导入的maven插件,点击“OK”。
导入编解码插件Demo工程
下载编解码插件DEMO工程,在“source_code”文件夹中获取“codecDemo.zip”,将其解压到本地。
2. 打开Eclipse,右击Eclipse左侧“Project Explorer”空白处,选择“Import > Import...”。
3. 展开“Maven”,选择“Existing Maven Projects”,点击“Next”。
4. 点击“Browse”,选择步骤1解压获得的“codecDemo”文件夹,勾选“/pom.xml”,点击“Finish”。
实现样例讲解
导入的编解码插件Demo工程结构如下图所示。
本工程是一个Maven工程,您可在此样例工程的基础上修改如下部分,适配成自己需要的编解码插件。
修改Maven的配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 <modelVersion>4.0.0</modelVersion> <groupId>com.thrid.party</groupId> <!-- 请修改为你的编解码插件的名字,命名规范:设备类型-厂商ID-设备型号,例如:WaterMeter -Huawei-NBIoTDevice --> <artifactId>WaterMeter-Huawei-NBIoTDevice</artifactId> <version>1.0.0</version> <!-- 请检查这里的值为bundle,不能为jar --> <packaging>bundle</packaging> ...... <dependencies> ...... <!-- Huawei提供的编解码接口,必须引入 --> <!-- systemPath请替换成你本地的目录 \codecDemo\lib\com.huawei.m2m.cig.tup-1.3.1.jar --> <dependency> <groupId>com.huawei</groupId> <artifactId>protocal-jar</artifactId> <version>1.3.1</version> <scope>system</scope> <systemPath>${basedir}/lib/com.huawei.m2m.cig.tup-1.3.1.jar</systemPath> </dependency> ...... </dependencies><build><plugins> <!-- OSGI规范打包配置 --> <plugin> <configuration> <instructions> <!-- 请修改为你的编解码插件的名字,命名规范:设备类型-厂商ID-设备型号,例如:WaterMeter-Huawei-NBIoTDevice --> <Bundle-SymbolicName>WaterMeter-Huawei-NBIoTDevice</Bundle-SymbolicName> </instructions> </configuration> </plugin> </plugins> </build> </project> |
- 点赞
- 收藏
- 关注作者
评论(0)