物联网产品框架:传统设备使用通信模组连接云服务器(即上云)做数据传输,云端再进行数据应用。本文将使用 BC28 通过 COAP 协议连接电信IOT平台,简单的介绍下移远NB-IOT通信模块 BC28 是如何连接电信IOT平台进行数据传输
NB-IOT业务主要包含NB-IoT设备、NB-IOT网络、物联网开放平台、垂直行业应用:
BC28 是移远的一款超紧凑、高性能、低功耗的多频段 NB-IoT 无线通信模块,支持 B1/B3/B8/B5/B20/B28 频段。其尺寸仅为17.7mm×15.8mm ×2.0mm,能最大限度地满足终端设备对小尺寸模块产品的需求,常被用于无线抄表、共享单车、智能停车、智慧城市、安防、资产追踪、智能家电、农业和环境监测以及其它诸多行业
电信IOT平台是实现对各种NB-IoT设备数据的统一管理,同时向第三方应用系统开放接口,让各种应用能快速构建自己的物联网业务
电信物联网平台包括应用管理、设备管理、系统管理等能力,实现统一安全的网络接入、各种终端的灵活适配、海量数据的采集分析,从而实现新价值的创造。
物联网平台不仅可以简化各类终端厂家的开发,屏蔽各种复杂设备接口,实现终端设备的快速接入;同时面向各行业提供强大的开放能力,支撑各行业伙伴快速实现各种物联网业务应用
设备的Profile文件是用来描述一款设备是什么、能做什么以及如何控制该设备的文件。每款设备都需要一个Profile文件
一个Profile文件的内容主要包括两部分,一部分是设备的基础属性信息,如manufacturerId(厂商ID)、manufacturerName(厂商名字)、deviceType(设备类型)、model(设备型号)、protocolType(协议类型)等;另一部分是设备的服务信息,这一部分定义了设备的业务数据,包括设备上报的上行数据和厂商服务器下发给设备的下行数据
Profile定义时,属性列表先新建服务,再添加属性;命令列表先添加命令,再添加命令下发字段
NB-IoT设备和中国电信物联网开放平台之间采用CoAP协议通讯,CoAP消息的数据为应用层数据,应用层数据的格式由设备厂商自行定义
由于NB-IoT设备对省电要求通常较高,所以应用层数据一般采用十六进制格式
应用层数据在中国电信物联网开放平台做协议解析时,会转换成统一的json格式,以方便应用服务器使用。
要实现十六进制消息与json格式消息的转换功能,中国电信物联网开放平台需要使用设备厂商提供的编解码插件,一款设备对应一个编解码插件
编解码插件开发时,先新建消息,包含数据上报和命令下发两条,再添加数据上报字段和命令下发字段
注:关于Profile定义和编解码插件开发多种多样,比如:多条数据上报消息的插件开发、字符串及可变长字符串数据类型的插件开发、数组及可变长数组数据类型的插件开发、含命令执行结果的编解码插件开发,具体开发的教程可查看电信官方文档:《中国电信物联网开放平台_NB-IoT业务对接指导书》
需将 Profile 和编解码插件建立映射关系
在使用模块对接平台之前,我们需要先使用平台的虚拟设备模拟测试下是否能正常数据上报和命令下发
添加真实设备,设备名称可自定义,设备标识需使用模块的IMEI(国际移动设备识别码),IMEI在模块的外壳上面有丝印,也可使用AT指令“AT+CGSN=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 地址
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平台
数据上报的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多秒才能进入空闲模式,在做低功耗时需要用到
命令下发不需要AT指令,但有一点需要注意:NB-IOT模块由于是面向低功耗领域的,长时间处于休眠状态,故云端下发命令时,NB-IOT模块不能及时接收到,只有当模块处于活动状态下才能接收到云端命令
基于NB-IOT模块的这个特性,平台提供两种命令下发机制:
电信IOT平台下发“ON”命令,设备端接收到“ON”的16进制数“4F4E”,命令下发成功