Firebase не удалось повторно подключить ESP8266

#firebase #arduino

# #огневая база #arduino

Вопрос:

Я решил проблему. я нашел ошибку в библиотеке Firebase.cpp => void FirebaseCall::analyzeError Вы должны изменить этот код перед

 void FirebaseCall::analyzeError(char* method, int status, const std::stringamp; 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::stringamp; path_with_auth) {
if (status != 200) {
error_ = FirebaseError(status,
std::string(method)   " "   path_with_auth  
": "   http_->errorToString(status));
} else {
error_ = FirebaseError();
}
}
 

Как только подключение к Интернету отключается, оно снова подключается. Когда я снова подключаюсь, firebase не подключается. Поэтому, когда проблема снова подключается, она снова не подключается к firebasis. Как мне это сделать?

 boolean WiFiReturns() {
    if (WiFi.localIP() == IPAddress(0, 0, 0, 0))
        return 0;

    switch (WiFi.status()) {
        case WL_NO_SHIELD: return 0;
        case WL_IDLE_STATUS: return 0;
        case WL_NO_SSID_AVAIL: return 0;
        case WL_SCAN_COMPLETED: return 1;
        case WL_CONNECTED: return 1;
        case WL_CONNECT_FAILED: return 0;
        case WL_CONNECTION_LOST: return 0;
        case WL_DISCONNECTED: return 0;
        default: return 0;
    }
}

void firebasereconnect() {
    Serial.println("Trying to reconnect");
    Firebase.begin(firebaseURl, authCode);
}

void loop() {

    if (!WiFiReturns()) { 
        WiFi.isConnected();
        digitalWrite(WIFILED, HIGH);
        firebasereconnect();
    } else { 
        digitalWrite(WIFILED, LOW);
    }
}
 

Ответ №1:

Проблема, вероятно, в том, что вы пытаетесь подключиться к firebase, пока ваше соединение недоступно, что может не сработать. Попробуйте изменить:

 if( !WiFiReturns() )
 

Для

 if( WiFiReturns() )
 

Кроме того, в настоящее время вы будете вызывать firebasereconnect() каждый раз, когда вызывается ваш цикл. Вероятно, вам не хватает инструкции if при повторном подключении. Я думаю, вы хотели сделать это с WiFi.isConnected() помощью (что, кстати, не является функцией библиотеки arduino WiFi). Рассмотрим что-то вроде этого:

 if ( WiFiReturns() ) { 
    if( !Firebase.isConnected() ){ // replace this with your actual logic
        digitalWrite(WIFILED, HIGH);
        firebasereconnect();
    }
} else { 
 

Комментарии:

1. if ( WiFiReturns() ) { if( !WiFi.isConnected()){ // замените это на вашу фактическую логику digitalWrite(WIFILED, HIGH); firebasereconnect(); } } Я сделал это таким образом, но это не работает. Он больше не поедет на Огневую базу.

2. Что вы имеете в виду, говоря «Он больше не поедет на Огневую базу»?

3. Всегда выдает эту ошибку: «Попытка повторного подключения». Firebase не подключается повторно после отключения Интернета.

Ответ №2:

Вчера у меня была такая же проблема.

Я удалил Arduino и установил новую версию.

Затем в вашем board manager найдите «esp8266» и установите версию 2.1.0.

Затем, как вы видите на этом рисунке, нажмите на красную сторону.

Перейдите в раздел «пакеты> esp8266> оборудование> esp8266> 2.0.0 > инструменты> sdk> включить» и откройте «user_interface.h».

Здесь вы должны увидеть «#endif» внизу. Перед этим напишите эти строки и сохраните:

 typedef void (*freedom_outside_cb_t)(uint8 status); 
int wifi_register_send_pkt_freedom_cb(freedom_outside_cb_t cb);
void wifi_unregister_send_pkt_freedom_cb(void);
int wifi_send_pkt_freedom(uint8 *buf, int len, bool sys_seq);
 

Затем добавьте эту библиотеку firebase в свою папку Arduino.

Затем перейдите в раздел Эскиз -> Включить библиотеку -> Управление библиотеками. В этом окне введите «json» в поле поиска. Вы должны увидеть «Ардуинойсон Бенуа Бланшона». Понизьте его версию до 5.13.2.

Отправьте код на свой NodeMCU и наслаждайтесь.

Комментарии:

1. master/src/FirebaseHttpClient_Esp8266.cpp : В функции-члене ‘virtual std::string FirebaseHttpClientEsp8266::errorToString(int)’: /Users/…./Documents/Arduino/libraries/firebase-arduino-master/src/FirebaseHttpClient_Esp8266.cpp:83:11 : ошибка: ‘errorToString’ не является членом’HttpClient’

2. @stakabekor измените свою плату в меню «Инструменты». Сначала используйте NodeMCU 0.9. Если не работает, используйте NodeMCU 1.0