MQTT中文站
  • 首页
  • MQTT 学习
    • MQTT 入门
    • MQTT 进阶
    • MQTT 编程
    • MQTT 实例
    • MQTT 要点
    • MQTT5 要点
    • MQTT 工具
    • MQTT 客户端库
    • MQTT 服务器
    • Zigbee2MQTT
    • Sparkplug
    • Home Assistant
    • Node-RED
      • Node-RED 安装部署
      • Node-RED 用户指南
      • Node-RED 创建节点
      • Node-RED 示例教程
      • Node-RED 开发流程
      • Node-RED 接口参考
      • Node-RED 配置模板
      • Node-RED 常见问题
  • MQTT 规范
    • MQTT 5 规范
    • MQTT 3.1.1 规范
    • MQTT 3.1 规范
    • MQTT-SN v1.2规范
    • Sparkplug® v3.0.0规范
  • 产品中心
  • 解决方案
    • 环境监测
    • 工业制造
    • 智慧水利
    • 水利管网
    • 积水监测
    • 综合管廊
    • 档案库房
    • 交通物流
    • 智慧城市
    • 智慧农业
    • 智慧养殖
    • 能源电力
    • 石油石化
    • 智能家居
    • 物联网
    • 汽车与出行
  • 使用文档
  • MQTT 云平台
  • 登录
  • 注册

ESP8266接入MQTT物联网平台示例代码

2 年前 • MQTT 教程

1. 简介

MQTT(Message Queuing Telemetry Transport)是一种轻量级、灵活的物联网消息交换和数据传递协议,旨在实现 IoT 开发人员在灵活性和硬件/网络资源之间的平衡。而 ESP8266 是一款高度集成的 Wi-Fi SoC 解决方案,具有低功耗、紧凑设计和高稳定性,可满足各种 IoT 应用需求。ESP8266具备完整的自包含Wi-Fi网络功能,可独立应用,也可作为从机运行于其他主机 MCU 上。

本项目旨在展示如何将 ESP8266 连接到MQTT物联网平台,并使用 Arduino IDE 进行编程。

2. 所需硬件与软件

  • ESP8266
  • Arduino IDE
  • MQTT物联网平台
  • Broker: iot.mqtt.cn
  • TCP Port: 1883
  • Websocket Port: 8083

3. 准备工作

在开始之前,请确保您已安装 Arduino IDE,并已连接 ESP8266 开发板。

4. 编写 ESP8266 代码

首先,我们将导入 ESP8266WiFi 和 PubSubClient 库。ESP8266WiFi 库用于将 ESP8266 连接到 Wi-Fi 网络,而 PubSubClient 库用于使 ESP8266 连接到 MQTT 服务器以发布消息和订阅主题。

#include <ESP8266WiFi.h>
#include <PubSubClient.h>

接下来,设置 Wi-Fi 的名称和密码,以及 MQTT 服务器的连接地址和端口。

// WiFi
const char *ssid = "您的WiFi名称"; // 输入您的 WiFi 名称
const char *password = "您的WiFi密码";  // 输入您的 WiFi 密码

// MQTT Broker
const char *mqtt_broker = "iot.mqtt.cn";
const char *topic = "esp8266/test";
const char *mqtt_username = "emqx";
const char *mqtt_password = "public";
const int mqtt_port = 1883;

打开串行连接,以便输出程序的结果,并连接到 Wi-Fi 网络。

// 设置串行连接波特率为 115200
Serial.begin(115200);

// 连接到 Wi-Fi 网络
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.println("正在连接到WiFi...");
}
Serial.println("已连接到WiFi网络");

接下来,设置 MQTT 服务器,并编写回调函数。同时,将连接信息打印到串口监视器上。

client.setServer(mqtt_broker, mqtt_port);
client.setCallback(callback);
while (!client.connected()) {
    String client_id = "esp8266-client-";
    client_id += String(WiFi.macAddress());
    Serial.printf("客户端 %s 连接到公共 MQTT 代理\n", client_id.c_str());
    if (client.connect(client_id.c_str(), mqtt_username, mqtt_password)) {
        Serial.println("已连接到公共 EMQX MQTT 代理");
    } else {
        Serial.print("连接失败,状态:");
        Serial.print(client.state());
        delay(2000);
    }
}

一旦 MQTT 服务器连接成功,ESP8266 将向 MQTT 服务器发布消息并订阅主题。

// 发布和订阅
client.publish(topic, "Hello MQTT");
client.subscribe(topic);

最后,将主题名称打印到串行端口,然后打印收到的每个字节的消息。

void callback(char *topic, byte *payload, unsigned int length) {
    Serial.print("收到主题消息:");
    Serial.println(topic);
    Serial.print("消息内容:");
    for (int i = 0; i < length; i++) {
        Serial.print((char) payload[i]);
    }


    Serial.println();
    Serial.println("-----------------------");
}

5. 完整的 ESP8266 代码

#include <ESP8266WiFi.h>
#include <PubSubClient.h>

// WiFi
const char *ssid = "您的WiFi名称"; // 输入您的 WiFi 名称
const char *password = "您的WiFi密码";  // 输入您的 WiFi 密码

// MQTT Broker
const char *mqtt_broker = "iot.mqtt.cn";
const char *topic = "esp8266/test";
const char *mqtt_username = "emqx";
const char *mqtt_password = "public";
const int mqtt_port = 1883;

WiFiClient espClient;
PubSubClient client(espClient);

void setup() {
    // 设置串行连接波特率为 115200
    Serial.begin(115200);

    // 连接到 WiFi 网络
    WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.println("正在连接到WiFi...");
    }
    Serial.println("已连接到WiFi网络");

    // 连接到 MQTT 代理
    client.setServer(mqtt_broker, mqtt_port);
    client.setCallback(callback);
    while (!client.connected()) {
        String client_id = "esp8266-client-";
        client_id += String(WiFi.macAddress());
        Serial.printf("客户端 %s 连接到公共 MQTT 代理\n", client_id.c_str());
        if (client.connect(client_id.c_str(), mqtt_username, mqtt_password)) {
            Serial.println("已连接到公共 EMQX MQTT 代理");
        } else {
            Serial.print("连接失败,状态:");
            Serial.print(client.state());
            delay(2000);
        }
    }

    // 发布和订阅
    client.publish(topic, "Hello EMQX");
    client.subscribe(topic);
}

void callback(char *topic, byte *payload, unsigned int length) {
    Serial.print("收到主题消息:");
    Serial.println(topic);
    Serial.print("消息内容:");
    for (int i = 0; i < length; i++) {
        Serial.print((char) payload[i]);
    }
    Serial.println();
    Serial.println("-----------------------");
}

void loop() {
    client.loop();
}

6. 运行与测试

使用 Arduino IDE 将完整的代码上传到 ESP8266,并打开串口监视器。在串口监视器中,您将看到 ESP8266 连接到 Wi-Fi 和 MQTT 服务器的状态信息。

接下来,使用 MQTTX 客户端与 MQTT物联网平台建立连接,并向 ESP8266 发送消息。您可以在串口监视器中查看 ESP8266 收到的消息。

打赏赞(2)微海报分享
char esp8266 mqtt topic 物联网平台

MQTT 术语表:深入了解 MQTT 协议

快速入门MQTTnet:在.NET 7中实现MQTT消息传输

猜你喜欢

物联网智能厨电设备管控方案

物联网智能厨电设备管控方案

10/18
2024
改善基础设施:HiveMQ如何推动智能城市发展

改善基础设施:HiveMQ如何推动智能城市发展

08/07
2024
为什么企业选择全托管HiveMQ云进行MQTT部署

为什么企业选择全托管HiveMQ云进行MQTT部署

07/01
2024
  • 解决方案
    • 智能家居
    • 汽车与出行
    • 工业制造
    • 能源电力
    • 石油石化
    • 交通物流
    • 零售
  • 学习
    • MQTT 规范
    • MQTT 教程
    • MQTT 软件
    • MQTT 客户端库
    • MQTT 服务器
    • 工具和应用程序
  • 关于我们
    • 了解创科慧仁
    • 加入创科慧仁
    • 投资者关系
    • 新闻动态
    • 合作伙伴
    • 联系我们
  • 友情链接
    • Modbus中文网
    • 跳动符号官网
    • 物联网世界
    • RFID世界网
    • 深圳物联网协会
    • isoftstone软通动力
    • 中国发展战略学研究会
    • B.P商业伙伴
  • 在线客服
  • 全国客户服务热线
    4006909885
  • 官方公众号
  • 联系邮箱
    contact@mqtt.cn
Copyright © 2025 MQTT中文站. All rights reserved.Designed by nicetheme. 京ICP备20029519号
在线客服

微信咨询

微信咨询

4006909885

服务热线 7*24小时

电话咨询
  • 首页
  • MQTT 学习
    • MQTT 入门
    • MQTT 进阶
    • MQTT 编程
    • MQTT 实例
    • MQTT 要点
    • MQTT5 要点
    • MQTT 工具
    • MQTT 客户端库
    • MQTT 服务器
    • Zigbee2MQTT
    • Sparkplug
    • Home Assistant
    • Node-RED
  • MQTT 规范
    • MQTT 5 规范
    • MQTT 3.1.1 规范
    • MQTT 3.1 规范
    • MQTT-SN v1.2规范
    • Sparkplug® v3.0.0规范
  • 产品中心
  • 解决方案
    • 环境监测
    • 工业制造
    • 智慧水利
    • 水利管网
    • 积水监测
    • 综合管廊
    • 档案库房
    • 交通物流
    • 智慧城市
    • 智慧农业
    • 智慧养殖
    • 能源电力
    • 石油石化
    • 智能家居
    • 物联网
    • 汽车与出行
  • 使用文档
  • MQTT 云平台
  • 登录
  • 注册
string(5) "2.0.0"