首页 > 解决方案 > 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

标签: arduinomqttpublish-subscribeesp32mosquitto

解决方案


推荐阅读