esp32 arduino mqtt 发布消息
时间: 2023-09-01 12:11:48 浏览: 109
esp32_arduino_mqtt_zhengtong.zip
以下是ESP32 Arduino使用MQTT客户端库发布消息的示例代码:
```
#include <WiFi.h>
#include <PubSubClient.h>
// WiFi和MQTT连接信息
const char* ssid = "你的WiFi名称";
const char* password = "你的WiFi密码";
const char* mqtt_server = "MQTT服务器地址";
const int mqtt_port = 1883;
const char* mqtt_username = "MQTT用户名";
const char* mqtt_password = "MQTT密码";
// MQTT客户端
WiFiClient espClient;
PubSubClient client(espClient);
// 发布的主题
const char* topic = "test_topic";
void setup() {
Serial.begin(115200);
// 连接WiFi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("WiFi connected");
// 连接MQTT服务器
client.setServer(mqtt_server, mqtt_port);
client.setCallback(callback);
while (!client.connected()) {
Serial.println("Connecting to MQTT...");
if (client.connect("ESP32Client", mqtt_username, mqtt_password)) {
Serial.println("MQTT connected");
} else {
Serial.print("failed with state ");
Serial.print(client.state());
delay(2000);
}
}
}
void loop() {
// 发布消息
client.publish(topic, "Hello, world!");
// 等待5秒钟
delay(5000);
}
void callback(char* topic, byte* payload, unsigned int length) {
// 处理接收到的消息
}
```
在上面的代码中,我们首先连接WiFi,然后连接MQTT服务器。在`setup()`函数中,我们使用`client.connect()`方法连接MQTT服务器,并在连接成功后订阅了一个主题。在`loop()`函数中,我们使用`client.publish()`方法发布一条消息到指定主题。最后,我们使用`delay()`方法等待5秒钟,然后再次发布消息。
注意,在`client.connect()`方法中,我们使用了以下参数:
- `"ESP32Client"`:客户端ID,可以任意设置;
- `mqtt_username`和`mqtt_password`:MQTT服务器的用户名和密码,如果不需要认证则可以不设置。
在发布消息时,我们使用了`client.publish()`方法,并将消息内容和发布的主题作为参数传入。
阅读全文