这东西也折腾我好几天来着,我也看了无数篇博主的教程博客,最后也登不上去物联网平台。正当我发愁且找不到原因时,还好我一个朋友做过类似的项目并为我解答疑惑,最后我才能实现这个功能。现在我就来留下我的学习笔记。
QT版本:QT5.9 Mingw32
操作系统:win11
步骤一:Qt移植mqtt库
csdn论坛上也有很多教程,我也是看别人的教程的
Qt 移植mqtt库(非官方库)并连接到eMQ、onenet
步骤二:使用Qt的QMqttClient库来连接物联网平台
1、在工程的.pro文件内添加代码
QT += network
2、在对应的文件内添加如下的头文件
#include "QtMqtt/qmqttclient.h"
3、编译工程会提醒部分头文件无法找到,只需要将报错的文件的改为“”引用即可,大概需要修改3个文件内的头文件,一直修改到编译不报错即可。
4、添加如下的代码,初始化QMqttClient对象、异步连接回调、接收消息异步回调
protected:
QMqttClient *client;//mqtt服务器对象
protected slots:
void connected_isr();//连接回调函数
private slots:
void recv_message(QByteArray message);//接收消息回调
5、添加如下的代码,实例化QMqttClient对象,连接服务器
//下面的内容根据腾讯物联网平台信息进行替换
QHostAddress host("106.55.124.154");//腾讯物联网平台IP地址
QByteArray password = "password";//填写密码
quint16 port = 1883;
client=new QMqttClient(this);
client->setKeepAlive(120);
client->setHost(host);//设置EMQ代理服务器IP
client->setPort(port);//设置EMQ代理服务器端口号
client->setClientId("ClientID");//onenet设备ID
client->setUsername("Username");//onenet的产品ID
client->setPassword(password);//设置一个客户端密码
client->cleanSession();//清除缓存
// client->setVersion(QMQTT::MQTTVersion::V3_1_1);//设置mqtt版本,onenet平台规定为mqtt3.1.1版本
client->connectToHost();//连接EMQ代理服务器
6.需要发布消息的时候这样发布消息
QString topic="test";//发布的频道
QString payload="123456";//消息内容体
client->publish(QMqttTopicName(topic),payload.toLocal8Bit());//发布消息
注意!!!我这里用的是腾讯云的物联网通信,并不是物联网平台。
不知道为什么他官方文档给的ip地址域名不行,而且我这是广州腾讯云的ip地址,不知道我同学在哪里搞来的,用上他就能登陆了。这地方我也不懂,希望有大佬能够为我解惑
物联网通信
本文章来源于互联网,如有侵权,请联系删除!原文地址:QT——连接腾讯云物联网平台
《物美智能》系列文章目录 一款强大的物联网管理平台介绍-《物美智能》 教程一:阿里云使用docker快速部署服务端 教程二:本地配置服务端开发环境 教程三:硬件端-Arduino和ESP8266开发板入门 教程四:使用物联网平台控制硬件端 教程五:物联网平台使…