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

背景

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

1.直接传输UDP数据

这种方案是最简单无脑的,只要在购买NB卡的时候向客服说明需要绑定的IP地址,就可以在开发中直接发送UDP数据包到自己的服务器端。在这种方案下,还可以参考NB-IoT使用笔记(5)在linux下用python搭建UDP转发服务器扩展NB可访问IP个数 -优快云博客在服务器端架设一个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.youkuaiyun.com/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.youkuaiyun.com/a1668659995/article/details/78742521

NB-IoT现阶段访问一个服务器只能通过IP地址加端口的方式,省去了DNS解析,如果产品以后的IP变化或者改变了服务端的IP地址,就需要一个DNS解析的功能。 通过DNS解析某个域名的IP地址,获取到IP地址后再进行通信。 如果NB-IoT模块只能绑定一个IP,则可以通过这个IP先获取其他IP列表,然后统一经过这个IP进行转发。 参考: 1.1.2 NB卡准备 模组使用的SIM卡为中国电信物联网专用NB卡,如下图正面(留意NB字样,无此字样的均为不合法的NB卡): 背面(留意其ICCID号,在让运营商开放IP白名单时可能需要此号码,相当于手机卡的手机号): 重要:收到卡后,需要致电背面的客服电话, 使其将您自己的IP地址加入访问白名单,此一步完成后,方能进行下面的步骤,切记切记 。 如何判定服务器IP已被加入访问白名单,使用如下两种方式: 1. AT+NPING 指令,通过PING自己的服务器地址,如返回ERROR,则多半(尚需继续排除防火墙因素)未就绪; 2. UDP通讯,如能与自己的服务器直接连接UDP通讯,那可以证明一定就绪; 1.1.3 服务器准备  首先您需要有一个固定IP的公网服务器,由于目前BC95暂不支持域名解析,故必须使用IP地址配置方式。  服务器可以使用阿里云服务器,目前本CoAP端暂未开源,有Windows 32位、Windows 64位、Linux CentOS 6、CentOS 7的可执行文件,请暂时选择以上指定系统;  CoAP标准协议使用 UDP 5683 端口,当然您也可以自定义此端口,必须让防火墙放通UDP 的指定端口;  CoAP网关需要使用WEB方式进行设备管理、用户管理等,默认使用 TCP 8080 端口,同 理,防火墙必须放通此端口; 1.1.4 模组准备 推荐使用 串口调试助手 sscom 来调试NB模组,如下,首先将您的NB模组上电使其启动,使用AT指令能收到OK的回复,证明已启动完毕,按如下步骤进行: 基础配置 1. 配置 NCDP 服务器,使用的指令序列为 AT+CFUN=0 +NCDP=103.37.149.19,5683 AT+NRB 留意 IP 地址必须为您自己指定的IP地址,如果暂时没有,也可以用 如上 地址临时使用(但 WEB 设备管理地址也需换成这个IP),完成后重启了设备; 2. 等待设备附着网络后,使用 AT+NPING=103.37.149.19 尝试PING自己的服务器,当返回ERROR时,极有可能是 IP 白名单未成功配置的缘故; 3. 使用 AT+CGSN=1 查询设备 IMEI 号,并将设备的 IMEI 注册到 WEB 平台,如果在上面操作 过,可忽略。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值