NB-IoT使用笔记(6)在linux下使用搭建CoAP服务(2)

背景

随着对NB-IoT模块的生态了解得越来越多,对于NB应用的平台实现方案有了更加实际的认识——简单来说,就是如何得到NB-IoT模块的数据。这里将目前知道的几种方式做一个总结:

1.直接传输UDP数据

这种方案是最简单无脑的,只要在购买NB卡的时候向客服说明需要绑定的IP地址,就可以在开发中直接发送UDP数据包到自己的服务器端。在这种方案下,还可以参考NB-IoT使用笔记(5)在linux下用python搭建UDP转发服务器扩展NB可访问IP个数 -CSDN博客在服务器端架设一个UDP转发端口扩展IP个数。 
这种方案优点是更加灵活、成本低、数据都是自己的、可扩展性高(可以在UDP 上层实现其他稳定的传输协议,如CoAP)、前期开发简单不用考虑接入其他平台那些繁琐的流程;当然缺点也很明显,后期开发难度加大,需要自己建立传输协议、数据库、API调用方案等等,而且在最近的测试过程中发现,NB现阶段的数据包并不是每个都能成功发送或接收到(因此此方案实现更上一层稳定的传输协议也是必然的)。

2.实现自己的私有CoAP网关

前一个方案有提到,在UDP协议的基础上可以自己实现一个CoAP协议满足传输稳定性的需求,但是对于NB-IoT来说这就属于重复造轮子的工作,既然NB-IoT已经自带了CoAP层的实现,自己再在UDP封装一层就有点傻了。 
因此第二种方案是实现对NB-IoT模块CoAP数据包的服务器端接口开发,如果实现以后,数据也是自己的,而且用到了NB-IoT原生的CoAP;但是缺点是,目前阶段,开发一个这样的CoAP网关相关的支持文档很少,只能从各个支持NB-IoT的大型物联网开放平台(如华为和电信平台等)提供的平台接口中一瞥其种的细节。

3.对接大型的NB-IoT开放平台

这种方案,从各个大的运营商和开发商的推广力度来说,很可能成为今后的主流,开发流程如下(图片来自 中国电信物联网开放平台_NB-IoT业务对接指导书): 
这里写图片描述
首先需要申请平台的使用资格,然后就是集成开发阶段(根据设备数据编写profile文件、编写编解码插件、开发应用服务器等),实现南向和北向的开发即可。 
这个方案当然是最传统的一个,大势所趋。拿现在接触到的华为和电信平台来说,官网提供的开发文档、开发工具以及技术服务还是不错的,相比来说开发者能够将重点集中到对于数据的应用上而不是数据协议的开发和解析中。缺点呢,最主要的就是数据问题,每一条CoAP数据都会传到开放平台,也许是他们的大棋23333~

4.搭(购)建(买)私有的开放平台

这个方案也是无意中发现的,目前也就发现了一例——uenbiot。该平台实现了无脑搭建的流程,不用知道什么是CoAP,在自己的服务器上轻松实现方案2,实现了对于NB-IoT的CoAP对接,后台数据库以及用户、应用、设备和数据管理,最后是API接口的实现(这个功能当前不开放给自建服务器,只有https://iot.useease.com 可以,以后会通过购买license的方式开放给自建服务器)。 
作为最后一个方案(也许以后还会有更多),此方案实现了方案3的大部分重要功能,而且数据都是私有的,花点money开放API接口,或者干脆自己读取该应用生成的数据库(免费党和技术党的福利^_^)。

下面的内容我将应uenbiot开发者的意愿,介绍一下这个平台简单的安装和以及做一些简单测试。


预备知识

无脑操作,当然NB-IoT的数据收发时要使用到已经绑定自己服务器NB模块。


安装与测试

安装uenbiot

查看机器类型

uname -a
  • 1

返回

Linux VM_127_26_centos 2.6.32-573.18.1.el6.x86_64 #1 SMP Tue Feb 9 22:46:17 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
  • 1

这里我的搭建平台是64位的linux,这个应用支持windows以及linux等很多平台: 
这里写图片描述
下载地址:https://pan.baidu.com/s/1hsGd5Gw 
或者赏我两资源分在这下载:http://download.csdn.net/download/a1668659995/10149791 
下载完成以后,通过FTP或者Samba上传到自己的服务器,再转移到安装目录。 
解压缩并修改文件为可执行属性

gunzip -c uenbiot-linux-amd64.gz > uenbiot
chmod +x uenbiot
ls
  • 1
  • 2
  • 3

结果如下 
这里写图片描述

运行uenbiot

./uenbiot
  • 1

安装GLIBC_2.14

第一次运行可能出现找不到GLIBC_2.14的错误 
这里写图片描述

下载2.14的安装包

wget http://ftp.gnu.org/gnu/libc/glibc-2.14.tar.gz
tar  -zxvf glibc-2.14.tar.gz
  • 1
  • 2

编译安装

cd glibc-2.14
mkdir build
cd build
../configure --prefix=/opt/glibc-2.14
make -j4
make install
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

临时修改环境变量

export LD_LIBRARY_PATH=/opt/glibc-2.14/lib:$LD_LIBRARY_PATH 
  • 1

GLIBC_2.14安装完成

后台运行uenbiot

这里让uenbiot在后台运行,并且输出信息转到log文件中

nohup ./uenbiot > mesg.log &
  • 1

如果正常的话,可以看到log信息如下

vim mesg.log
  • 1

这里写图片描述 
可以看到,统一目录下生成了 mesg.log 、 run.pid 、uenb.db 、nbgw.log四个文件,其中mesg.log可以看到应用调试信息、设备和平台的数据交互等内容,run.pid是程序进程号,uenb.db是生成的后台数据库,含有用户信息、设备信息、数据信息等,nbgw.log是比mesg.log更加详细的调试信息。

测试uenbiot页面

访问http://{domain}:8080/simple/portal/#/login,点击右上角使用邮箱注册一个账号,然后登陆,页面如下: 
这里写图片描述
点击应用管理,并在右侧的新增应用中,填入应用名称与备注信息,点击新增,新增APP成功后,如下图所示 
这里写图片描述
成功后继续点击左侧导航栏的设备管理,使用设备的IMEI,即模组编号为模组虚拟号,点击新增设备,利益选择设备所属的APP,否则无法新增。 
这里写图片描述

测试uenbiot与NB-IoT设备交互

打开NB设备通过串口发送数据: 
查询IMEI,并记录:AT+CGSN=1

查询CDP服务器地址:AT+NCDP? ,如果返回 {服务器IP地址},5683 则可以直接发送数据,否则需按如下步骤配置服务器地址: 
关闭无线:AT+CFUN=0 
配置服务器地址:AT+NCDP=119.23.233.222 
重启NB:AT+NRB 
重启后,等待网络附着,待返回 +CGATT:1 后即可发送数据。

上传数据:

发送数据:AT+NMGS=11,48454C4C4F2C574F524C44,发送HELLO,WORLD数据,留意,第一次发送数据可能会有几秒钟的延迟。 
在WEB上点击会话数据,即可查看收到的数据 
这里写图片描述

下发数据

配置,当收到CoAP数据后直接发送到串口:AT+NNMI=2 
在网页端的设备管理需要发送的设备后面点击下行数据,选择ASCII,键入数据 
这里写图片描述 
确定后,可以在NB端看到有下行数据:+NNMI,发送AT+NMGR接收数据 
这里写图片描述

查看uenbiot数据库

当然,如果没有license的话,可以找作者买,或者直接使https://iot.useease.com 平台,就可以调用API了,这里放一个API调用的运行截图 
这里写图片描述
如果想免费,也可以根据生成的数据库文件自己实现一个API接口。 
贴一张数据库的可视化界面,使用的是Firefox浏览器的sqlitemanager工具 
这里写图片描述

关于CoAP网关的搭建详细的介绍以及文档获取,可以QQ加群519497872交流。 
在最后,膜拜一下作者,O(∩_∩)O哈哈~


转载请注明出处

转自https://blog.csdn.net/a1668659995/article/details/78742521

你可能感兴趣的:(NBIoT,物联网,udp,网络技术)