arrowcircle
New member
Добрый вечер!
На nodemcu v3 и arduino IDE через PlatformIO (все последних версий) имею странную проблему.
В начале работы программы все работает замечательно, однако после какого-то количества времени начинают вылезать ошибки.
При этом ошибки вылезают совершенно случайно, иногда запросы восстанавливаются и продолжают проходить после ошибки. Такое может случиться как на 3 запросе, так и на 50. Подряд может не пройти 1 запрос, а может и 20. Сервер при этом точно доступен, а WiFi.status() == WL_CONNECTED.
К модулю подключен OLED-экран, на котором по таймеру (без делейев, на millis) отображаются результаты запросов в интернет.
Запросы также делаются по таймеру.
loop выглядит так (пробовал добавлять yield):
Все хендлеры разнесены по разным файлам, httpclient используется и объявлен в api_handler.
Что интересно, если объявление переменной "HTTPClient http;" перенести внутрь метода, который делает запросы, например как ниже, то модуль вообще не может достучаться до API с той же ошибкой.
Важно, сайт без https. Сначала был с https, но подключиться к нему с модуля не удалось.
Еще одно наблюдение, таких ошибок без экрана было гораздо меньше.
В проекте используются библиотеки:
Или это кривые китайские модули? Подскажите, пожалуйста, советом.
На nodemcu v3 и arduino IDE через PlatformIO (все последних версий) имею странную проблему.
В начале работы программы все работает замечательно, однако после какого-то количества времени начинают вылезать ошибки.
Код:
[HTTP] GET... failed, error: connection refused
Wifi status: 3
Wifi signal: -53
К модулю подключен OLED-экран, на котором по таймеру (без делейев, на millis) отображаются результаты запросов в интернет.
Запросы также делаются по таймеру.
loop выглядит так (пробовал добавлять yield):
Код:
void loop() {
if (isWifiConnected() == true) { startNtpClient(); }
yield();
scrapeApiHandler();
yield();
updateDisplayHandler();
yield();
loopButton();
yield();
}
Что интересно, если объявление переменной "HTTPClient http;" перенести внутрь метода, который делает запросы, например как ниже, то модуль вообще не может достучаться до API с той же ошибкой.
Важно, сайт без https. Сначала был с https, но подключиться к нему с модуля не удалось.
Код:
void scrapeApi() {
HTTPClient http;
if (WiFi.status() != WL_CONNECTED) { return; }
Serial.println("======= Scraping API");
String url = "http://mysite.com";
http.begin(url);
int httpCode = http.GET();
if (httpCode > 0) {
if (httpCode == HTTP_CODE_OK) {
String payload = http.getString();
parseServerResponse(payload);
}
} else {
Serial.print("[HTTP] GET... failed, error: ");
Serial.println(http.errorToString(httpCode).c_str());
printWiFiDebug();
}
http.end();
}
В проекте используются библиотеки:
- tzapu/wifimanager#development
- gmag11/NtpClient
- ArduinoJson@5.13.2
- ESP8266_SSD1306@4.0.0
Или это кривые китайские модули? Подскажите, пожалуйста, советом.