一、按照《中国电信物联网开放平台编解码库开发与升级指南.pdf》文档来操作;
二、在完成profile文件的编写条件下,根据已有的编解码插件codecdemo来修改
其中包含几个重要文件:
- CmdProcess.java
修改serviceI
- ProtocolAdapterImpl.java (代码实现,包含实现接口IProtocolAdapter的类)
修改厂商名称和设备型号
- ReportProcess.java (上报程序)
修改填写私有字段
- ProtocolServiceImplTest.java(测试用例)
- 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 包。
- 制作插件包
1、将编解码 jar 包和描述文件打包成 ZIP 格式的插件包。
2. 新建文件夹命名为"package",包含一个 preload/子文件夹。
3. 在"package"文件夹中,新建 package-info.json 文件。插件包目录结构如图所示。
package-info.json 文件模板如下:
4.选中"package"文件夹中的全部文件,使用 winRAR 等压缩工具打包成 ZIP 格式的
压缩包 package.zip(注意 package.zip 下不能包含 package 这层目录,如图所
示)。
5.使用离线签名工具对 package.zip 进行签名,然后可以通过 IoT 联接管理平台安装
编解码插件。待签名的软件包存放的路径请勿包括中文,否则会验签失败。
参考《NB-IoT编解码插件检测工具使用说明.pdf》
- 使用本地工具signtool测试插件和profile文件,详见《NB-IoT编解码插件检测工具使用说明.pdf》
若检测正确即可以向OceanConnect平台上传profile和编解码插件
- 注册设备
1、登录OceanConnect平台,单击“我的设备 > 注册设备”,即可看到应用下所有已上传的Profile,单击选中需要注册设备对应的Profile。
2、在Profile详情页,填写“设备名称”和“设备标识码”,单击“注册”按钮注册设备。
设备名称:用于区分不同设备,名称可自定义(如NBLightbox)。
设备标识码:设备唯一标识。使用NB模组对接时,填写模组的IMEI号码。
- 单击“我的设备”,查看对应设备是否注册成功。如果注册成功,可以看到设备处于“OFFLINE”状态。
- 终端入网
终端入网的详细步骤如下所示:
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平台,点击我的设备->设备详情->历史数据)
在实际应用中,数据到达平台后,可以通过两种方式在应用服务器中接收数据:
1.调用数据查询类接口,从平台取出缓存的数据至应用服务器。
2.调用订阅接口,设置好推送地址,数据到达平台后会按照既定的IP地址将主动将数据推送至应用服务器。