NodeMCU ESP8266 и БД FireBase

Bakston
Offline
Зарегистрирован: 14.01.2019

Вечер добрый форумчане!

Работаю над одним проектом - взаимодействия андроид приложения с NodeMCU (контроллер) по средствам БД FireBase. В целом всё работает, но...

Проходит неопределённое время и контроллер считывает нулевое значение с БД, а судя по "мулькам" проверки подключения к БД и вовсе не читает значения, но...

Сам контроллер значения отправляет в БД и притом успешно, так как в самой БД я вижу изменения.

Предполагаю, что БД не даёт считывать значения, на записывать в ней возможность есть.

Или же это связано с контроллером?

Bakston
Offline
Зарегистрирован: 14.01.2019

 P.S. Перезапуск контроллера помогает решить проблему, но на неопределённое время. И ДА, програмное переподключение к БД не помогает.

Bakston
Offline
Зарегистрирован: 14.01.2019

Как я понял, в силу пройденного времени, людей встречавших эту проблему - 0. Или ни кто не делал таких проектов. Жаль(

В целом, понаблюдав за Node MCU заметил следующее:

- Если NodeMCU не был включён (не работал) долго (от часа (примерно) и более), то приёма данных от БД FireBase хватало на долго.

- Если же после сбоя приёма (повтарюсь, что после сбоя с передачей данных в БД из NodeMCU проблем нет) данных из БД FireBase в NodeMCU перегрузить его, то сбой произайдёт в кратчайшее время или же сразу.

В общем, возможно, это аппаратное что-то... ХЗ что, но что-то странное в этом есть!)

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Как сильный любитель firebird - расскажите плиз как производите подключение?
В идеале часть скетча - пример работы.
Через api работаете с БД?

Bakston
Offline
Зарегистрирован: 14.01.2019
#include <FirebaseArduino.h>
#include <ESP8266WiFi.h>
// Определяем идентификаторы подключия к БД FireBase
#define FIREBASE_HOST "имя_хоста.firebaseio.com"
#define FIREBASE_AUTH "секретный_ключ"
// Определяем идентификаторы подключия к Wi-Fi
#define WIFI_SSID "имя_ви_фи"
#define WIFI_PASSWORD "пароль_ви_фи"
WiFiServer server(80);
void setup () {
// Подключаемся к Wi-Fi
  Serial.begin(115200);
  delay(10);
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(WIFI_SSID);
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
// Запускаем сервер
  server.begin();
  Serial.println("Server started");
// Определяем IP сервер
  Serial.println(WiFi.localIP());
// Подключаемся к БД FireBase
  Serial.println("Connecting to FB...");
  Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
  delay(10);
  }
  void loop() {   
//проверяем подключение к БД FireBase
//если произошла ошибка
    if (Firebase.failed()) 
    {
//пытаемся подключиться к FireBase, но в моём случае не помогает(
      Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
      delay(1000);
      return;
    }
    //если ошибок нет
    else
    {
//тут можно что-то покодить для мониторинга положительного результата подключения
    }
    delay(10);
}

 

Bakston
Offline
Зарегистрирован: 14.01.2019

...ни чего нового, всё СТАНДАРТНО

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Bakston пишет:

...ни чего нового, всё СТАНДАРТНО

а...да, действительно.

и это я перепутал (невнимательно почитал), это не FireBird

кстати - зачем вы сервер запускаете? или скетч должен принимать запросы?

возможно в этом и ошибка.

Bakston
Offline
Зарегистрирован: 14.01.2019

Ща попробуем, может вы и правы!)