在之前的实验中,实现了通过串口 1 发送 AT 命令,由 STM32 透传到串口 2,并传输到 BC26 模块,之前使用他进行了 NBIOT 协议的实验,这里我们用这个来实现 BC26 通过 MQTT 协议与电信物联网平台的连接,并实践 发布订阅模型.

电信 IOT 平台配置

平台地址:https://dm.ctwing.cn/

创建产品

如图配置
image.png
image.png

属性及服务定义

image.png
image.png
image.png
image.png
image.png

添加设备

image.png

BC26 入网状态检查

AT+CIMI                      //检查SIM卡是否读卡成功。
AT+CESQ              //查看信号强度 终端将提供 0 到 99 的信号强度指示。通常,数值越大,强度越高。
测试命令返回支持的参数值。
AT+CGATT?                  //查看入网状态:
  +CGATT:1                   //返回0为入网失败,返回1为入网成功。
AT+CGSN=1// 请求 IMEI

配置 BC26 的 MQTT 协议版本

配置模组 MQTT 协议版本(BC28/26 支持 MQTT V3.1 和 V3.1.1 两个版本的协议)

AT+QMTCFG="version",0,4

MQTT 协议版本。
3 MQTT v3.1
4 MQTT v3.1.1

BC26 打开 MQTT 连接

因为我们要连接的是电信的 IOT 平台,这里我们要将电信 IOT 平台的地址和端口号发送到 BC26
电信 iot 平台文档:https://www.ctwing.cn/sbjr/39#see
根据电信文档,地址为:mqtt.ctwing.com,端口号为 1883
查阅 BC26 文档得

AT+QMTOPEN=0,"mqtt.ctwing.cn",1883

结果

image.png
出现 ok 后,会出现
image.png

此时需要在数秒内完成下一步,否则连接会被关闭,需再次打开

BC26 开启 MQTT 连接

查阅 BC26 的 AT 命令文档得
MQTT 相关命令如下

AT+QMTCONN=<TCP_connectID>,"<clientID>","<username>","<password>"

在电信 IOT 平台中,相关参数如下
是 0~5 的整数,这里一般写 0
是电信平台中的设备号
是 Master-API-Key
是设备认证信息中的特征串

结果

image.png

image.png
此时,电信 IOT 平台将会显示设备上线

BC26 订阅消息

代码示例

AT+QMTSUB=<TCP_connectID>,<msgID>,"<topic1>",<qos1>[,"<topic2>",<qos2>…]

image.png

AT+QMTSUB=0,1,”run_flag”,0

结果

image.png

BC26 发布消息

查阅 MQTT 文档
客户端通过该命令向服务器发布消息,再由服务器分配到感兴趣的订阅者。每一个 PUBLISH 消息都关 联一个主题名称;若一个客户端订阅了一个或者多个主题,服务器会将发布到这些主题的所有消息作为 PUBLISH 消息发送到客户端。

AT+QMTPUB=<TCP_connectID>,<msgID>,<qos>,<retain>,"<topic>","<msg>"

image.png
image.png

结果

image.png