小知识:MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议
MQTT协议文档,请自行下载文档,已上传:MQTT-3.1.1-CN.pdf
关于准备的材料和工具以及接线方式方法在上个月的一篇文档讲过,请自行查阅,链接如下:http://club.szlcsc.com/article/details_38376_1.html
本次采用的MQTT服务器是 百度云天工物接入 https://cloud.baidu.com/?from=console 注册了一个账户,用于测试MQTT功能,大家可以自己申请注册一个。
以下是MQTT服务器所创建的设备
策略名称:wis800c_test_1
主题:WIS800C_TEST_1
权限:发布和订阅
身份名称:wis800c_test_1
密钥:xxxxxxxxxx
MQTT服务器的域名地址(主机名称和端口):
tcp://6t40zd4.mqtt.iot.gz.baidubce.com:1883
ssl://6t40zd4.mqtt.iot.gz.baidubce.com:1884
wss://6t40zd4.mqtt.iot.gz.baidubce.com:443
这里打算选用其中一个tcp 通信方式的域名地址和端口。
如图所示
以上是我的相关MQTT服务器设置,为测试做准备。关于这方面的设置方法,请自己百度学习。
使用到相关AT命令如下,有关AT命令请自行查看AT命令手册。
已上传文档,请自行下载:WIS800C_ATCommand _CN_V1.0.pdf
(1)基本状态检测的命令:
握手测试:AT
读卡测试:AT+CPIN?
网络注册:AT+CREG?
附着网络:AT+CGATT?
(2)网络配置参数
APN设置:AT+CSTT="CMNET"
激活场景:AT+CIICR
获取本地IP:AT+CIFSR
(3)MQTT 参数设置
设置连接模式:AT+MCONFIG="clientid" (为客户端连接模式)
建立 MQTT连接:AT+MIPSTART="6t40zd4.mqtt.iot.gz.baidubce.com","1883" (这是我申请的MQTT服务器域名地址和端口号)
提供鉴权信息(含有遗嘱消息):AT+MCONFIG="gprs","6t40zd4/wis800c_test_1","xxxxxxxxx" ,0,0,"WIS800C_TEST_1","OVERLINER"(其中用户ID:gprs,用户名:6t40zd4/wis800c_test_1,身份密钥:这里不公开,遗嘱消息等级为0,主题为WIS800C_TEST_1,遗嘱消息为OVERLINER)
设置遗嘱消息格式:AT+MQTTMSGSET=1 (为HEX格式,若要求遗嘱消息HEX ,则 设置消息格式为HEX,如果不设置,默认为AISCII)
建立MQTT会话:AT+MCONNECT=1,20 (清除以前的会话消息,心跳时间设为20秒)
订阅主题:AT+MSUB="WIS800C_TEST_1",0 (订阅主题WIS800C_TEST_1,等级为0级)
向主题发布消息:AT+MPUB="WIS800C_TEST_1",0,0,"57495338303043" (发布消息内容为 WIS800C 即HEX码为 57495338303043)
读取缓存里的消息:AT+MQTTMSGGET
关闭MQTT连接:AT+MDISCONNECT (如果主动发这个命令关闭连接,是看不到服务器端发出的遗嘱消息,原因请查看MQTT协议文档介绍,已截图如下)
以下是实际测试结果:
先判断模块状态是否良好,结果是良好,看截图
再判断网络参数配置是否良好,结果是良好,看截图
开始连接MQTT服务器,并向主题发消息,并留下遗嘱消息OVERLINER
MQTT服务器端成功接收模块发来的消息,
模块端接收的消息,结果如下图
遗嘱测试,给模块断电,模拟异常现象,看MQTT 服务器端是否会发出遗嘱消息,结果能发出,看截图
MQTT测试就到此结束,谢谢大家的关注,后面会发布一些MQTT的测试代码STM32例程。
想了解更多信息的朋友,可以加好友一起交流。
联系方式:刘工 13316931709 微信同号
工作QQ:3374233196
邮箱:Kaven.liu@wisioe.com
WIS800C 是否支持MQTT功能?如何使用?
答案:支持 !今天讲述MQTT功能的使用,操作很简单。