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
01#include <FirebaseArduino.h>
02#include <ESP8266WiFi.h>
03// Определяем идентификаторы подключия к БД FireBase
04#define FIREBASE_HOST "имя_хоста.firebaseio.com"
05#define FIREBASE_AUTH "секретный_ключ"
06// Определяем идентификаторы подключия к Wi-Fi
07#define WIFI_SSID "имя_ви_фи"
08#define WIFI_PASSWORD "пароль_ви_фи"
09WiFiServer server(80);
10void setup () {
11// Подключаемся к Wi-Fi
12  Serial.begin(115200);
13  delay(10);
14  Serial.println();
15  Serial.println();
16  Serial.print("Connecting to ");
17  Serial.println(WIFI_SSID);
18  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
19  while (WiFi.status() != WL_CONNECTED) {
20    delay(500);
21    Serial.print(".");
22  }
23  Serial.println("");
24  Serial.println("WiFi connected");
25// Запускаем сервер
26  server.begin();
27  Serial.println("Server started");
28// Определяем IP сервер
29  Serial.println(WiFi.localIP());
30// Подключаемся к БД FireBase
31  Serial.println("Connecting to FB...");
32  Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
33  delay(10);
34  }
35  void loop() {  
36//проверяем подключение к БД FireBase
37//если произошла ошибка
38    if (Firebase.failed())
39    {
40//пытаемся подключиться к FireBase, но в моём случае не помогает(
41      Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
42      delay(1000);
43      return;
44    }
45    //если ошибок нет
46    else
47    {
48//тут можно что-то покодить для мониторинга положительного результата подключения
49    }
50    delay(10);
51}

 

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

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

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

Bakston пишет:

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

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

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

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

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

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

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