【我的物联网成长记21】IoT开发最全技巧之编解码插件离线开发(上)

举报
我是卤蛋 发表于 2020/10/28 16:34:05 2020/10/28
【摘要】 什么是编解码插件一款产品的设备上报数据时,如果“数据格式”为“二进制码流”,则该产品需要进行编解码插件开发;如果“数据格式”为“JSON”,则该产品下不需要进行编解码插件开发。以NB-IoT场景为例,NB-IoT设备和物联网平台之间采用CoAP协议通讯,CoAP消息的payload为应用层数据,应用层数据的格式由设备自行定义。由于NB-IoT设备一般对省电要求较高,所以应用层数据一般不采用流...

什么是编解码插件

一款产品的设备上报数据时,如果“数据格式”“二进制码流”,则该产品需要进行编解码插件开发;如果“数据格式”“JSON”,则该产品下不需要进行编解码插件开发

以NB-IoT场景为例,NB-IoT设备和物联网平台之间采用CoAP协议通讯,CoAP消息的payload为应用层数据,应用层数据的格式由设备自行定义。由于NB-IoT设备一般对省电要求较高,所以应用层数据一般不采用流行的JSON格式,而是采用二进制格式。但是,物联网平台与应用侧使用JSON格式进行通信。因此,您需要开发编码插件,供物联网平台调用,以完成二进制格式和JSON格式的转换。

编解码插件开发方式有:图形化、离线开发、脚本化开发。本文介绍如何通过离线方式开发编解码插件。

开发环境准备

  • 前往官网下载Eclipse安装包,直接解压缩到本地即可使用。

  • 前往官网下载Maven插件包(zip格式),直接解压缩到本地。

  • 安装JDK并配置Java的开发环境。

Maven的配置涉及Windows环境变量的配置与在Eclipse中的配置,环境变量的配置请参考网上资源,本节仅介绍Maven在Eclipse中的配置。

    1. 选择Eclipse菜单“Windows”->“Preferences”,打开Preferences窗口,选择“Maven”->“Installations”->“Add”。

    2. 选择maven插件包路径,点击“Finish”,导入Maven插件。

    3. 选择导入的maven插件,点击“OK”。

    导入编解码插件Demo工程

    1. 下载编解码插件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工程,您可在此样例工程的基础上修改如下部分,适配成自己需要的编解码插件。

    1. 修改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>


    【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
    • 点赞
    • 收藏
    • 关注作者

    评论(0

    0/1000
    抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。