物联网基础:BC28连接电信IOT平台进行数据传输


发布时间:2021-11-08 00:43

物联网产品框架:传统设备使用通信模组连接云服务器(即上云)做数据传输,云端再进行数据应用。[物联网基础:BC28连接电信IOT平台进行数据传输]。本文将使用 BC28 通过 COAP 协议连接电信IOT平台,简单的介绍下移远NB-IOT通信模块 BC28 是如何连接电信IOT平台进行数据传输

1 相关介绍

1.1 NB-IOT业务介绍

NB-IOT业务主要包含NB-IoT设备、NB-IOT网络、物联网开放平台、垂直行业应用:

  • NB-IOT设备:通过无线网络连接到中国电信物联网开放平台,采用CoAP协议接入,如水表、燃气表等
  • NB-IOT网络:实现对NB-IoT终端的移动性管理与会话管理;为NB-IoT终端建立用户面承载,传递上下行业务数据
  • 物联网开放平台:实现对各种NB-IoT设备数据的统一管理,同时向第三方应用系统开放接口,让各种应用能快速构建自己的物联网业务
  • 垂直行业应用:实现对NB设备的业务管理,包括业务发放、业务控制和呈现等,由第三方基于中国电信物联网开放平台开放接口进行开发

1.2 BC28 概述

BC28 是移远的一款超紧凑、高性能、低功耗的多频段 NB-IoT 无线通信模块,支持 B1/B3/B8/B5/B20/B28 频段。其尺寸仅为17.7mm×15.8mm ×2.0mm,能最大限度地满足终端设备对小尺寸模块产品的需求,常被用于无线抄表、共享单车、智能停车、智慧城市、安防、资产追踪、智能家电、农业和环境监测以及其它诸多行业

  • BC28 模块详细参数:
  • BC28 模块主要性能:

1.3 电信IOT平台

电信IOT平台是实现对各种NB-IoT设备数据的统一管理,同时向第三方应用系统开放接口,让各种应用能快速构建自己的物联网业务

电信物联网平台包括应用管理、设备管理、系统管理等能力,实现统一安全的网络接入、各种终端的灵活适配、海量数据的采集分析,从而实现新价值的创造。

物联网平台不仅可以简化各类终端厂家的开发,屏蔽各种复杂设备接口,实现终端设备的快速接入;同时面向各行业提供强大的开放能力,支撑各行业伙伴快速实现各种物联网业务应用

2 电信IOT平台创建产品

2.1 创建产品

  • 首页我的项目处创建项目,填写项目名称,选择所属行业即可
  • 创建产品,选择自定义产品
  • 填写产品信息,注意此处的应用层协议类型需选择 CoAP 协议,因为BC28只支持 CoAP 协议,不支持 LWM2M 协议

2.2 Profile定义

设备的Profile文件是用来描述一款设备是什么、能做什么以及如何控制该设备的文件。每款设备都需要一个Profile文件

一个Profile文件的内容主要包括两部分,一部分是设备的基础属性信息,如manufacturerId(厂商ID)、manufacturerName(厂商名字)、deviceType(设备类型)、model(设备型号)、protocolType(协议类型)等;另一部分是设备的服务信息,这一部分定义了设备的业务数据,包括设备上报的上行数据和厂商服务器下发给设备的下行数据

Profile定义时,属性列表先新建服务,再添加属性;命令列表先添加命令,再添加命令下发字段

  • 添加两个上报属性:temperature 和 humidity ,数据类型为 int
  • 添加一个命令下发字段:command,数据类型为 string

2.3 编解码插件开发

NB-IoT设备和中国电信物联网开放平台之间采用CoAP协议通讯,CoAP消息的数据为应用层数据,应用层数据的格式由设备厂商自行定义

由于NB-IoT设备对省电要求通常较高,所以应用层数据一般采用十六进制格式

应用层数据在中国电信物联网开放平台做协议解析时,会转换成统一的json格式,以方便应用服务器使用。

要实现十六进制消息与json格式消息的转换功能,中国电信物联网开放平台需要使用设备厂商提供的编解码插件,一款设备对应一个编解码插件

编解码插件开发时,先新建消息,包含数据上报和命令下发两条,再添加数据上报字段和命令下发字段

  • 添加两个数据上报字段:temperature 和 humidity ,数据类型选择 int16u(16位无符号整型)
  • 添加一个命令下发字段:command,数据类型选择 string(字符串类型)

注:关于Profile定义和编解码插件开发多种多样,比如:多条数据上报消息的插件开发、字符串及可变长字符串数据类型的插件开发、数组及可变长数组数据类型的插件开发、含命令执行结果的编解码插件开发,具体开发的教程可查看电信官方文档:《中国电信物联网开放平台_NB-IoT业务对接指导书》

2.4 建立映射关系

需将 Profile 和编解码插件建立映射关系

  • 拖动右侧“设备模型”区域的属性字段和命令字段,数据上报消息和命令下发消息的相应字段建立映射关系

2.5 虚拟设备测试

在使用模块对接平台之前,我们需要先使用平台的虚拟设备模拟测试下是否能正常数据上报和命令下发

  • 新建虚拟设备
  • 数据上报,若上报温度数据为20,湿度数据为18,则对应的16进制数据为0010012
  • 命令下发:若下发命令ON,设备端接收到16进制数据 4F4E
  • 虚拟设备能正常数据上报和命令下发,说明 Profile 定义和编解码插件开发没问题

2.6 添加真实设备

添加真实设备,设备名称可自定义,设备标识需使用模块的IMEI(国际移动设备识别码),IMEI在模块的外壳上面有丝印,也可使用AT指令“AT+CGSN=1”查询

3 NB-IOT模块通信

3.1 附着网络

BC28通过AT指令附着网络(即连接网络)的过程如下:当能查询到到模块的IP地址时,说明网络附着成功

注:若发送第一个指令“AT”,未返回“OK”的话,请检查是否选择了正确的串口,以及合适的波特率(BC28的串口波特率为9600)

序号 AT指令 指令解析 1 AT 测试指令,若返回OK,则模块可正常通信 2 AT+CPIN? 检查SIM卡是否在位 3 AT+CSQ 查询信号质量 4 AT+CGATT=1 触发网络连接 5 AT+CEREG? 查询网络注册状态 6 AT+CGATT? 查询网络附着状态 7 AT+CGPADDR 查询模块的 IP 地址

3.2 连接电信云

BC28通过AT指令连接电信IOT平台的过程如下:当发送AT指令“AT+QLWSREGIND=0”返回“+QLWEVTIND:3”时,代表设备已连接上电信IOT平台

序号 AT指令 指令解析 1 AT+NCDP=180.101.147.115,5683 设置 IoT 平台 IP 地址及端口 2 AT+QLWSREGIND=0 开始注册 IoT 平台

在电信IOT平台上设备的状态变为“在线”,代表设备已连接上电信IOT平台

3.3 数据上报

数据上报的AT指令为“AT+QLWULDATAEX”,看看官方AT指令手册对它的描述

使用AT指令为“AT+QLWULDATAEX”发送数据,当接收到“+QLWULDATASTATUS:4”表示数据发送成功

序号 AT指令 指令解析 1 AT+QLWULDATAEX=4,00140012,0X0100 发送CON 消息(00140012), IoT 平台需要应答 ACK 消息

在电信IOT平台可以看到上报的数据:{ "temperature": 20, "humidity": 18 }

注:消息发送模式选择带释放辅助提示时,表示模块在发送完数据之后将释放连接以进入空闲模式,否则模块会持续20多秒才能进入空闲模式,在做低功耗时需要用到

3.4 命令下发

命令下发不需要AT指令,但有一点需要注意:NB-IOT模块由于是面向低功耗领域的,长时间处于休眠状态,故云端下发命令时,NB-IOT模块不能及时接收到,只有当模块处于活动状态下才能接收到云端命令

基于NB-IOT模块的这个特性,平台提供两种命令下发机制:

  • 立即下发:平台立即发送收到的命令,如果设备不在线或者设备没收到指令则下发失败。立即下发适合对命令实时性有要求的场景,比如路灯开关灯,燃气表开关阀。使用立即下发时,应用需要自己保证下发的时机
  • 缓存下发:平台收到命令后放入队列。在设备上线的时候,平台依次下发命令队列中的命令。缓存下发适合对命令实时性要求不高的场景,比如配置水表的参数。缓存下发平台根据设备的省电模式进行不同处理,缓存时间默认为48小时

电信IOT平台下发“ON”命令,设备端接收到“ON”的16进制数“4F4E”,命令下发成功