BC26使用MQTT连接阿里云指导
2018-11-25
一、阿里云——账号申请、创建产品、添加设备
注意:需要注册后实名认证才可以进入“物联网平台”(更名前叫物联网开发套件),操作工作有任何问题走可以从阿里云的技术支持找到对应文档查看。
注册后选择物联网平台
键入控制台后创建产品
创建产品后
针对产品添加设备
定义topic类型
下面这点很重要,设置转发规则,为了设备接入后针对某一topic发布消息时另外一个终端订阅能看到消息,需要设置topic规则转发,因为阿里云MQTT topic同一时刻只能容许一个终端操作,如果不设置转发只能自己发布消息自己收。
规则引擎设置,下面操作是将Topic:/a1P6PO7KIaW/BC26/data收到的任何消息转发到Topic:/a1P6PO7KIaW/BC26NA/data,*号代表任何数据,也可以对数据进行特殊处理。
二、BC26 MQTT连接阿里云——接入、订阅发布消息
使用BC26模组,升级最新版本,确认BC26能注册NB网络能获取IP。
以下是AT流程:
************Log start
[Sun Jul 01 16:11:15.371 2018] ATI
[Sun Jul 01 16:11:15.379 2018] Quectel_Ltd
[Sun Jul 01 16:11:15.379 2018] Quectel_BC26
[Sun Jul 01 16:11:15.379 2018] Revision:BC26NAR01A05_BETA0622
[Sun Jul 01 16:11:15.379 2018]
[Sun Jul 01 16:11:15.379 2018] OK
[Sun Jul 01 16:11:15.387 2018] AT+CMEE=2
[Sun Jul 01 16:11:15.390 2018] OK
[Sun Jul 01 16:11:15.500 2018] AT+CPIN?
[Sun Jul 01 16:11:15.509 2018] +CPIN: READY
[Sun Jul 01 16:11:15.509 2018]
[Sun Jul 01 16:11:15.509 2018] OK
[Sun Jul 01 16:11:20.568 2018] AT+CESQ
[Sun Jul 01 16:11:20.573 2018] +CESQ:45,0,255,255,26,69
[Sun Jul 01 16:11:20.573 2018]
[Sun Jul 01 16:11:20.573 2018] OK
[Sun Jul 01 16:11:20.680 2018] AT+CGDCONT?
[Sun Jul 01 16:11:20.688 2018] +CGDCONT:1,"IP","ctnb","",0,0,0,,,,,,0,,0
[Sun Jul 01 16:11:20.688 2018]
[Sun Jul 01 16:11:20.688 2018] OK
[Sun Jul 01 16:11:20.695 2018] AT+CGPADDR?
[Sun Jul 01 16:11:20.705 2018] +CGPADDR: 1,10.43.190.170
[Sun Jul 01 16:11:20.705 2018]
[Sun Jul 01 16:11:20.705 2018] OK
[Sun Jul 01 16:11:20.717 2018]AT+QMTOPEN=0,"106.15.100.2",1883 //原本是用域名的,但是有些版本可能域名解析有问题,所以当出现域名连接失败时尝试用IP,即电脑上ping下域名获取IP替换,域名一般是”productKey.iot-as-mqtt.cn-shanghai.aliyuncs.com",productKey和创建产品的productKey保持一致。
[Sun Jul 01 16:11:20.733 2018] OK
[Sun Jul 01 16:11:21.477 2018]
[Sun Jul 01 16:11:21.477 2018] +QMTOPEN: 0,0 //open成功
[Sun Jul 01 16:11:21.518 2018]
AT+QMTCONN=0,"a1P6PO7KIaW.BC26|securemode=3,timestamp=255,signmethod=hmacsha1|","BC26&a1P6PO7KIaW","1db98c194d770b02b6b2a0ac5ea19c9091df6e70"
[Sun Jul 01 16:11:21.555 2018] OK
[Sun Jul 01 16:11:22.116 2018]
[Sun Jul 01 16:11:22.116 2018] +QMTCONN: 0,0,0 //连接成功,这里涉及一个接入的报文参数,详细接阿里云指导文档,链接如下
https://help.aliyun.com/document_detail/73742.html?spm=a2c4g.11186623.6.704.SeW8Cl
关于这点我已经弄好了一个Python脚本可以轻松计算出秘钥参数报文,
MQTT_Alicloud_parameter.py,安装Python脚本后轻松输出。
[Sun Jul 01 16:11:22.131 2018]
AT+QMTPUB=0,0,0,0,"/a1P6PO7KIaW/BC26/data","{"data":"BC26 mqtt ok 1"}"
[Sun Jul 01 16:11:22.194 2018] OK
[Sun Jul 01 16:11:22.208 2018]
[Sun Jul 01 16:11:22.208 2018] +QMTPUB: 0,0,0 //针对topic:"/a1P6PO7KIaW/BC26/data"发布消息成功,注意消息格式是{"***":***},不然那转发失败,这点感觉是阿里云的bug,尝试其他格式能发自己能收,但是另外终端订阅的无法收到转发过去的消息
[Sun Jul 01 16:11:22.711 2018]
[Sun Jul 01 16:11:22.711 2018] +QMTRECV:0,0,"/a1P6PO7KIaW/BC26/data","{"data":"BC26 mqtt ok 1"}"
[Sun Jul 01 16:11:25.284 2018]AT+QMTPUB=0,0,0,0,"/a1P6PO7KIaW/BC26/data","{"data":"BC26 mqttok 2"}"
[Sun Jul 01 16:11:25.346 2018] OK
[Sun Jul 01 16:11:25.375 2018]
[Sun Jul 01 16:11:25.375 2018] +QMTPUB: 0,0,0 //消息发布成功,可以看到另外订阅地方是有收到转发过去的消息,下面有截图
[Sun Jul 01 16:11:25.877 2018]
[Sun Jul 01 16:11:25.877 2018] +QMTRECV:0,0,"/a1P6PO7KIaW/BC26/data","{"data":"BC26 mqtt ok 2"}" //由于topic设置的是订阅和发布,所以自己发布后能能收到
[Sun Jul 01 16:11:28.423 2018]AT+QMTPUB=0,0,0,0,"/a1P6PO7KIaW/BC26/data","{"data":"BC26 mqttok 3"}"
[Sun Jul 01 16:11:28.483 2018] OK
[Sun Jul 01 16:11:28.499 2018]
[Sun Jul 01 16:11:28.499 2018] +QMTPUB: 0,0,0 //消息发布成功,可以看到另外订阅地方是有收到转发过去的消息,下面有截图
[Sun Jul 01 16:11:29.081 2018]
[Sun Jul 01 16:11:29.081 2018] +QMTRECV:0,0,"/a1P6PO7KIaW/BC26/data","{"data":"BC26 mqtt ok 3"}"
[Sun Jul 01 16:11:41.601 2018] AT+QMTDISC=0
[Sun Jul 01 16:11:41.681 2018] OK
[Sun Jul 01 16:11:41.708 2018]
[Sun Jul 01 16:11:41.708 2018] +QMTDISC: 0,0
************Log end
另外使用一个脚本订阅,通过转发规则,BC26发布的消息能在这边订阅topic
后收到发布的消息,如下
下面是阿里云上日志消息:
登录消息
上行消息:
下行消息:
测试中设计的Python脚本以及AT log如下:
BC26 MQTT连接阿里云订阅发布消息log-20180701-161112.txt
iotsub.py(用来模拟另外一个订阅终端)
MQTT_Alicloud_parameter.py(计算接入报文参数)
下载链接:
https://share.weiyun.com/5EMhNjV (密码:dtJ0)