NodeMCU ESP8266 и БД FireBase
- Войдите на сайт для отправки комментариев
Пнд, 14/01/2019 - 21:41
Вечер добрый форумчане!
Работаю над одним проектом - взаимодействия андроид приложения с NodeMCU (контроллер) по средствам БД FireBase. В целом всё работает, но...
Проходит неопределённое время и контроллер считывает нулевое значение с БД, а судя по "мулькам" проверки подключения к БД и вовсе не читает значения, но...
Сам контроллер значения отправляет в БД и притом успешно, так как в самой БД я вижу изменения.
Предполагаю, что БД не даёт считывать значения, на записывать в ней возможность есть.
Или же это связано с контроллером?
P.S. Перезапуск контроллера помогает решить проблему, но на неопределённое время. И ДА, програмное переподключение к БД не помогает.
Как я понял, в силу пройденного времени, людей встречавших эту проблему - 0. Или ни кто не делал таких проектов. Жаль(
В целом, понаблюдав за Node MCU заметил следующее:
- Если NodeMCU не был включён (не работал) долго (от часа (примерно) и более), то приёма данных от БД FireBase хватало на долго.
- Если же после сбоя приёма (повтарюсь, что после сбоя с передачей данных в БД из NodeMCU проблем нет) данных из БД FireBase в NodeMCU перегрузить его, то сбой произайдёт в кратчайшее время или же сразу.
В общем, возможно, это аппаратное что-то... ХЗ что, но что-то странное в этом есть!)
Как сильный любитель firebird - расскажите плиз как производите подключение?
В идеале часть скетча - пример работы.
Через api работаете с БД?
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 "пароль_ви_фи"
09
WiFiServer server(80);
10
void
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
}
...ни чего нового, всё СТАНДАРТНО
...ни чего нового, всё СТАНДАРТНО
а...да, действительно.
и это я перепутал (невнимательно почитал), это не FireBird
кстати - зачем вы сервер запускаете? или скетч должен принимать запросы?
возможно в этом и ошибка.
Ща попробуем, может вы и правы!)