硬件形态为MCU+模组上云主要可以通过两种方式,一种方式是使用支持TCP/IP协议的模组,在MCU集成SDK;另一种是直接使用集成了MQTT协议的模组,推荐使用第二种方式,可以缩短研发周期有助于产品快速推向市场,很多厂家的模组已经集成了阿里云的SDK,本次调试主要对已认证模组移远的NB模组BC26进行评估。

一、在阿里云物联网平台新建产品和添加设备

在后面接入设备时需要用到三要素:ProductKey,DeviceName,DeviceSecret

ProductKey会在新建产品时生成,DeviceName可以自己定义,应该是只支持英文和数字,DeviceSecret会在添加设备完成后自动生成。

产品数据格式推荐使用:ICA 标准数据格式 (Alink JSON)

iotdb mqttx_d3

二、定义topic类型

topic可以设置发布和订阅的权限,

发布权限即设备可以针对该topic发布消息

订阅权限即设备可以通过订阅该topic来获取消息

topic同一时刻只能容许一个终端操作。

新建产品后会有默认的topic

通过自定义topic上报的数据,不会保存到数据存储里,

调试中用物模型通信Topic:

iotdb mqttx_阿里云_02

向/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",<TCP_conn ectID>[,"<product_key>","<device_ name>","<device_secret>"]


 


打开MQTT客户端网络,也就是建立TCP/lP连接


 


AT+QMTOPEN=<TCP_connectID>,"< host_name>",<port>


 


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