• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь Нестабильная работа из-за роутера

beragumbo

New member
Здравствуйте! Делаю свой девайсик на ESP-12, столкнулся с частыми перезагрузками по непонятным причинам. Потратив в бесцельной отладке почти два вечера я заметил, что при работе от wi-fi, который я раздаю со смартфона, сбоев в работе нет! При работе от домашнего wi-fi роутера модуль постоянно перезагружается (через несколько минут после старта) и вообще ведёт себя очень неадекватно. Роутер вроде бы хороший, ASUS RT-N10U. Правда один раз удалось добиться аптайма в 10 часов, НО! Когда я пришёл домой и вроде бы подключился к роутеру с телефона - esp опять упал, но теперь даже с отключенными от роутера устройствами мне не удаётся получить стабильную работу. При работе от смартфона в качестве точки доступа по-прежнему перезагрузок нет, работает как часы
 

pvvx

Активный участник сообщества
Не пробовали увеличить расстояние от роутера до модуля?
Есть такой баг у ESP8266 - сильный сигнал некоторых пакетов по WiFi "сносит крышу" его station... Может как-раз тот вариант?
Ловлю стабильность/повторяемость этой беды в ESP8266 уже давно, но оно слишком "рамдомно" для того, чтобы локализовать и сделать патч. Если у вас оно стабильно, т.е. возникает четко при каком-то дейстсвии - отпишите все параметры.
Если это в ту тему, то есть зависимость - установка отключения подстройки частоты WiFi в esp_init_data_default.bin уменьшает вероятность вылета в несколько раз.


Но, думаю, что у вас другая причина проблемы - от роутера к ESP приходят разные запросы-пакеты UDP/TCP из сети, а от телефона - нет. Что-то криво написано и падает от них.

 
Последнее редактирование:

beragumbo

New member
Не пробовали увеличить расстояние от роутера до модуля?
Есть такой баг у ESP8266 - сильный сигнал некоторых пакетов по WiFi "сносит крышу" его station... Может как-раз тот вариант?
Ловлю стабильность/повторяемость этой беды в ESP8266 уже давно, но оно слишком "рамдомно" для того, чтобы локализовать и сделать патч. Если у вас оно стабильно, т.е. возникает четко при каком-то дейстсвии - отпишите все параметры.
Если это в ту тему, то есть зависимость - установка отключения подстройки частоты WiFi в esp_init_data_default.bin уменьшает вероятность вылета в несколько раз.


Но, думаю, что у вас другая причина проблемы - от роутера к ESP приходят разные запросы-пакеты UDP/TCP из сети, а от телефона - нет. Что-то криво написано и падает от них.
Спасибо, сейчас попробую отнести девайс на кухню. А то и правда, все тесты проводятся в полуметре от роутера!!! А он мощный, двухтрубный =)
По коду: у меня идёт стандартный GET запрос из примера, дальше парсинг. При нескольких подряд ошибках подключения запускается функция getSSL_fp(), которая представляет собой точно такой же (под копирку) GET запрос, на выходе которого я получаю свежий SSL отпечаток (GET ведётся с моего сервера, там скрипт выдаёт отпечаток одной строчкой)
Код:
if (WiFi.status() == WL_CONNECTED) {
    i = 0;
    httpCode = 0;
    payload = "";
    http.begin(host, httpsFingerprint);
    delay(500);
    httpCode = http.GET();
    if (httpCode > 0) {
      tries = 0;
      payload = http.getString();
    } else {
      tries++;
      if (tries > 2) {
        tries = 0;
        getSSL_fp();
      }
    }
    http.end();
 

pvvx

Активный участник сообщества
А delay(500); зачем? За его время может прийти более 500 пакетов из сети и куда они набьются?
Это не причина падения, но всё-же...
 

beragumbo

New member
А delay(500); зачем? За его время может прийти более 500 пакетов из сети и куда они набьются?
Это не причина падения, но всё-же...
Хммм, я тоже не понял. Но это было в примере, и я оставил (в примере было 1000!). Я подумал это время, чтобы информация успела дойти и обработаться.
Кстати модуль лежит через стену от роутера, пока что работает. Возможно проблема решена, спасибо! =)
А можно не расстояние увеличить, а допустим корпусом лишнее экранировать/заглушить? Звучит вроде бы логично.
 

pvvx

Активный участник сообщества
1) Измените, если не равен нулю в esp_init_data_default.bin 112-й байт freq_correct_en. Поставьте туда 0. Какая версия SDK вы не написали, но, впрочем, это влияет на все версии.
Далее - проверьте и потом уже пишите.
 

beragumbo

New member
1) Измените, если не равен нулю в esp_init_data_default.bin 112-й байт freq_correct_en. Поставьте туда 0. Какая версия SDK вы не написали, но, впрочем, это влияет на все версии.
Далее - проверьте и потом уже пишите.
А где его взять? Не нашёл в папке \AppData\Local\Arduino15\packages и в папке библиотек ардуино. Версия у меня 2.3.0
 

beragumbo

New member
Я к сожалению недостаточно крут для этого =) Я im.cmc через Arduino IDE, я так понял что нужно flash download tool или чем то похожим это делать?
 

pvvx

Активный участник сообщества
Я к сожалению недостаточно крут для этого =) Я im.cmc через Arduino IDE, я так понял что нужно flash download tool или чем то похожим это делать?
Тогда не парьтесь - попробуйте проверить на другом роутере.
Я описал возможные причины, а как вы их будете решать - это ваша задача.
 

beragumbo

New member
Тогда не парьтесь - попробуйте проверить на другом роутере.
Я описал возможные причины, а как вы их будете решать - это ваша задача.
На данный момент я уверен, что дело было в сильном сигнале, потому что всё работает отлично, оставлю на пару дней в соседней комнате
 

pvvx

Активный участник сообщества
На данный момент я уверен, что дело было в сильном сигнале, потому что всё работает отлично, оставлю на пару дней в соседней комнате
Значит правьте 112 байт в Flash настойках... Потом несите к роутеру и пишите сколько продержится - может вас это устроит. Меня - нет, т.к. на ESP8266 только из-за этого глюка ничего стабильного не сделать. Если надыбаю конкретно, какой пакет его убивает, то вставлю во все коды других модулей - будут убийцами ESP8266 :)
 

beragumbo

New member
Значит правьте 112 байт в Flash настойках... Потом несите к роутеру и пишите сколько продержится - может вас это устроит. Меня - нет, т.к. на ESP8266 только из-за этого глюка ничего стабильного не сделать. Если надыбаю конкретно, какой пакет его убивает, то вставлю во все коды других модулей - будут убийцами ESP8266 :)
Спасибо, может с пивом доберусь, попробую. Но по мне так проще частично экранировать сигнал, так как всё равно корпус будет =)
 

olegmsn

New member
Мне пришлось отдельную сетку поднимать для IoT. ESP очень не любит толпы широковещательных пакетов. А особенно какого нить iptv....
 
Сверху Снизу