NodeMcu连接阿里云物联网平台遇到MQTT Connect err : -2 该如何解决

1、先到PubSubClient.h文件中通过报错内容“-2“,找到MQTT_CONNECT_FAILED语句

2、再到PubSubClient.cpp文件中找到MQTT_CONNECT_FAILED的相关内容

3、通过else语句找到上层的if语句内容得知result最终返回值应该是0:

4、误打误撞,最终是换了个wifi解决了这个报错问题,所以可以追究else语句的内容:

5、查询了”this->ip”的定义,找到这个函数定义:

6、根据setServer()函数传入的IPAddress ip值,可以查询到:

7、到这里好像没什么头绪了,于是回去看看了arduino.ino引入的头文件:

8、于是到AliyunIoTSDK.h文件那找SetServer()函数相关的内容,看到了这条解析,据此可以推断,是wifi连接不稳定导致的!

9、这是换个wifi连接后串口输出的数据:

自此,解决掉”MQTT Connect err : -2 “的问题!

附上Arduino.ino代码:

#include <ESP8266WiFi.h>
static WiFiClient espClient;

#include <AliyunIoTSDK.h>

#define PRODUCT_KEY     "a1zdD6Vo6IT"//替换自己的PRODUCT_KEY
#define DEVICE_NAME     "MY09s59vXPhFF76Z9nus"//替换自己的DEVICE_NAME
#define DEVICE_SECRET   "mMrQ7qbp3KVCDVRDGXUfLvBL38dEDmRI"//替换自己的DEVICE_SECRET
#define REGION_ID       "cn-shanghai"//默认cn-shanghai

#define WIFI_SSID       "space"//替换自己的WIFI
#define WIFI_PASSWD     "12345678."//替换自己的WIFI

const int trigPin = 5;  //D1
const int echoPin = 4;  //D2

int duration;
int distance;

unsigned long lastMs = 0;

//wifi 连接
void wifiInit(const char *ssid, const char *passphrase)
{
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, passphrase);
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(1000);
    Serial.println("WiFi not Connect");
  }
  Serial.println("Connected to AP");
}

int UltrasonicFirst()
{
    digitalWrite(trigPin, LOW);
    delayMicroseconds(2);
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);

    duration = pulseIn(echoPin, HIGH);
    distance= duration*0.034/2;
    
    return distance;

}


void setup()
{
  pinMode(trigPin, OUTPUT); 
  pinMode(echoPin, INPUT);
    
  Serial.begin(115200);

  //连接到wifi
  wifiInit(WIFI_SSID, WIFI_PASSWD);

  //初始化 iot,需传入 wifi 的 client,和设备产品信息
  AliyunIoTSDK::begin(espClient, PRODUCT_KEY, DEVICE_NAME, DEVICE_SECRET, REGION_ID);

}

void loop()
{
  AliyunIoTSDK::loop();//必要函数

  if (millis() - lastMs >= 2000)//每2秒发送一次
  {
    lastMs = millis();

    //发送超声波检测数值到云平台
    AliyunIoTSDK::send("Ultrasonic", UltrasonicFirst());
  }
}

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王鸽子

你的鼓励都是我前进的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值