在esp 12E / NodeMcu中重新连接互联网后,Firebase没有重新连接

时间:2018-11-04 13:01:40

标签: firebase firebase-realtime-database arduino esp8266 reconnect

我有重新连接的这段代码:

void loop() {  
  if(WiFi.status() != WL_CONNECTED || WiFi.status() != 3) {  
    wifiConnect();  
    Serial.println("Trying to reconnect to firebase");  
    delay(1000);  
    Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);   
  }  

但是如果互联网断开连接并再次重新连接,这种情况Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH)不会再次连接到Firebase吗?!

那是为什么,我该如何解决?

2 个答案:

答案 0 :(得分:0)

尝试使用ESP.reset();

示例:

if (Firebase.failed()) {
  Serial.print("setting number failed:");
  Serial.println(Firebase.error());           
  ESP.reset();      
  return;

}

答案 1 :(得分:0)

就我而言,请通过philipnguyen8588修复Firebase.cpp,并修复firebasearduino库的FirebaseArduino.cpp,并且可以正常工作 1)更改Firebase.cpp:

void FirebaseCall::analyzeError(char* method, int status, const std::string& path_with_auth) {
    if (status != 200) {
    error_ = FirebaseError(status,
                           std::string(method) + " " + path_with_auth +
                              ": " + http_->errorToString(status));
  }
}

收件人:

void FirebaseCall::analyzeError(char* method, int status, const std::string& path_with_auth) {
    if (status != 200) {
    error_ = FirebaseError(status,
                           std::string(method) + " " + path_with_auth +
                              ": " + http_->errorToString(status));
  }
  else {
    error_ = FirebaseError();
  }
}

2)更改FirebaseArduino.cpp:

int FirebaseArduino::getInt(const String& path) {
  getRequest(path);
  if (failed()) {
    return 0;
  }
  return FirebaseObject(req_.get()->response().c_str()).getInt();
}

收件人:

int FirebaseArduino::getInt(const String& path) {
  getRequest(path);
  if (failed()) {
    return -1;
  }
  return FirebaseObject(req_.get()->response().c_str()).getInt();
}

您可以将所有获取功能更改为:返回-1 以获取代码