Я пытаюсь подключить свой ESP32 к mosquitto с помощью MQTTClient, но он застревает при попытке подписаться на любую тему и не получает сообщений. Я искал весь день и не нашел решения. Я также протестировал брокера с 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
он просто показывает соединение, а не подписку
Существует ряд библиотек MQTTClient (включая модуль nodemcu, который, похоже, не соответствует вашему коду, Вот этот не поддерживает подписку, Вот этот требует, чтобы вы вызывали client.loop()
). Какую библиотеку вы используете?
Что говорит файл журнала Mosquitto? Показывает связь?