0


Linux MQTT智能家居(Linux下运行MQTT)

文章目录


前言

本篇文章将带大家在Linux下运行MQTT库,我们首先会将MQTT库下载下来,然后进行编译,将编译出来的lib文件和include文件添加进入我们自己的工程代码中即可使用到MQTT库了。

一、下载源码编译

1.编译出64位的库文件

源码地址
在这里插入图片描述
下载源码:

git clone https://gitcode.com/emqx/qmqtt.git

在这里插入图片描述
进入qmqtt目录中:

cd qmqtt/

修改.qmake.conf文件:

load(qt_build_config)
CONFIG += warning_clean
MODULE_VERSION =5.9.1     #QT对应的版本

在这里插入图片描述

新建一个build目录用于保存编译出的文件:

mkdir build/
cd build/

使用qmake进行编译:

这里可以看到直接使用qmake进行编译是会报错的,因为他无法直接找到qmake,这个时候就需要直接指定qmake所在的路径了。
在这里插入图片描述
在QT的安装目录中寻找qmake:

find /opt/Qt5.9.1 -name qmake

在这里插入图片描述
找到qmake后我们就能继续进行编译了:

/opt/Qt5.9.1/5.9.1/gcc_64/bin/qmake ..make-j4

在这里插入图片描述
使用ls命令查看编译出的文件:
在这里插入图片描述
我们需要的就是lib库文件和include文件;

可以使用file命令查看到编译出的库文件是什么版本的:

file libQt5Qmqtt.so.5.9.1

在这里插入图片描述

2.编译出ARM平台下的库文件

首先需要找到ARM平台下的qmake:

我的qmake路径如下:

/home/book/100ask_imx6ull-sdk/Buildroot_2020.02.x/output/host/bin/qmake

新建一个build目录用于保存编译出的文件:

mkdir build/
cd build/

找到qmake后我们就能继续进行编译了:

/home/book/100ask_imx6ull-sdk/Buildroot_2020.02.x/output/host/bin/qmake ..make-j4

同样的可以编译出在ARM平台下的lib文件:

在这里插入图片描述

二、将lib库文件和include文件加入自己的工程

1.ubuntu下测试

在QT工程中新建lib文件夹:

在这里插入图片描述
将编译出来的include文件夹和动态库加入到lib文件夹中:
在这里插入图片描述
在.pro文件中添加代码:

LIBS += -L$$PWD/lib -lQt5Qmqtt

INCLUDEPATH += lib/include

Widget.h文件中的代码:

#ifndefWIDGET_H#defineWIDGET_H#include<QWidget>#include<qmqtt.h>#include<QtNetwork>#include<QHostAddress>namespace Ui {classWidget;}classWidget:publicQWidget{
    Q_OBJECT

public:explicitWidget(QWidget *parent =0);~Widget();private:
    Ui::Widget *ui;
    QMQTT::Client * client;//MQTT客户端voidclientMqtt();public slots:voidonMQTT_Received( QMQTT::Message message);};#endif// WIDGET_H

Widget.cpp文件中的代码:

#include"Widget.h"#include"ui_Widget.h"Widget::Widget(QWidget *parent):QWidget(parent),ui(new Ui::Widget){clientMqtt();

    ui->setupUi(this);}voidWidget::clientMqtt(){
    client =newQMQTT::Client();// 初始化QMQTT客户指针connect(client,SIGNAL(received(QMQTT::Message)),this,SLOT(onMQTT_Received(QMQTT::Message)));  oneNet server ///
    QHostAddress host("192.168.0.xxx");// 代理服务器 IP
    QByteArray password ="test";// 设备名称
    quint16 port =2000;// 代理服务器端口
    QString deviceId ="604219658";// 设备 ID
    QString productId ="354215";// 产品 ID

    client->setKeepAlive(120);// 心跳
    client->setHost(host);// 设置 EMQ 代理服务器
    client->setPort(port);// 设置 EMQ 代理服务器端口
    client->setClientId(deviceId);// 设备 ID
    client->setUsername(productId);// 产品 ID
    client->setPassword(password);
    client->cleanSession();
    client->setVersion(QMQTT::MQTTVersion::V3_1_1);// 设置mqtt版本

    client->connectToHost();// 连接 EMQ 代理服务器QTimer::singleShot(1000,this,[=](){
        client->subscribe("abcd",0);// 订阅abcd});}voidWidget::onMQTT_Received( QMQTT::Message message){
    QString str = message.payload();qDebug()<<"rcive: "<< message.topic()<<":"<<str;}Widget::~Widget(){delete ui;}

使用MQTTX发布数据测试程序:

在这里插入图片描述

2.ARM平台测试

在ARM平台下测试也是比较简单的,直接将编译出的ARM lib文件和include文件替换之前编译的文件即可。

总结

本篇文章就讲解到这里,大家可以自己将MQTT移植到自己的工程中,使用MQTT完成各类智能家居还是非常方便的。

标签: linux 智能家居 ARM

本文转载自: https://blog.csdn.net/m0_49476241/article/details/138388937
版权归原作者 花落已飘 所有, 如有侵权,请联系我们删除。

“Linux MQTT智能家居(Linux下运行MQTT)”的评论:

还没有评论