热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

NBIOT编解码插件开发流程上行数据(基于华为电信物联网平台)

一、按照《中国电信物联网开放平台编解码库开发与升级指南.pdf》文档来操作;二、在完成profile文件的编写条件下,根据已有的编解码插件codecdemo来修改其中包含几个重要文

一、按照《中国电信物联网开放平台编解码库开发与升级指南.pdf》文档来操作;

二、在完成profile文件的编写条件下,根据已有的编解码插件codecdemo来修改

其中包含几个重要文件:

  1. CmdProcess.java

   修改serviceI

  1. ProtocolAdapterImpl.java   (代码实现,包含实现接口IProtocolAdapter的类)

   修改厂商名称和设备型号

  1. ReportProcess.java (上报程序)

   修改填写私有字段

  1. ProtocolServiceImplTest.java(测试用例)
  2. Pom.xml(Maven的配置文件)

均需按照要求及我们自己在profile文件中的定义来修改

 

三、修改完成之后进行编解码 maven 打包

 (在此之前要做好搭建 eclipse+Java+mvn 插件开发环境工作)

参考:Maven的安装及配置:

https://jingyan.baidu.com/article/d8072ac45d3660ec94cefd51.html

JDK环境变量配置:(若之前已经配置好则不需要)

https://jingyan.baidu.com/article/ca41422fe3b7261eae99edc6.html

 

完成插件编程后使用 maven 进行打包, windows 中步骤如下:
a
. 打开 DOS 窗口,进入 pom.xml 所在的目录;
b
. 输入 maven 打包命令: mvn package
c. DOS 窗口中显示“BUILD SUCCESS”后,打开与 pom.xml 目录同级的 target 文件
夹,获取打包好的
jar
打包后的结构如图所示, 注意
jar 的命名规范:设备类型–厂商 ID-设备型号–
.jar,例如: Lightbox_Huawei_NBDevice-1.0.0.jar
1. com 目录存放的是 class 文件。
2. META-INF 下存放的是 OSGI 框架下的 jar 的描述文件(根据 pom.xml 配置生成
的)。

3. OSGI-INF 下存放的是服务配置文件,把编解码注册为服务,供平台调用。
4.其他 jar 是编解码引用到的 jar 包。

《NBIOT编解码插件开发流程---上行数据(基于华为电信物联网平台)》

  • 制作插件包
    1、将编解码 jar 包和描述文件打包成 ZIP 格式的插件包。
    2. 新建文件夹命名为”package”,包含一个 preload/子文件夹。

3. 在”package”文件夹中,新建 package-info.json 文件。插件包目录结构如图所示。

《NBIOT编解码插件开发流程---上行数据(基于华为电信物联网平台)》

package-info.json 文件模板如下:

 《NBIOT编解码插件开发流程---上行数据(基于华为电信物联网平台)》

4.选中“package”文件夹中的全部文件,使用 winRAR 等压缩工具打包成 ZIP 格式的
压缩包
package.zip(注意 package.zip 下不能包含 package 这层目录,如图所
示)。

《NBIOT编解码插件开发流程---上行数据(基于华为电信物联网平台)》

5.使用离线签名工具对 package.zip 进行签名,然后可以通过 IoT 联接管理平台安装
编解码插件。待签名的软件包存放的路径请勿包括中文,否则会验签失败。

参考《NB-IoT编解码插件检测工具使用说明.pdf》

 

  • 使用本地工具signtool测试插件和profile文件,详见《NB-IoT编解码插件检测工具使用说明.pdf》

若检测正确即可以向OceanConnect平台上传profile和编解码插件

 

  • 注册设备

1、登录OceanConnect平台,单击“我的设备 > 注册设备”,即可看到应用下所有已上传的Profile,单击选中需要注册设备对应的Profile。

《NBIOT编解码插件开发流程---上行数据(基于华为电信物联网平台)》

2、在Profile详情页,填写“设备名称”和“设备标识码”,单击“注册”按钮注册设备。

设备名称:用于区分不同设备,名称可自定义(如NBLightbox)。

设备标识码:设备唯一标识。使用NB模组对接时,填写模组的IMEI号码。

 

  1. 单击“我的设备”,查看对应设备是否注册成功。如果注册成功,可以看到设备处于“OFFLINE”状态。

 

  1. 终端入网

终端入网的详细步骤如下所示:

Step 1:终端上电,执行“AT+NRB”复位终端。如果返回OK,表示终端正常运行。

Step 2:执行“AT+CFUN=0”关闭功能开关。如果执行成功,返回OK。

Step 3:执行“AT+NTSETID=1,设备ID”设置设备ID。设备ID为NB模组的IMEI号,如果执行成功,返回OK。 我们这里是“AT+NTSETID=1,863703034540745 863703034511811

Step 4:执行“AT+NCDP=IP, PORT”设置需要对接IoT平台的地址,端口为5683。如果执行成功,返回OK。 我们这里是“AT+NCDP=180.101.147.115,5683

Step 5:执行“AT+CFUN=1”开启功能开关。如果执行成功,返回OK。

Step 6:执行“AT+NBAND=频段”设置频段。如果执行成功,返回OK。频段信息可以咨询NB模组厂商。 我们这里是“AT+NBAND=5

Step 7:执行“AT+CGDCOnT=1,“IP”,“APN”设置核心网APN。如果执行成功,返回 OK。核心网APN可联系运营商(与运营商网络对接时)或者OpenLab负责人(与OpenLab网络对接时)进行获取。(注:此步骤可省略)

Step 8:执行“AT+CGATT=1”进行终端入网。如果执行成功,返回OK。

Step 9:执行“AT+CGPADDR”查询终端是否获取到核心网分配的IP地址,如果获取到IP地址,表示终端入网成功。

Step 10:执行“AT+NNMI=1”设置下行数据通知功能,如果执行成功,返回OK

 

5、数据上报

串口工具中上报数据

执行“AT+NMGS=7,00002016050101”发送上行数据,如果上行数据发送成功,返回OK。由于设置了 “AT+NNMI=1”,如果编解码插件中写了IoT平台对上报数据的应答,则上行数据发送成功后会自动获取应答数据。

上报数据的AT命令为:AT+NMGS=7,00002016050101。具体解析如下:

1. AT+NMGS=N,XXXXXXXXXX为上报数据的AT命令格式,其中“N”表示一共上报几个字节,后面为具体的上报字节内容,以十六进制字符串表示。这些需要提前在编解码插件中写好。

2. 本例中,一共上报7个字节,分别为“00”、“00”、“20”、“16”、“05”、“01”、“01”。其中,第一个字节“00”表示上报数据deviceReq,第二个字节“00”表示没有后续数据

第三个字节“20”表示temperatureCur(当前温度32),第四个字节“16”表示humidityCur(当前湿度22),第五个字节“05”表示batteryCur(当前电压值5V),第六个字节“01”表示lock1State(锁1状态关闭),第七个字节“01”表示lock2State(锁2状态关闭)。

注:这些内容与profile文件和编解码插件是一一对应的。

由于本例中的编解码插件写了上报数据应答,在上报数据成功后会收到“+NNMI:4,00000000”的应答。(ACK后面还需修改)

 

6、 IoT平台中查看数据

Step 1 登录SP Portal,点击菜单“设备管理 > 设备”,可看到注册设备已由“离线”状态变为“在线”状态。

Step 2 单击与deviceId对应的注册设备,进入”设备列表 > 网关”页。

Step 3 在”设备列表 > 网关”页,选择”数据”项,即可看到已经上报且被解析后的json数据。

(或者OceanConnect平台,点击我的设备->设备详情->历史数据)

《NBIOT编解码插件开发流程---上行数据(基于华为电信物联网平台)》

 

在实际应用中,数据到达平台后,可以通过两种方式在应用服务器中接收数据:

1.调用数据查询类接口,从平台取出缓存的数据至应用服务器。

2.调用订阅接口,设置好推送地址,数据到达平台后会按照既定的IP地址将主动将数据推送至应用服务器。

 


推荐阅读
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • 本文介绍了Sencha Touch的学习使用心得,主要包括搭建项目框架的过程。作者强调了使用MVC模式的重要性,并提供了一个干净的引用示例。文章还介绍了Index.html页面的作用,以及如何通过链接样式表来改变全局风格。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
author-avatar
小鱼儿太疯癫
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有