环境说明
Qt版本:5.6 Mingw32 (其他版本在编译的过程中生成的include会不同)
操作系统:win10企业版
移植过程
1、从github下载qtmqtt源代码:https://github.com/emqtt/qmqtt
2、解压文件,进入src目录使用qt打开里面的工程(src.pro)
3、编译运行工程,编译过程中如出现头文件出错,则需要根据实际文件路径进行修改
4、编译后将会在工程所在的电脑磁盘根目录生成include 和 lib 文件夹
5、将include文件夹复制到src\mqtt文件夹内
6、新建空白的qt工程,将src内的mqtt文件夹和磁盘根目录的lib文件夹复制到新建工程内。
7、在qt软件内右击工程名->点击添加现有文件->添加mqtt\include\mqtt内的qmqttDepengd文件
8、在qt软件内右击工程名->点击添加现有文件->添加mqtt内的qmqtt.h文件
9、在qt软件内右击工程名->点击添加库->外部库->库文件:浏览->lib->libqmqtt.a
10、在qt软件内右击工程名->点击添加库->外部库->库文件:浏览->lib->libqmqttd.a,添加成功后工程会自动增加如下的代码。
11、编译工程,如果没有出错则移植成功。
创建mqtt客服端
1、在工程的.pro文件内添加代码 QT += network
2、在对应的文件内添加如下的头文件
3、编译工程会提醒部分头文件无法找到,只需要将报错的文件的<>改为“”引用即可,大概需要修改3个文件内的头文件,一直修改到编译不报错即可。
4、添加如下的代码,创建客户端
5、添加如下的代码
QHostAddress host("127.0.0.1");
QByteArray password = "";
quint16 port = 1883;
//client->set
client->setKeepAlive(120);
client->setHost(host);//设置EMQ代理服务器IP
client->setPort(port);//设置EMQ代理服务器端口号
client->setClientId("client");//设置一个客户端ID
client->setUsername("");//设置一个客户端用户名
client->setPassword(password);//设置一个客户端密码
client->cleanSession();//清除缓存
client->setVersion(QMQTT::MQTTVersion::V3_1_1);//设置mqtt版本
client->connectToHost();//连接EMQ代理服务器
6、打开搭建好的eMQ服务器,搭建教程请参考这个:https://www.jianshu.com/p/e5cf0c1fd55c
7、运行以上的工程,成功运行后将能在服务器内看到如下的连接信息,如果没看到,则尝试重新运行一下工程。
连接到中国移动物联网平台onenet
1、注册onenet账号并添加基于MQTT协议的产品和添加一个设备,具体流程请参考onenet官方文档:https://open.iot.10086.cn/doc/art436.html#104
2、更改上一节第5的代码如下
QHostAddress host("183.230.40.39");
QByteArray password = "请输入你自己的设备授权信息";//onenet的产品Master-APIkey或者授权信息
quint16 port = 6002;
//client->set
client->setKeepAlive(120);
client->setHost(host);//设置EMQ代理服务器IP
client->setPort(port);//设置EMQ代理服务器端口号
client->setClientId("请输入你自己的设备ID");//onenet设备ID
client->setUsername("请输入你自己的产品ID");//onenet的产品ID
client->setPassword(password);//设置一个客户端密码
client->cleanSession();//清除缓存
client->setVersion(QMQTT::MQTTVersion::V3_1_1);//设置mqtt版本,onenet平台规定为mqtt3.1.1版本
client->connectToHost();//连接EMQ代理服务器
3、运行工程到onenet的后台即可看到设备已经在线。
参考文章
QT采用MQTT协议远程控制LED灯:http://www.360doc.com/content/18/0307/14/16915_735115704.shtml
如何用Qt5.9接收EMQ代理服务器传过来的话题消息:https://blog.csdn.net/naibozhuan3744/article/details/78893682
Qt官方MQTT库的使用,附一个MqttClient例子:https://www.cnblogs.com/yexiaopeng/p/8542894.html
MQTT–Qt5编写MQTT-client客户端:https://blog.csdn.net/qq_28877125/article/details/78357510
等
源代码下载
1、本文章提到的源代码和工程等:https://download.csdn.net/download/baidu_33969363/10888403
2、有界面的基于qt的mqtt客户端源代码:https://download.csdn.net/download/baidu_33969363/10888403