NB IoT中 CDP服务与CoAP关系解释

1450阅读 0评论2017-11-10 wonderfulpjz
分类:嵌入式

前言

最近(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等价

AT指令

在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

AT指令分析和疑惑

过程说明

NB模块内的CoAP资源

CoAP资源其实是一个逻辑上的概念,也可以称为路由(Nodejs中经常使用这种概念),或者称为Endpoint。NB IoT模块中包含一个CoAP服务器,和HTTP服务器不同在一个内存受限制的设备中实现一个CoAP服务器并不是一件难事。 - NB模块中包含了一个CoAP Server,并实现了CoAP Client(用于向CDP服务器注册)。 - NB模块中包含一个URL为“t/d”的资源(也可称为路由),该资源支持GET方法和POST方法 - NB模块中内的“t/d”支持**观察者模式**,可支持**订阅**

上行过程

上行过程包括注册过程、服务器订阅过程、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”提示

这里写图片描述

华为CDP服务器相关接口

华为没有还未发布过CoAP/TUP的相关接口,但是依然可以火狐浏览器中的Copper插件进行分析。 
- 通过GET方法访问 coap://117.60.157.137:5683/.well-known/core

这里写图片描述

LWM2M相关过程介绍

华为的TUP协议与LWM2M存在不少的区别。

LWM2M注册过程

LWM2M注册过程

LWM2M 读/写/执行过程

这里写图片描述

LWM2M信息上报过程

这里写图片描述

总结与分析

参考资料

上一篇:NB-IoT芯片厂模组厂都在这里 他的兄弟都有谁?
下一篇:STM32 GPIO外部中断总结