Chinaunix首页 | 论坛 | 博客
  • 博客访问: 876244
  • 博文数量: 284
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1960
  • 用 户 组: 普通用户
  • 注册时间: 2014-05-04 16:41
文章分类

全部博文(284)

文章存档

2018年(5)

2017年(95)

2016年(69)

2015年(15)

2014年(100)

我的朋友

分类: 嵌入式

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等价

AT指令

在NB IOT的AT指令文档中,大概可以分为终端向CDP发送数据,终端通过串口发送接收指示,终端读取CDP服务器发送而来的内容。更简单的说,终端支持上行发送和下行接收两种功能。

发送数据

发送数据使用NMGS指令,发送数据也成为上行数据。发送是需要指定发送内容长度,发送内容也要格式化为HEX字符串。

# 发送10字节数据 AT+NMGS=10, AA7232088D0320623399
  • 1
  • 2

下载数据指示

一旦终端收到来自CDP服务器的数据(也成为下行数据),NB终端打印+NNMI,提示已经收到数据。

# NB模块收到来自CDP服务器的数据 +NNMI
  • 1
  • 2

读取下载数据

NB终端收到数据之后,通过AT+NMGR读取下行数据,NB终端将返回下行数据长度和HEX字符串。

AT+NMGR # NB模块返回,第一个数字提示数据包长度 2,AABB
  • 1
  • 2
  • 3

AT指令分析和疑惑

  • NB终端借助华为CDP服务器可实现上行数据和下行数据。
  • 从AT指令来看,无论是上行还是下行似乎都与CoAP无关,没有设置请求方法,例如GET、POST,没有指定URL,例如test,obs等,没有明显的响应码处理。 
    那么是不是NB IoT和CoAP完全没有关系了,其实不是这样的!

过程说明

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信息上报过程

这里写图片描述

总结与分析

  • 个人认为华为IoT平台的灵活性不够。华为有采用一个接口,一个通道,一个平台,一统江湖,捆绑用户的嫌疑。强势有余而开放不足。
  • 个人认为华为对于NB的推广立足点不对,总觉得给用户带来一个一统江湖的东西。其实NB可以给物联网工程师带来新的思维,新方法和新技术,最重要的使用新思维去解决物联网问题。例如CoAP/LWM2M可以解决设备联网、物联网服务器开发问题,CBOR(二进制JSON)可解决JSON数据压缩问题等等。
  • 华为的IoT平台依然给大家带来的老方法老思维,其实NB终端有足够的IP联网能力(节点的说它有IP地址),这是和Zigbee终端,Sigfox终端,LoRA终端的明显区别。

参考资料

阅读(1523) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~