国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

QT使用MQTT協(xié)議連接ONENET云平臺:智能家居PC客戶端開發(fā)筆記-2 項(xiàng)目開發(fā)

這篇具有很好參考價值的文章主要介紹了QT使用MQTT協(xié)議連接ONENET云平臺:智能家居PC客戶端開發(fā)筆記-2 項(xiàng)目開發(fā)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

這篇文章主要是分享QT智能家居項(xiàng)目的代碼

在我看來,QT MQTT的使用主要難點(diǎn)就是對于環(huán)境的搭建,在我們把環(huán)境搭建完之后,接下來就是傳統(tǒng)手藝了,我們只要知道相應(yīng)的庫函數(shù),調(diào)用它,就能實(shí)現(xiàn)我們所需要的功能了。

所以,在這里我也只是簡單的分享一下我寫的第一版代碼,希望能夠?qū)Ω魑惶峁┑綆椭?/p>

若是有什么疑問,或者有什么更好的想法,也可以聯(lián)系我,我盡量幫你們解決。

我們主要是使用MQTT協(xié)議以及ONENET云來實(shí)現(xiàn)數(shù)據(jù)從硬件端到PC端的傳輸以及控制指令的下發(fā)。

mainwindows.h代碼

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "QMqtt/qmqtt.h"
#include <QTime>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
private slots:
    void on_btn_connect_clicked();

    void on_btn_send_clicked();

    void on_btn_close_clicked();

    void connect_success_slot();

    void connect_error_slot(const QMQTT::ClientError error);

    void disconnect_slot();

    void received_slot(const QMQTT::Message& msg);

    void on_clear_clicked();

    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

    void on_pushButton_3_clicked();

    void on_pushButton_4_clicked();

    void ClickButton0();

    void ClickButton1();

    void ClickButton2();

    void ClickButton3();


//    void onTimeOut();



private:
    Ui::MainWindow *ui;
    QMQTT::Client *client;
    int flag0;
    int flag1;
    int flag2;
    int flag3;
    QTimer *tim;

};
#endif // MAINWINDOW_H

mainwindows.cpp代碼

這幾句代碼是用來設(shè)置你連接的ONENET設(shè)備的,因?yàn)槲也恍枰膐nenet平臺設(shè)備,所以直接將其內(nèi)置在代碼中了

qt連接onenet,智能家居,qt5,物聯(lián)網(wǎng),c++,嵌入式硬件,Powered by 金山文檔
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QMqtt/qmqtt.h"
#include <QtNetwork>
#include <QHoverEvent>



MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //連接onenet云平臺
    client = new QMQTT::Client(QHostAddress("183.230.40.39"),6002);
    client->setClientId("943137931");//設(shè)備ID
    client->setUsername("506581"); //產(chǎn)品ID
    client->setPassword("123456"); //鑒權(quán)信息ID
    client->setVersion(QMQTT::MQTTVersion::V3_1_1);

    connect(client,SIGNAL(connected()),this,SLOT(connect_success_slot()));
    connect(client,SIGNAL(received(const QMQTT::Message&)),this,SLOT(received_slot(const QMQTT::Message&)));
    connect(client,SIGNAL(error(const QMQTT::ClientError)),this,SLOT(connect_error_slot(const QMQTT::ClientError)));
    connect(client,SIGNAL(disconnected()),this,SLOT(disconnect_slot()));

    //
    connect(ui->btn_send, SIGNAL(clicked()), this, SLOT(ClickButton0()));
    connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(ClickButton1()));
    connect(ui->pushButton_2, SIGNAL(clicked()), this, SLOT(ClickButton2()));
    connect(ui->pushButton_3, SIGNAL(clicked()), this, SLOT(ClickButton3()));


    flag0 = 0;
    flag1 = 0;
    flag2 = 0;
    flag3 = 0;


    tim = new QTimer();
    tim->setInterval(5000);
    connect(tim,SIGNAL(timeout()),this,SLOT(onTimeOut()));
    tim->start();    

}

MainWindow::~MainWindow()
{
    delete ui;

}

//連接onenet云
void MainWindow::on_btn_connect_clicked()
{
   client->connectToHost();

}

// 連接成功后輸出“connect success”并訂閱主題
void MainWindow::connect_success_slot(){
    qDebug() << "connect success";
    client->subscribe("Celsius",0);
    client->subscribe("Humidity",0);
    client->subscribe("Rain",0);
    client->subscribe("Smoke",0);
    client->subscribe("Light",0);
    client->subscribe("Far",0);
    client->subscribe("test",0);
    ui->output->setText("連接成功");

}

//連接出現(xiàn)錯誤時在控制臺輸出錯誤
void MainWindow::connect_error_slot(const QMQTT::ClientError error){
    qDebug() << "錯誤" << error;
}

// 斷開連接輸出disconnect___
void MainWindow::disconnect_slot(){
    qDebug() << "disconnect___";
    ui->output->setText("斷開連接");
}

//斷開onenet云
void MainWindow::on_btn_close_clicked()
{
    client->disconnectFromHost();
}

// 將對應(yīng)主題的數(shù)據(jù)輸出到對用的文本框中
void MainWindow::received_slot(const QMQTT::Message& msg){
    QString strPayload(msg.payload());
    if(msg.topic() == "Celsius")
        ui->le_receive->setText(strPayload);
    if(msg.topic() == "Humidity")
        ui->le_send->setText(strPayload);
    if(msg.topic() == "Rain")
        ui->rain->setText(strPayload);
    if(msg.topic() == "Smoke")
        ui->smoke->setText(strPayload);
    if(msg.topic() == "Light")
        ui->light->setText(strPayload);
    if(msg.topic() == "Far")
        ui->far->setText(strPayload);
    if(msg.topic() == "test")
     ui->lineEdit->setText(strPayload);

}

//清空文本框
void MainWindow::on_clear_clicked()
{
    ui->le_receive->setText("");
    ui->le_send->setText("");
    ui->far->setText("");
     ui->rain->setText("");
      ui->light->setText("");
       ui->smoke->setText("");
       ui->lineEdit->setText("");
}

//下發(fā)指令
void MainWindow::on_btn_send_clicked()
{
    if(ui->btn_send->text() == "打開水泵"){
        QString controal = "t";
        QMQTT::Message msg(110,"Controal",controal.toUtf8());
        client->publish(msg);


    }
    if(ui->btn_send->text() == "關(guān)閉水泵"){
        QString controal = "y";
        QMQTT::Message msg(110,"Controal",controal.toUtf8());
        client->publish(msg);


    }

}

void MainWindow::on_pushButton_clicked()
{


    if(ui->pushButton->text() == "開燈"){
            QString controal = "q";
            QMQTT::Message msg(110,"Controal",controal.toUtf8());
            client->publish(msg);
    }
    if(ui->pushButton->text() == "關(guān)燈"){

            QString controal = "w";
            QMQTT::Message msg(110,"Controal",controal.toUtf8());
            client->publish(msg);
    }
}

void MainWindow::on_pushButton_2_clicked()
{
    if(ui->pushButton_2->text() == "開警報"){
        QString controal = "e";
        QMQTT::Message msg(110,"Controal",controal.toUtf8());
        client->publish(msg);


    }
    if(ui->pushButton_2->text() == "關(guān)警報"){
        QString controal = "r";
        QMQTT::Message msg(110,"Controal",controal.toUtf8());
        client->publish(msg);


    }
}

void MainWindow::on_pushButton_3_clicked()
{
    if(ui->pushButton_3->text() == "打開風(fēng)扇"){
        QString controal = "d";
        QMQTT::Message msg(110,"Controal",controal.toUtf8());
        client->publish(msg);


    }
    if(ui->pushButton_3->text() == "關(guān)閉風(fēng)扇"){
        QString controal = "f";
        QMQTT::Message msg(110,"Controal",controal.toUtf8());
        client->publish(msg);



    }
}

void MainWindow::on_pushButton_4_clicked()
{
        QString controal = "z";
        QMQTT::Message msg(110,"Controal",controal.toUtf8());
        client->publish(msg);
}

void MainWindow::ClickButton0()
{
    if(!flag0){
    ui->btn_send->setText("關(guān)閉水泵");
    flag0 = 1;
    }
    else{
     ui->btn_send->setText("打開水泵");
     flag0 = 0;
    }

}

void MainWindow::ClickButton1()
{
    if(!flag1){
    ui->pushButton->setText("關(guān)燈");
    flag1 = 1;
    }
    else{
     ui->pushButton->setText("開燈");
     flag1 = 0;
    }

}

void MainWindow::ClickButton2()
{
    if(!flag2){
    ui->pushButton_2->setText("關(guān)警報");
    flag2 = 1;
    }
    else{
     ui->pushButton_2->setText("開警報");
     flag2 = 0;
    }

}

void MainWindow::ClickButton3()
{
    if(!flag3){
    ui->pushButton_3->setText("關(guān)閉風(fēng)扇");
    flag3 = 1;
    }
    else{
     ui->pushButton_3->setText("打開風(fēng)扇");
     flag3 = 0;
    }

}


//void MainWindow::onTimeOut()
//{
//    QString controal = "i";
//    QMQTT::Message msg(110,"Controal",controal.toUtf8());
//    client->publish(msg);
//}

運(yùn)行結(jié)果

連接成功狀態(tài)

qt連接onenet,智能家居,qt5,物聯(lián)網(wǎng),c++,嵌入式硬件,Powered by 金山文檔

斷開連接狀態(tài)

qt連接onenet,智能家居,qt5,物聯(lián)網(wǎng),c++,嵌入式硬件,Powered by 金山文檔

這次代碼只是第一版,簡單的實(shí)現(xiàn)了數(shù)據(jù)接收與指令下發(fā)的功能,若是以后有改進(jìn),會在之后分享給大家。

代碼鏈接:

百度網(wǎng)盤:

鏈接:https://pan.baidu.com/s/1Qh5EV0x_xVEhUhfWkLMQpQ?pwd=flas

提取碼:flas

希望對諸君有所幫助文章來源地址http://www.zghlxwxcb.cn/news/detail-602564.html

到了這里,關(guān)于QT使用MQTT協(xié)議連接ONENET云平臺:智能家居PC客戶端開發(fā)筆記-2 項(xiàng)目開發(fā)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • OneNet平臺使用可視化界面(MQTT協(xié)議)

    OneNet平臺使用可視化界面(MQTT協(xié)議)

    項(xiàng)目效果: 在OneNet平臺建立一個可視化界面,實(shí)現(xiàn)效果是下位機(jī)的溫度,濕度可以在該界面顯示,同時該界面可以控制下位機(jī)的燈亮與滅。 搭建環(huán)境: 軟件:keil(編寫C語言-修改硬件的程序)+onenet平臺(建立可視化界面-上位機(jī)功能); 硬件:野火指南者開發(fā)板; 可視化界面:

    2024年02月05日
    瀏覽(18)
  • android studio 使用MQTT協(xié)議連接onenet 注意事項(xiàng)和相關(guān)函數(shù)

    android studio 使用MQTT協(xié)議連接onenet 注意事項(xiàng)和相關(guān)函數(shù)

    一、注意事項(xiàng): 1.添加依賴: 2.在注冊表允許打開網(wǎng)絡(luò) 3.在application? ? ?/application之間添加用于支持 MQTT(Message Queuing Telemetry Transport)通信協(xié)議的 Eclipse Paho Android 服務(wù)。 4.打開項(xiàng)目中的 gradle.properties?文件,并確保以下屬性設(shè)置為true------更新所有的支持庫到AndroidX中。 二、

    2024年04月26日
    瀏覽(17)
  • MQTT協(xié)議(新版)接入OneNET平臺

    MQTT協(xié)議(新版)接入OneNET平臺

    MQTT.fx (用于模擬設(shè)備接入) token (計算密鑰工具) 首先我們先進(jìn)入到中移物聯(lián)官方網(wǎng)站:https://open.iot.10086.cn/ 點(diǎn)擊左上角產(chǎn)品服務(wù)→基礎(chǔ)服務(wù)→MQTT物聯(lián)網(wǎng)套件,然后點(diǎn)擊屏幕上方【 立即使用 】,進(jìn)入MQTT協(xié)議平臺 接下來點(diǎn)擊屏幕上【 添加產(chǎn)品 】,如下圖添加一個產(chǎn)品,可參考:官方

    2024年02月08日
    瀏覽(27)
  • 基于STM32與OneNet平臺的智能家居系統(tǒng)設(shè)計(代碼開源含自制APP代碼)_onenet 編程

    基于STM32與OneNet平臺的智能家居系統(tǒng)設(shè)計(代碼開源含自制APP代碼)_onenet 編程

    請求方式: GET URL: http://api.heclouds.com/devices/device_id/datapoints 服務(wù)器或上位機(jī)下發(fā)主題報文(控制下位機(jī)): API函數(shù): 請求方式: POST URL: http://api.heclouds.com/mqtt?topic=xxx 以上2個網(wǎng)絡(luò)通訊的 API函數(shù) 至關(guān)重要,就是實(shí)現(xiàn)常規(guī)情況下OneNet物聯(lián)網(wǎng)開發(fā)的 關(guān)鍵性技術(shù)支持。 ( 情況允許

    2024年04月12日
    瀏覽(37)
  • STM32連接--OneNET,阿里云(MQTT協(xié)議)詳細(xì)教程

    STM32連接--OneNET,阿里云(MQTT協(xié)議)詳細(xì)教程

    物聯(lián)網(wǎng)一詞在2009年由Kevin Ashton首次使用。物聯(lián)網(wǎng)指的是通過互聯(lián)網(wǎng)來連接物理設(shè)備。物理設(shè)備可以相互之間通過互聯(lián)網(wǎng)交換數(shù)據(jù)或由其他設(shè)備控制。物聯(lián)網(wǎng)設(shè)備可以是冰箱、交通信號燈、工業(yè)控制系統(tǒng)等電子裝置或電氣設(shè)備。最常見的用例之一是傳感器數(shù)據(jù)的收集,傳輸,分

    2024年02月06日
    瀏覽(42)
  • 新版ONENET物聯(lián)網(wǎng)開放平臺AT+MQTT指令連接

    新版ONENET物聯(lián)網(wǎng)開放平臺AT+MQTT指令連接

    ONENET物聯(lián)網(wǎng)平臺自4月28日更新后,暫時沒有完整的教程,本文目的旨在幫助大家通過AT+MQTT指令連接到ONENET云平臺: 本教程在B站錄制有視頻教程兩個教程結(jié)合使用效果更佳: 新版ONENET物聯(lián)網(wǎng)開放平臺ESP8266的AT+MQTT固件庫串口通信模擬連接_嗶哩嗶哩_bilibili 新版ONENET物聯(lián)網(wǎng)開放

    2024年02月08日
    瀏覽(26)
  • 中國移動物聯(lián)網(wǎng)開放平臺OneNET學(xué)習(xí)筆記(2)——設(shè)備接入測試(MQTT協(xié)議)OneNET Studio篇

    中國移動物聯(lián)網(wǎng)開放平臺OneNET學(xué)習(xí)筆記(2)——設(shè)備接入測試(MQTT協(xié)議)OneNET Studio篇

    進(jìn)入Studio平臺后,展開菜單欄中的「設(shè)備接入與管理」,點(diǎn)擊「設(shè)備管理」,進(jìn)入設(shè)備列表頁面。 點(diǎn)擊「添加設(shè)備」,選中單個設(shè)備(默認(rèn)方式)輸入設(shè)備詳情,點(diǎn)擊「確定」創(chuàng)建設(shè)備。 按照提示填寫產(chǎn)品的基本信息,進(jìn)行產(chǎn)品創(chuàng)建;請按照提示盡可能完整、全面地填寫相

    2024年02月02日
    瀏覽(32)
  • 基于STM32和oneNET云平臺的數(shù)據(jù)采集系統(tǒng)(MQTT協(xié)議)

    基于STM32和oneNET云平臺的數(shù)據(jù)采集系統(tǒng)(MQTT協(xié)議)

    該篇為基于stm32+esp8266通過 mqtt 協(xié)議連接 onenet 物聯(lián)網(wǎng)云平臺,單片機(jī)部分將采集到的數(shù)據(jù)(溫濕度、光照強(qiáng)度、壓強(qiáng)等等)上傳至云平臺服務(wù)器,云平臺可下發(fā)指令操控單片機(jī),實(shí)現(xiàn)遠(yuǎn)程通信。 1. 第一步,注冊賬號后點(diǎn)擊右上角 控制臺 2. 第二步,看左上角 選擇切換舊版本 3.

    2024年02月06日
    瀏覽(51)
  • 【智能家居入門4】(FreeRTOS、MQTT服務(wù)器、MQTT協(xié)議、微信小程序)

    【智能家居入門4】(FreeRTOS、MQTT服務(wù)器、MQTT協(xié)議、微信小程序)

    主控仍舊是STM32F103C8T6,實(shí)時操作系統(tǒng)選擇的是FreeRTOS。 主要功能: ①環(huán)境信息采集并上傳至微信小程序 ②微信小程序下發(fā)指令控制家電 ③由雨滴傳感器和步進(jìn)電機(jī)能夠?qū)崿F(xiàn)下雨自動收起衣服,停雨自動曬出衣服(由于驅(qū)動板和步進(jìn)電機(jī)不在身邊,這里代碼中就用舵機(jī)來模擬

    2024年04月11日
    瀏覽(37)
  • (Onenet)STM32L+BC20+MQTT協(xié)議傳輸溫濕度,ADC,電壓,GPS數(shù)據(jù)到Onenet物聯(lián)網(wǎng)平臺

    (Onenet)STM32L+BC20+MQTT協(xié)議傳輸溫濕度,ADC,電壓,GPS數(shù)據(jù)到Onenet物聯(lián)網(wǎng)平臺

    1、材料準(zhǔn)備 準(zhǔn)備以下材料 2、設(shè)備連接 2.1 插入物聯(lián)網(wǎng)卡 首先把BC20核心板從開發(fā)板上拆下來 然后將物聯(lián)卡放置在BC20核心板內(nèi) 物聯(lián)卡放置完成將BC20核心板重新插入到開發(fā)板內(nèi)(注意不要弄錯方向) 同時接入天線 2.2 連接ST-Link仿真器 用3條杜邦線接入STM32L的 DIO、GND、CLK中 另

    2024年02月15日
    瀏覽(33)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包