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