Firebase не переподключался после того, как интернет вернулся в esp 12E / NodeMcu - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть этот код для повторного подключения:

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 голосов
/ 25 марта 2019

В моем случае исправьте Firebase.cpp от philipnguyen8588, и исправьте FirebaseArduino.cpp библиотек firebasearduino и работали отлично 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();
}

Вы можете изменить все функции get на: return -1 для вашего кода

0 голосов
/ 14 ноября 2018

Попробуйте использовать ESP.reset();

Пример:

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

}

...