序言:
MQTT是基于二进制消息的发布/订阅编程模式的消息协议;由于规范很简单,非常适合需要低功耗和网络带宽有限的IoT场景,比如:智能家居、智慧城市和医疗医护;深受广大童鞋的青睐和喜爱。下面我们以SIM7600为例实现和阿里云的MQTT通信。

硬件准备

软件准备

通信步骤

1.硬件连接
2.阿里云物联网平台功能配置
  • 进入阿里云物联网平台平台->登录->快速入门
  • 注册设备
  • 选择开发包
  • SDK下载
  • 配置与测试
  • 完成产品创建
  • 添加设备
  • 填写产品名称、设备名称和备注名称

    *在产品目录中查看设备
  • 自定义Topic->操作权选择发布和订阅->名字这里改为TEST
3.通过MQTT和阿里云平台通信
  • 三元组准备,下面的步骤有用到的直接复制粘贴过去
{
  "ProductKey": "a1mQpKOF9hp",
  "DeviceName": "7600",
  "DeviceSecret": "8f663b388dee796b931ebcb789b75a39"
}

连接MQTT

初始化

AT+CMQTTREL=0
AT+CMQTTSTOP
AT+CMQTTSTART
  • 设备鉴权
AT+CMAUTH="a1mQpKOF9hp","7600","8f663b388dee796b931ebcb789b75a39"
  • 设置MQTT参数
AT+CMPARA="KEEPALIVE",180000
  • MQTT 请求超时时间,单位毫秒,默认值 2000,范围是
    500~5000。
AT+CMPARA="TIMEOUT",3000
  • 是否清除 session,数字类型,0-不清除,1-清除,默认值 0
AT+CMPARA="CLEAN",0
  • MQTT连接
AT+CMCONN

EMQTT 添加设备 mqtt接入_自动驾驶

  • 阿里云7600设备发送消息
  • EMQTT 添加设备 mqtt接入_物联网_02


  • EMQTT 添加设备 mqtt接入_EMQTT 添加设备_03

  • 订阅消息
AT+CMSUB="user/test",1
  • SIM7600X接收消息
    (平台未发布之前,CMYIELD 手动接受,没有回复)
AT+CMYIELD=200

EMQTT 添加设备 mqtt接入_stm32_04

  • 自动接收(可以自动收到平台发布的消息)
AT+CMAUTOYIELD=2,2000
at+cmautoyield=2,2000
  • 取消订阅
AT+CMUNSUB="user/test "
  • 发布消息
AT+CMPUB="user/test",1,"12345678"
  • 在阿里云物联网平台的日志服务栏查看收到的消息

用户名密码模式(三元组保持)

三元组通过密码工具得到密码

EMQTT 添加设备 mqtt接入_三元组_05

//开启mqtt服务///
at+cmqttstart

//申请一个client///
 
at+cmqttaccq=0,"7600|securemode=3,signmethod=hmacsha1|"

/连接mqtt server/
at+cmqttconnect=0,"tcp://a1zjhbLfSbW.iot-as-mqtt.cn-shanghai.aliyuncs.com:1883",60,1,"7600&a1mQpKOF9hp","D48150E8D550607B15C667E100635EE96EA7D512"

/订阅
AT+CMQTTSUB=0,27,1,1

出现提示符>之后,输入:
/a1mQpKOF9hp/7600/user/7600

//输入要发布消息的主题/
AT+CMQTTTOPIC=0,27
出现提示符>之后,输入:
/a1mQpKOF9hp/7600/user/7600

/发布消息///
AT+CMQTTPAYLOAD=0,5
AT+CMQTTPUB=0,1,60    //发送服务器

EMQTT 添加设备 mqtt接入_物联网_06

///断开链接//
AT+CMQTTUNSUB=0,28,1    //取消订阅主题    为取消订阅消息设置一个主题
AT+CMQTTDISC=0,60     //断开与服务器的连接
AT+CMQTTREL=0   //释放一个client
AT+CMQTTSTOP   //关闭mqtt服务