QT+MQTT+ONENET云平台

本文介绍一下使用协议连接ONENET的过程
#下载mqtt源码
https://github.com/emqx/qmqtt 本人是在这里下载的
https://github.com/qt/qtmqtt 也可以用这个Qt官方提供的

将源码解压后放在英文目录下,打开工程文件
在这里插入图片描述

要选择用到的qt环境
在这里插入图片描述
打开后用release编译即可
在这里插入图片描述
打开刚刚构建的release目录:找到lib文件夹,将lib这个目录全部复制到
将要使用的工程文件中,可以只保留这四个,其他的可删可不删:
在这里插入图片描述
打开需要用到的工程,这里拿我的light举例,复制完成之后,更改pro文件,将他们加入到工程中来,如果你没有按照我的步骤放在了其他文件夹这里就改成自己的文件目录

INCLUDEPATH += $$PWD/mqtt
LIBS += $$PWD/lib/libQt5Qmqttd.a $$PWD/lib/libQt5Qmqtt.a

在这里插入图片描述
然后构建你的工程,打开生成的Debug文件,将刚刚生成lib中的两个.dll文件拷贝到里面,或者说你将他们添加到环境变量中,这里就不做演示:
在这里插入图片描述
这样就大功告成了
这里贴出连接onenet代码:

.c文件

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "mqtt/qmqtt.h"
#include <QDebug>
#include <QtNetwork>
#include <QHostAddress>

MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    client = new QMQTT::Client(QHostAddress("183.230.40.39"),6002);
    client->setClientId("xxxxxxxxxx");//设备ID
    client->setUsername("xxxxxx");//产品id
    client->setPassword("xxxxxx");//鉴权信息
    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()));
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_btn_connect_clicked()
{
   client->connectToHost();
}

void MainWindow::on_btn_send_clicked()
{
    //Message(const quint16 id, const QString &topic,
    //const QByteArray &payload,
    //const quint8 qos = 0, const bool retain = false, const bool dup = false);
    QMQTT::Message msg(110,"app_topic",/*"hello KFB,I am APP"*/ui->le_send->text().toUtf8());
    client->publish(msg);
}

void MainWindow::on_btn_close_clicked()
{
    client->disconnectFromHost();
}

void MainWindow::received_slot(const QMQTT::Message& msg){
    QString strPayload(msg.payload());
    ui->le_receive->setText(strPayload);
}
void MainWindow::connect_success_slot(){
    qDebug() << "connect success";
    client->subscribe("topic",0);
}

void MainWindow::connect_error_slot(const QMQTT::ClientError error){
    qDebug() << "错误" << error;
}

void MainWindow::disconnect_slot(){
    qDebug() << "disconnect___";
}

.h文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include "mqtt/qmqtt.h"
#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit 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);

private:
    Ui::MainWindow *ui;
    QMQTT::Client *client;
};

#endif // MAINWINDOW_H

需要说明的是
在这里插入图片描述
如果你连接的是onenet那么它的地址和默认端口号不用做修改,只用该中间这三个替换即可
在这里插入图片描述

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: ESP8266可以通过MQTT协议连接OneNet平台。具体步骤如下: 1. 注册OneNet账号并创建设备,获取设备ID和API Key。 2. 下载并安装Arduino IDE,安装ESP8266开发板支持。 3. 在Arduino IDE中安装PubSubClient库,该库可以实现ESP8266与MQTT服务器的通信。 4. 编写ESP8266的程序,包括WiFi连接和MQTT连接部分。在MQTT连接部分,需要设置MQTT服务器地址、端口号、设备ID和API Key等参数。 5. 将程序上传到ESP8266开发板中,启动设备并连接到WiFi网络。 6. 在OneNet平台上创建数据流,并将数据流与设备关联。 7. 在ESP8266的程序中,通过PubSubClient库实现数据的发布和订阅,将设备采集的数据发送到OneNet平台。 以上是ESP8266通过MQTT连接OneNet平台的基本步骤,具体实现过程需要根据具体情况进行调整。 ### 回答2: ESP8266是一款资源占用较少、平台支持丰富的物联网芯片,而MQTT是一种轻量级的通信协议,被广泛应用于物联网领域。OneNet是中国移动物联网推出的云平台服务,提供物联网数据存储、应用管理等功能。在实际应用中,如何通过MQTT连接ESP8266和OneNet是非常重要的。 首先,需要在OneNet平台上创建设备和数据流。具体步骤如下: 1. 登录OneNet平台,点击“创建产品”; 2. 输入产品名称、编码、设备数量等信息,点击“下一步”; 3. 在设备信息页面,填写设备名称、描述信息、设备类型等,点击“下一步”; 4. 在数据流信息页面,填写数据流名称、数据类型、单位等,点击“创建产品”。 接下来,需要使用MQTT协议连接OneNet平台和ESP8266。具体步骤如下: 1. 安装MQTT客户端,例如Eclipse Paho MQTT客户端; 2. 在ESP8266编写程序,包括WIFI连接和MQTT连接两部分。WIFI连接可使用ESP8266 Wi-Fi库实现MQTT连接可使用PubSubClient库实现(通过Arduino IDE添加库); 3. 在程序中,需要填写OneNet平台的设备CCID、MQTT地址、端口、设备Token等信息; 4. ESP8266通过MQTT协议与OneNet平台建立连接,可以发布数据流或订阅数据流等操作。 总体来说,ESP8266通过MQTT连接OneNet平台需要以下步骤:创建OneNet设备和数据流、使用MQTT客户端连接OneNet平台、在程序中填写必要信息、建立连接并实现数据传输。在实际应用中,需要根据需求不断优化代码并进行测试。 ### 回答3: ESP8266是一款极具性价比的物联网芯片,它的开发板价格低廉,拥有丰富的GPIO和ADC输入输出口,可以与各种传感器和执行器进行交互。而MQTT作为一种轻量级的物联网协议,其传输数据的效率高、占用的带宽少,在物联网应用中得到了广泛的应用。而OneNet云平台则提供了云端数据存储与管理、远程控制等服务,是物联网开发的重要工具之一。 将ESP8266与OneNet云平台结合起来,可以实现各种智能化的控制和响应,例如远程控制家中的灯光、监控室内温湿度等。 实现ESP8266通过MQTT连接OneNet云平台主要分为以下几个步骤: 1.注册OneNet账号、创建设备和数据流 在OneNet账号中创建设备,拥有特定的设备ID和API Key。同时,需要在设备中创建对应的数据流,例如温度、湿度等,将来ESP8266采集的数据会通过MQTT协议传输到这些数据流中。 2.配置ESP8266开发板 需要先将ESP8266与电脑连接,配置Wi-Fi和Arduino IDE环境,下载并导入MQTT库等工作。这些步骤可以参考ESP8266的官方文档或者开发者社区中的资料。 3.实现MQTT传输协议 在ESP8266中可以利用MQTT实现数据的传输,该库提供了MQTT协议的相关接口函数,例如连接OneNet平台、订阅和发布数据流、解析回调函数等。需要在代码中填写OneNet平台分配的设备ID、API Key和数据流等信息。 4.测试与调试 在ESP8266和OneNet平台完成MQTT连接和数据传输后,可以通过OneNet控制台观察数据流的变化,验证ESP8266的数据采集和传输功能是否正常。如果有问题,需要检查代码中的配置信息、MQTT协议的回调函数等。 同时,为了节约电量和延长ESP8266的寿命,可以采用低功耗模式、深度睡眠模式等技术来优化ESP8266的电源管理。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值