分类: 嵌入式
2017-11-10 16:37:31
最近(2017年8月)NB IoT的实际应用越来越多,网络和微信公众号中出现了不少NB IoT的文章。NB IoT的介绍资料越来越多,NBIoT的模块也层出不穷。华为主推的Hi2110或许是2017年使用最为广泛的NB IoT模块,这款模块支持UDP通信和CoAP通信。UDP部分的描述非常清晰,该部分与常见的2G模块/3G使用较为相似,但是CoAP相关的AT指令很难体现CoAP特性,例如AT指令未指定CoAP请求方法、CoAP请求路由等等,CoAP的使用需要与华为CDP服务器配合,这让不少用户忽略了CoAP的细节而仅仅认为CoAP是个透传的通道。华为把这套CoAP通信机制成为TUP。TUP与LWM2M相似,借鉴了LWM2M注册、数据上报等过程,但是TUP并不能与LWM2M等价。
在NB IOT的AT指令文档中,大概可以分为终端向CDP发送数据,终端通过串口发送接收指示,终端读取CDP服务器发送而来的内容。更简单的说,终端支持上行发送和下行接收两种功能。
发送数据使用NMGS指令,发送数据也成为上行数据。发送是需要指定发送内容长度,发送内容也要格式化为HEX字符串。
# 发送10字节数据 AT+NMGS=10, AA7232088D0320623399
一旦终端收到来自CDP服务器的数据(也成为下行数据),NB终端打印+NNMI,提示已经收到数据。
# NB模块收到来自CDP服务器的数据 +NNMI
NB终端收到数据之后,通过AT+NMGR读取下行数据,NB终端将返回下行数据长度和HEX字符串。
AT+NMGR # NB模块返回,第一个数字提示数据包长度 2,AABB
那么是不是NB IoT和CoAP完全没有关系了,其实不是这样的!
上行过程包括注册过程、服务器订阅过程、NB终端向服务器发送指示等过程。
- 注册过程 NB终端向服务器r/d路由进行注册,query参数而ep=
- 华为CDP服务器将订阅NB终端t/d资源,等待NB终端向它发送指示
- NB终端一旦收到+NMGS指令,通过CoAP指令方式向CDP发送数据
- 该过程使用了CoAP的观察者模式
下行过程比上行过程简单,华为CDP服务器将使用POST方法向NB终端传递数据
- 华为CDP服务器作为CoAP Client,NB终端作为CoAP Server。
- 华为CDP服务器通过POST方法,把下行数据POST到NB终端t/d资源中
- NB终端收到数据后显示“+NNMI”提示
华为没有还未发布过CoAP/TUP的相关接口,但是依然可以火狐浏览器中的Copper插件进行分析。
- 通过GET方法访问 coap://117.60.157.137:5683/.well-known/core