微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ESP32 MQTT 客户端卡在 client.subscribe()

如何解决ESP32 MQTT 客户端卡在 client.subscribe()

我正在尝试使用 MQTTClient 将我的 ESP32 连接到 mosquitto,但是在尝试订阅任何主题时它会卡住,并且不会收到消息。我已经搜索了整个下午,找不到任何解决方案。我还使用 MQTTBox 测试了代理,我可以很好地订阅和发布。

这是上传到 NodeMCU 的代码

#include <Arduino.h>
#include <MQTTClient.h>
#include "WiFi.h"
#include "secrets.h"
#include <WiFiManager.h>         

WiFiClient net = WiFiClient();
MQTTClient client = MQTTClient(256);

void connectMQTT(){
  
  WiFiManager wifiManager;

  if(!wifiManager.autoConnect(WIFI_SSID,WIFI_PASSWORD)) {
    Serial.println("Failed to connect and hit timeout");
    //reset and try again,or maybe put it to deep sleep
    ESP.restart();
    delay(1000);
  } 

  Serial.println("Connected to Wi-Fi");

  // Connect to the MQTT broker
  client.begin(MQTT_ENDPOINT,MQTT_PORT,net);

  // Create a message handler
  client.onMessage(messageHandler);

  Serial.println("Connecting to MQTT");

  while (!client.connect(THINGNAME)) {
    Serial.print(".");
    delay(100);
  }

  if(!client.connected()){
    Serial.println("MQTT Timeout!");
    return;
  }
  Serial.println("MQTT Connected!");
  Serial.println("Subscribing to irtopic");

  // Subscribe to topics
  client.subscribe("esp32/ir");

  Serial.println("");
  Serial.println("Success!");
}

void setup() {
  Serial.begin(115200);
  connectMQTT();
}

和串行输出

*WM: 
*WM: AutoConnect
*WM: Connecting as wifi client...
*WM: Using last saved values,should be faster
*WM: Connection result: 
*WM: 3
*WM: IP Address:
*WM: 192.168.0.155
Connected to Wi-Fi
Connecting to MQTT
MQTT Connected!
Subscribing to irtopic

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。