allow_anonymous false 后如何继续使用+#通配符
时间: 2023-08-14 07:05:29 浏览: 56
如果在 MQTT 服务器上设置了 `allow_anonymous false`,则客户端必须提供用户名和密码才能连接到服务器并订阅主题。此时,客户端可以在连接时提供用户名和密码,或者在订阅主题时使用特殊规则 `+` 和 `#`。
例如,假设您在 MQTT 服务器上创建了一个用户名为 `user`,密码为 `password` 的用户,可以使用以下代码在 ESP32 上连接并订阅主题:
```cpp
#include <WiFi.h>
#include <PubSubClient.h>
const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
const char* mqtt_server = "your_MQTT_server_address";
const int mqtt_port = 1883;
const char* mqtt_user = "user";
const char* mqtt_password = "password";
WiFiClient espClient;
PubSubClient client(espClient);
void setup() {
// Connect to Wi-Fi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
}
// Connect to MQTT broker
client.setServer(mqtt_server, mqtt_port);
client.setCallback(callback);
while (!client.connected()) {
if (client.connect("ESP32-client", mqtt_user, mqtt_password)) {
client.subscribe("home/livingroom/+/temperature");
client.subscribe("home/#");
}
delay(1000);
}
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
}
void callback(char* topic, byte* payload, unsigned int length) {
// Handle incoming message
}
void reconnect() {
while (!client.connected()) {
if (client.connect("ESP32-client", mqtt_user, mqtt_password)) {
client.subscribe("home/livingroom/+/temperature");
client.subscribe("home/#");
}
delay(1000);
}
}
```
在这个例子中,当 ESP32 连接到 MQTT 服务器时,它会提供用户名和密码,并订阅 `home/livingroom/+/temperature` 和 `home/#` 这两个主题,其中 `+` 和 `#` 分别代表单个层级和多个层级的通配符。当有消息发布到这些主题时,ESP32 将会收到并调用 `callback` 函数进行处理。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)