硬件形态为MCU+模组上云主要可以通过两种方式,一种方式是使用支持TCP/IP协议的模组,在MCU集成SDK;另一种是直接使用集成了MQTT协议的模组,推荐使用第二种方式,可以缩短研发周期有助于产品快速推向市场,很多厂家的模组已经集成了阿里云的SDK,本次调试主要对已认证模组移远的NB模组BC26进行评估。
一、在阿里云物联网平台新建产品和添加设备
在后面接入设备时需要用到三要素:ProductKey,DeviceName,DeviceSecret
ProductKey会在新建产品时生成,DeviceName可以自己定义,应该是只支持英文和数字,DeviceSecret会在添加设备完成后自动生成。
产品数据格式推荐使用:ICA 标准数据格式 (Alink JSON)
二、定义topic类型
topic可以设置发布和订阅的权限,
发布权限即设备可以针对该topic发布消息
订阅权限即设备可以通过订阅该topic来获取消息
topic同一时刻只能容许一个终端操作。
新建产品后会有默认的topic
通过自定义topic上报的数据,不会保存到数据存储里,
调试中用物模型通信Topic:
向/sys/a1a5PGBURb2/${deviceName}/thing/event/property/post 发布消息后(使用Alink JSON发布消息)
如果订阅了/sys/a1a5PGBURb2/${deviceName}/thing/event/property/post_reply则会收到云端的响应数据
事件和服务的发布和订阅类似。
三、模组调试
首先接好天线,插好NB的SIM卡,对模组进行上电
确保SIM卡的PIN码已经解开,AT+CPIN?
配置休眠模式,AT+QSCLK,轻休眠模式下,模块的串口不工作,因此当AT+QSCLK=1或2时,需要先发送AT以确保串口被唤醒。
模组会自动加入运营商网络,可以用AT+CEREG?查询网络注册状态
配置阿里云设备信息,即前面提到的三要素
AT+QMTCFG="aliauth",
ectID>[,"","
name>",""]
打开MQTT客户端网络,也就是建立TCP/lP连接
AT+QMTOPEN=,"<
host_name>",
这里host_name是服务器地址,阿里云提供两个公共实例,这里使用{
product_key}.iot-as-mqtt.cn-shanghai.aliyuncs.com,端口默认是1883.
打开MQTT客户端网络成功后需要尽快连接MQTT服务器,否则会自动关闭网络
连接MQTT服务器:
AT+QMTCONN=0,"clientExample"
发布消息可以通过两种方式 :
1进入数据模式
AT+QMTPUB=0,0,0,1,"/sys/a1a5PGBURb2/NBtestboard3/thing/event/property/post" 输入需要发送的数据后以Ctrl+Z发送数据
2使用设置命令
AT+QMTPUB=0,0,0,0,"topic/pub","hello MQTT."
值得注意的是:通过MQTT协议透传的数据为16进制格式
这里使用ICA标准数据格式 (Alink JSON)的数据上报方式
订阅消息
AT+QMTSUB=0,1,"/sys/a1a5PGBURb2/NBtestboard3/thing/event/property/post_reply",1
断开MQTT服务器与客户端的连接
AT+QMTDISC=0
log:
[2020-03-26_16:16:07:667]+QMTDISC: 0,0
[2020-03-26_16:16:19:613]AT+QMTOPEN=0,"a1a5PGBURb2.iot-as-mqtt.cn-shanghai.aliyuncs.com",1883
[2020-03-26_16:16:19:634]OK
[2020-03-26_16:16:20:554]
[2020-03-26_16:16:20:554]+QMTOPEN: 0,0
[2020-03-26_16:16:24:419]AT+QMTCONN=0,"clientExample"
[2020-03-26_16:16:24:467]OK
[2020-03-26_16:16:25:030]
[2020-03-26_16:16:25:030]+QMTCONN: 0,0,0
[2020-03-26_16:16:41:302]AT+QMTSUB=0,1,"/sys/a1a5PGBURb2/NBtestboard3/thing/event/property/post_reply",1
[2020-03-26_16:16:41:339]OK
[2020-03-26_16:16:41:889]
[2020-03-26_16:16:41:889]+QMTSUB: 0,1,0,1
[2020-03-26_16:17:01:968]AT+QMTPUB=0,0,0,1,"/sys/a1a5PGBURb2/NBtestboard3/thing/event/property/post"
[2020-03-26_16:17:01:987]>
[2020-03-26_16:17:03:749]{
[2020-03-26_16:17:03:749] "id": "123",
[2020-03-26_16:17:03:749] "version": "1.0",
[2020-03-26_16:17:03:749] "params": {
[2020-03-26_16:17:03:749] "Temperature": 25,
[2020-03-26_16:17:03:749] "WatchDogSwitch":0,
[2020-03-26_16:17:03:749] "visial":888
[2020-03-26_16:17:03:749] },
[2020-03-26_16:17:03:749] "method": "thing.event.property.post"
[2020-03-26_16:17:03:749]}
[2020-03-26_16:17:06:032]
[2020-03-26_16:17:06:032]OK
[2020-03-26_16:17:06:053]
[2020-03-26_16:17:06:053]+QMTPUB: 0,0,0
[2020-03-26_16:17:06:884]
[2020-03-26_16:17:06:884]+QMTRECV: 0,0,"/sys/a1a5PGBURb2/NBtestboard3/thing/event/property/post_reply","{"code":200,"data":{},"id":"123","message":"success","method":"thing.event.property.post","version":"1.0"}"
[2020-03-26_16:17:31:677]AT+QMTDISC=0
[2020-03-26_16:17:31:706]OK
[2020-03-26_16:17:31:710]
[2020-03-26_16:17:31:710]+QMTDISC: 0,0