版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:/m0_38106923/article/details/89852829
目录
1、华为 NB-IoT CoAP总体方案拓扑
2、华为IoT平台环境搭建
3、NB-IoT上传数据到云平台
BC95的CoAP测试需要云平台配合,当前的支持CoAP协议的平台有华为OceanConnect平台、电信天翼云(除了 Logo 其他和华为的一样)、移动 OneNet等。此教程以华为的OceanConnect 平台为例进行测试。下面我将就平台申请、平台测开发、NB-IoT实验开发板与平台的收发测试做出详细介绍。
1、华为 NB-IoT CoAP总体方案拓扑
华为提供NB-IoT端到端解决方案的支持,提供多种开放能力供合作伙伴快速集成应用。提供海思的NB-IoT芯片,基站网络和Ocean Connect连接管理平台。开发者可以根据芯片/模组开发手册进行终端的开发,基于IoT平台进行APP Server开发。
Device:NB-IoT终端(如智能水表、智能气表等)通过空口连接到eNodeB。eNodeB:主要承担空口接入处理和小区管理等相关功能,通过S1-lite接口与IoT核心网进行连接,将非接入层数据转发给高层网元处理。IoT Core:承担与终端非接入层交互的功能,将IoT业务相关数据转发到IoT平台进行处理。IoT Platform:IoT联接管理平台汇聚从各种接入网得到的IoT数据,根据不同类型转发给相应的业务应用进行处理。APP Server:是IoT数据的最终汇聚点,根据客户的需求进行数据处理等操作。
从总体拓扑中可以看到,华为在这里放置了一个CoAP Server,所有使用CoAP的模组,都得先连接到华为这边。
当然,有办法绕过这个限制,那就是不使用模组内置的CoAP相关的AT指令。
自己在UDP基础上做这个协议。
2、华为IoT平台环境搭建
第1步:登录华为云平台,官网:/。
第2步:注册账号,可以申请企业账号和个人账号,这里我申请个人账号。
第3步:实名认证,华为云认证个人信息。
选择合适的认证方式,支持银行卡、身份证扫码、个人证件认证三种方式,这里使用扫码认证。
第4步:选择“开发者”—>“开发者资源”—>“资源”—>“IoT专区”,开通IoT业务(使用开发者资源是免费的,但是创建项目有限,适合新手练习)。
第5步:创建项目,填写项目信息。
第6步:创建产品,填写相关信息。
用户可以选择华为云提供的不同类型产品:灯、电表等,用户也可以自定义产品。
点击自定义产品后,会弹出设置产品信息的框,协议类型选择CoAP的二进制码流。
第7步:定义Profile,设备的 Profile 文件是用来描述设备类型和设备服务能力的文件。定义了同一类设备具
备的服务能力,属性,命令等。
“新建服务”—>创建属性(获取传感器数据)和命令(云平台下发控制设备)。
新增属性,这里模拟创建一个光照传感器,具体参数说明如下:
属性名(propertyName):指示属性名称。属性类型(dataType):指示数据类型,取值范围:int、float、datetime、string、jsonObject、array。这里以 int 类型为例。上报数据时,复杂类型数据格式如:DateTime:yyyyMMdd’T’HHmmss’Z’如:1212T121212Z 、 jsonObject:自定义 json 结构体,平台不理解只透传。最小(min)/最大值(max):指示最小/最大值,仅当 dataType 为 int、float 时生效,逻辑大于等于/小于等于。步长(step):指示步长,暂不使用,可填 0 即可。单位(unit):指示单位,英文,取值根据参数确定。如:温度单位:“°C”;百分比单位:“%”。访问模式(method):指示访问模式。R:可读;W:可写;E 可订阅。取值范围:R、RW、RE、RWE、null。
新增下发命令,这里模拟创建一个LED灯控制器,具体参数说明如下:
长度(maxLength):指示字符串长度,仅当 dataType 为 string、datetime、jsonObject、array 时生效。枚举值(enumList):如LED灯属性 ,0,1:0代表关闭LED灯,1代表打开LED灯。
保存Profile文件。
第8步:开发完 Profile 文件后,可以在界面上通过图形化的方式完成设备与平台之间的消息映射。在平台中预集成了编解码插件的模板,可以根据设备类型和接入协议在插件模板中选择模板修改开发编解码插件。
制作编解码插件,点击“新增消息”,这里有两种模式:数据上传和命令下发,分别对应第7步中创建的光照传感器属性和LED灯控制器命令。
在第7步中设置的光照传感器范围为0~100的整形数据,所以建立的消息映射也要对应,长度为1,偏移为0—1(若长度为2,偏移就为0—2,这个可以看作存储空间)。
LED灯控制器对应第7步,创建有开关两种状态的字符串类型数据,0代表关,1代表开。
第9步:部署插件与profile建立映射关系。
第10步:新建测试设备
这里侧重设备端的开发工作,华为云平台为了方便大家调试,提供了虚拟设备和真实准备两种渠道来调试之前编写profile的正确性,其中虚拟设备不需要任何硬件就可以在华为的网站上虚拟出一个设备,可以收发数据,真实设备自然就是指的是NB模块。
首先为了验证我们的写的profile的正确性,这里先创建一个虚拟设备,进行调试。
进入刚刚创建的设备,进行调试,由于模拟器以及NB-IoT数据都是ASCII的十六进制数据,上传光照数据和下发LED灯控制状态否会转换对应的十六进制。
同时也能在设备详情中查看到历史的发送数据。
到此为止,如果都正常的情况下,说明华为OC云端服务器配置已经完成,而且验证成功。
3、NB-IoT上传数据到云平台
第1步:配置云平台硬件设备
上面讲述的是模拟设备,这里我们使用真实的硬件设备,在使用之前需要注册设备。
设备名称可以自定义,验证码是唯一的,必须使用模块的IMEI号,这个IMEI号印刷在模块上(86打头的数据),也可以使用串口调试助手通过AT指令(“AT+CGSN=1”)获取模块的的IMEI号,然后点击创建,不使用模块的IMEI号,会导致NB模块无法对接云平台
刚刚创建的的设备,其状态是离线的,需要模块发送上报数据一次数据 。
第2步:测试NB-IoT模块
针对不同的模块可能有些差异,模块上电之后,发送AT可以有OK返回,表示通信正常,执行指令:AT+CEREG?,一定要注网成功之后才能进行后续的网络操作,否则都是失败 。
第3步:NB-IoT模块上传数据
NB-IoT模块上传数据只需要两步:第一步使用AT+NCDP指令配置服务器地址,第二步使用AT+NMGS指令发送数据。
配置服务器地址。
配置成功后,发送数据指令,十六进制46为十进制70,实质上传到华为云的数据为70。
接收到数据后,华为云设备为在线状态。
进入设备查看上传的的信息 。
向NB-IoT设备下发控制指令。
NB-IoT接收到的数据为字符串数值“1”,转换为十六进制为0x31,注意:NB-IoT采用低功耗模式,发送完数据后就会休眠,所以云端下发的数据是在下一次上传数据成功后,才会下发到设备。