You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ESP8266连接MQTT返回状态码5无法发布DHT11传感器数据问题咨询

问题排查与解决方案

核心问题原因

  • MQTT连接调用未传递已配置的用户名和密码:你当前使用的client.connect(clientID)仅传入了客户端ID,当Broker开启身份认证时,缺少用户名、密码参数就会返回*未授权(状态码5)*错误
  • 初始化逻辑顺序错误:你在setup()函数开头就调用了MQTT连接,此时WiFi尚未完成连接,该调用完全无效,属于冗余错误代码

修正步骤

  1. 删除setup()开头的无效连接代码:client.connect(clientID);
  2. 修改reconnect()函数中的MQTT连接调用,补充用户名、密码参数
  3. 在loop()函数中新增连接状态判断和client.loop()调用,确保运行过程中断开后可以自动重连
  4. (可选优化)将温湿度读取逻辑移到loop()中,避免每次上报的都是固定的初始值

修正后核心代码示例

修改后的reconnect函数

void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    // 补充用户名、密码参数
    if (client.connect(clientID, mqtt_user, mqtt_password)) {
      Serial.println("connected");
      client.publish(humidity_topic, String(Luftfeuchtigkeit).c_str(), true);
    } else {
      Serial.print("failed, state: ");
      Serial.println(client.state());
      Serial.println("attempting reconnection...");
      delay(5000);
    }
  }
}

修改后的setup函数

void setup() {
  Serial.begin(9600);
  dht.begin();
  // 删掉原来的client.connect无效调用
  setup_wifi();  
  client.setServer(mqtt_server, 1883); 
  if (!client.connected()) {  
    reconnect();  
  }  
  client.loop();
  // 温湿度读取可以保留或者移到loop中
  Luftfeuchtigkeit = dht.readHumidity();
  Temperatur = dht.readTemperature();
  // 后续上报逻辑保持不变
}

修改后的loop函数

void loop() {
  // 新增连接检测和client.loop调用
  if (!client.connected()) {
    reconnect();
  }
  client.loop();

  // 可选:每次上报前重新读取温湿度
  Luftfeuchtigkeit = dht.readHumidity();
  Temperatur = dht.readTemperature();

  delay(2000);
  Serial.print("Luftfeuchtigkeit: ");
  Serial.print(String(Luftfeuchtigkeit).c_str());
  Serial.println(" %");
  client.publish(humidity_topic, String(Luftfeuchtigkeit).c_str(), true); 
  
  Serial.print("Temperatur: ");
  Serial.print(Temperatur);
  Serial.println(" Grad Celsius");
  client.publish(temperature_topic, String(Temperatur).c_str(), true);

  delay(60000);
}

内容的提问来源于stack exchange,提问作者Schneggl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 17:24:02