本文主要是介绍【ESP32】mqtt 发送和接收,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、首先下载MQTT-X软件
二、下载后建立mqtt,设置这些参数
点击连接,然后创建topic主题
三、程序
注释已经写的很清楚了
#include <WiFi.h> // 包含WiFi库,用于连接WiFi网络
#include <PubSubClient.h> // 包含MQTT库,用于与MQTT服务器通信// WiFi网络名称和密码
const char *ssid = "li123";
const char *psw = "li123321";// MQTT服务器地址
const char *mqtt_broker = "broker.emqx.io";// 订阅的主题
const char *topic = "esp32/test";// MQTT用户名和密码
const char *mqtt_username = "Li_MQTT";
const char *mqtt_password = "li123321";// MQTT服务器端口号
const int mqtt_port = 1883;// 创建WiFi客户端对象
WiFiClient espClient;// 创建MQTT客户端对象,并传入WiFi客户端对象
PubSubClient client(espClient);// 当接收到MQTT消息时调用的回调函数
void callback(char *topic, byte *payload, unsigned int length) {// 打印主题Serial.print("Received message on topic: ");Serial.println(topic);// 打印负载Serial.print("Payload: ");for (unsigned int i = 0; i < length; i++) {Serial.print((char)payload[i]);}Serial.println();// 在这里可以添加处理消息的代码
}void setup() {// 初始化串口通信,设置波特率为115200Serial.begin(115200);// 连接到WiFi网络WiFi.begin(ssid, psw);// 循环直到连接到WiFiwhile (WiFi.status() != WL_CONNECTED) {delay(500);Serial.println("Connecting to WiFi...");}// 打印WiFi连接成功信息Serial.println("Connected to WiFi");// 设置MQTT服务器的地址和端口号client.setServer(mqtt_broker, mqtt_port);// 设置MQTT消息回调函数client.setCallback(callback);// 循环直到连接到MQTT服务器while (!client.connected()) {// 创建一个唯一的客户端IDString clientId = "esp32-client-";clientId += WiFi.macAddress();// 尝试连接到MQTT服务器Serial.printf("Connecting to MQTT broker: %s\\n", clientId.c_str());if (client.connect(clientId.c_str(), mqtt_username, mqtt_password)) {// 如果连接成功,打印连接成功信息Serial.println("Connected to MQTT broker");// 订阅主题,以便接收消息client.subscribe(topic);} else {// 如果连接失败,打印错误信息Serial.print("Connection failed with state: ");Serial.print(client.state());// 等待2秒后重试delay(2000);}}
}void loop() {// 检查MQTT客户端是否连接,并处理任何传入的消息client.loop();// 等待100毫秒,避免过于频繁的循环检查
// client.publish(topic, "aa");//发送delay(100);
}
实验现象:
这篇关于【ESP32】mqtt 发送和接收的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!