序言:
MQTT是基于二进制消息的发布/订阅编程模式的消息协议;由于规范很简单,非常适合需要低功耗和网络带宽有限的IoT场景,比如:智能家居、智慧城市和医疗医护;深受广大童鞋的青睐和喜爱。下面我们以SIM7600为例实现和阿里云的MQTT通信。
硬件准备
软件准备
- minicom
- 阿里云物联网平台
通信步骤
1.硬件连接
- 把普通SIM卡和天线接入 SIM7600X 4G HAT一套
- 把 SIM7600X 4G HAT一套模块通过2*20PIN排针接入树莓派
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
- 阿里云7600设备发送消息
- 订阅消息
AT+CMSUB="user/test",1
- SIM7600X接收消息
(平台未发布之前,CMYIELD 手动接受,没有回复)
AT+CMYIELD=200
- 自动接收(可以自动收到平台发布的消息)
AT+CMAUTOYIELD=2,2000
at+cmautoyield=2,2000
- 取消订阅
AT+CMUNSUB="user/test "
- 发布消息
AT+CMPUB="user/test",1,"12345678"
- 在阿里云物联网平台的日志服务栏查看收到的消息
用户名密码模式(三元组保持)
三元组通过密码工具得到密码
//开启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 //发送服务器
///断开链接//
AT+CMQTTUNSUB=0,28,1 //取消订阅主题 为取消订阅消息设置一个主题
AT+CMQTTDISC=0,60 //断开与服务器的连接
AT+CMQTTREL=0 //释放一个client
AT+CMQTTSTOP //关闭mqtt服务