• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Разработка ‘библиотеки’ малого webсервера на esp8266.

Alex

Member
Ругается эклипс на оверлей "oiintr"
P.S Сорри, сам дурак :)
 
Последнее редактирование:

vad7

Active member
@pvvx, потестил немного. Получается такая загогулина - при подключение к вебсерверу по локалке на st_ip, если не реже чем в 1 минуту идет какое-то обращение - страница или идет вывод графика на закладке debug или попинговать st_ip, то вебсервер доступен хоть в течении часа.
Но если ровно минуту не обращаться к устройству по st_ip - устройство теряет соединение с роутером.
Восстановить можно только сбросом, например через ap_ip.

Ответ от 192.168.20.67: число байт=32 время=1мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=1мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=8мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=2мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=2мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=4мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=200мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=3мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=4мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=3мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=10мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=1мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=14мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=64мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=1мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=4мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=1мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=3мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=19мс TTL=255
Ответ от 192.168.20.67: число байт=32 время<1мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=12мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=82мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=1мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=6мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=33мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=32мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=3мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=1мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=1мс TTL=255
...
Ответ от 192.168.20.67: число байт=32 время=3мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=4мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=3мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=2мс TTL=255
Ответ от 192.168.20.67: число байт=32 время<1мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=420мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=3мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=1мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=5мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=2мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=1мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=2мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=36мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=6мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=2мс TTL=255
Ответ от 192.168.20.67: число байт=32 время=1мс TTL=255

Пакетов: отправлено = 2505, получено = 2505, потеряно = 0 (0% потерь)
Приблизительное время приема-передачи в мс:
Минимальное = 0мсек, Максимальное = 420 мсек, Среднее = 4 мсек
 
Последнее редактирование:

aloika

Active member
@pvvx, потестил немного. Получается такая загогулина - при подключение к вебсерверу по локалке на st_ip, если не реже чем в 1 минуту идет какое-то обращение - страница или идет вывод графика на закладке debug или попинговать st_ip, то вебсервер доступен хоть в течении часа.
Но если ровно минуту не обращаться к устройству по st_ip - устройство теряет соединение с роутером.
Восстановить можно только сбросом, например через ap_ip.
Что нужно сделать, чтобы повторить это? Я вчера скачал самую новую версию свалки, прошил, включил станцию (ap оставил), поиграл с оверлеем. Оставил на ночь, утром всё работает, проблем не заметил. Вы писали, что отключаете отладку - это что имеется ввиду? может в этом дело...
 

vad7

Active member
@aloika, оверлеи не использую, у меня вообще все отключено, кроме вебсервера и SNTP:
[HASHTAG]#define[/HASHTAG] PROGECT_NUMBER 2
[HASHTAG]#define[/HASHTAG] USE_WEB 80
[HASHTAG]#define[/HASHTAG] USE_SNTP 1


Так же не должно быть никакого обращения с вебсерверу в течении минуты, включая AJAX вывод графиков.

Отключен вывод отладочной информации в UART:
[HASHTAG]#define[/HASHTAG] DEBUGSOO 0
//#define DEBUG_UART 0
 

pvvx

Активный участник сообщества
у меня тут опять косяк обнаружился...
Перекомпилил, значит, я прошивку без отладки для ОТА, на целых 16 кило меньше стала. Настроил wifi как ap+st.
Подключил к роутеру и стал настраивать не через wifi, как обычно, а через локальную сеть. И вот через некоторое время девайс отваливается от роутера.
Причем в это время через wifi (192.168.4.1) девайс нормально отвечает.
И если зайти в настройки wifi, то стоит статус ip_got, а в ip, маске и т.д. нули.
Помогает только ресет.

В то же время, если через локалку постоянно страницы открывать, то держится дольше, но вот стоит несколько минут ничего не делать - отваливается. :(
Сколько часов надо ждать?
Долго ждать не могу. Пол часа не обращений устроит?

Странслировал с указанными вами опциями и залил в модуль. Проверил что работет, подождал и вот счас зашел на 192.168.1.15:
DevTime: 14.03.2016 11:07:15
PowerStartTime: 14.03.2016 10:24:26

PS: Опять AVR нужен? :) В программе нет счетчиков не обращений и никакой зависимости от этого, кроме вставленных вами лично.
 
Последнее редактирование:

vad7

Active member
@pvvx, да вот я тоже в новый модуль (esp01) на макетке зашил сначала с полной отладкой, а потом без отладки - работает. :confused:
Единственное, если через минуту-две кликать, то как-бы задумывается на секунду - две, но открывает.
Правда роутер другой - Mikrotik, там где не работает - Zyxel и Linksys, но не думаю, что из-за этого.
Напряжение питание отличается - 3.4V где не работает, 3.17V где работает. Буду дальше ковыряться.
 

pvvx

Активный участник сообщества
Единственное, если через минуту-две кликать, то как-бы задумывается на секунду - две, но открывает.
"Задумчивость" не от ESP, а от внешнего ПО и всяких "грин" технологий и опроса сети на изменения в ней путей и т.д..
Вот смотрим, через сколько времени пришел ответ от ESP web, после паузы (более минуты из новой запущенной сессии экслорера) от первого запроса:
time.gif
Итого: 1.048 миллисекунд.
Эксплорер при этом тупил - искал что-то, писал многочисленные надписи в низу что-то о сети и в заголовке "ожидание" - наверно узнавал у микрософт - можно ли ему туда... :)
И если посмотрите весь протокол сети, то увидите, что он по началу опросил всё на свете, а только потом полез на ESP.
В следующий раз сравните время от включения компьютера в электрическую сеть и ответ ему от ESP, т.к. это примерно то-же самое - пока он там загрузит всё необходимое ПО, проверит на вирусы, обновления и т.д. и решит всё-таки сделать то, что его просили. :)

Я вот сегодня торжественно отключаю данный модуль, включенный 02.02.2016 в 12:53:31:
xesp8266.gif
имеющий счетчик на момент написания сообщения <mactime>0x0000033a8f9e263d</mactime> непрерывной работы в us и не разу не отвалившегося из местной сети... Месяц у него были открыты порты на доступ из общего инета...
 
Последнее редактирование:

vad7

Active member
@pvvx, пытаюсь все отловить свой глюк. Принес модуль, который днем работал в место, где не работал первый. Проверил - все работает на той-же прошивке с отключенной отладкой.
Но тут обнаружил, что настройки WiFi по умолчанию, то есть "Auth Mode" = OPEN. Перевел его в WPA2_PSK и через минуту и этот модуль стал отваливаться.
Перекомпилил прошивку с отладкой = 6, вываливается теперь даже и с "Auth Mode" = OPEN, но уже где-то через 3 минуты.
Выдает:
state: 5 -> 2 (4c0)
rm 0
WiFi event(1): Disconnect from ssid vadw, reason(4): Assoc_expire, count 1
Close all:
WEB: close
 

aloika

Active member
А я тут играю с оверлеями. Хочу запустить оверлей сразу после старта системы. Пишу в protect/init.ini :

ovl=tcp_client.ovl
ovl$=1

Перевключаю питание. В mdb[51] появляется единица. А запрос не выполняется. Вот такие дела.

Из браузера пишу: http://10.0.0.2/protect/mdb.htm?ovl$=1 - выполняется нормально.
 
Последнее редактирование:

pvvx

Активный участник сообщества
А я тут играю с оверлеями. Хочу запустить оверлей сразу после старта системы. Пишу в protect/init.ini :

ovl=tcp_client.ovl
ovl$=1

Перевключаю питание. В mdb[51] появляется единица. А запрос не выполняется. Вот такие дела.

Из браузера пишу: http://10.0.0.2/protect/mdb.htm?ovl$=1 - выполняется нормально.
Ну и правильно. Соединения то нет, а tcp_client.ovl написан лично для вас, как пример. Вы же просили простой tcp_client :)
Вставьте анализ, что ответ есть, а в случае ошибки повтор, к примеру по таймеру.

И в init.ini я вообще ещё не проверял работу ни одного оверлея, даже возможность запуска их от туда. Понадеялся что кто другой проверит и сообщит, что там происходит :)
Как-бы теоретически работать должно...
 

pvvx

Активный участник сообщества
Выдает:
WiFi event(1): Disconnect from ssid vadw, reason(4): Assoc_expire, count 1
Close all:
WEB: close
Вы в первый раз узнаете, что WiFi у китайцев ущербный на модуле? Никакие WPA он не поддерживает нормально, если выходит из области связи. Если у вас ещё приходят команды закрытия соединения WiFi, то что должен делать модуль?
 

aloika

Active member
Соединения то нет, а tcp_client.ovl написан лично для вас, как пример. Вы же просили простой tcp_client :)
Спасибо за этот пример, как, впрочем, и вообще за всю разработку эту. А про соединение - что-то и по таймеру запрос не выполняется. Ну это ладно, я еще завтра подумаю, надеюсь, разберусь.
 

vad7

Active member
Вы в первый раз узнаете, что WiFi у китайцев ущербный на модуле? Никакие WPA он не поддерживает нормально, если выходит из области связи.
Ну а мне то, что делать? Без WPA2 смысла использовать девайс вообще нет. С вашей прошивкой, кстати работает. Поправка, вот сейчас отвалилась.
На всех роутерах у меня wpa2 personal включено.
Буду пытаться девайс перезагружать по этой ошибке, только вот тут китайский косяк с перезаписью сектора убьет флеш быстро.
 

pvvx

Активный участник сообщества
Ну а мне то, что делать? Без WPA2 смысла использовать девайс вообще нет. С вашей прошивкой, кстати работает. Поправка, вот сейчас отвалилась.
На всех роутерах у меня wpa2 personal включено.
У меня тоже, и приведен пример работы модуля без "отваливаний" c внешней AP у которой WAP и всё включено в течении более месяца и непрерывного соединения TCP в несколько дней с передачей данных туда-сюда по Modbus TCP...
Если на внешней AP включено шифрование, то если модуль ESP покидает зону уверенного приема, то на нем возможно не распознавание потери связи - она считает что подключена, но AP в таких случаях меняет ключ шифрования. Китайцы чинили-чинили, но итогов я не знаю, т.к. не проверял. Сами пробуйте на 1.5.2 и расскажите.
Для модуля работавшего месяцы я делал подавление WiFi на десятки секунд - ничего ему не было. Глушилка всего WiFi в доме делается из ESP, путем удержания сброса или перезагрузки в режим программирования. Но надо попасть в момент передачи или чего-то ещё :) Если вы занимаетесь программированием ESP, то это несложно заметить при частых тестах и перепрошивках их... Про это я уже писал и не понятно как они купили сертификацию....

@aloika - пример tcp_client.ovl дополнен:
Автоматически запускается считывание данных со страницы HTML удаленного сервера по событию соединения модуля к AP и останавливается по отсоединению. Задается время в минутах для обновления данных. При ошибках - повтор через ~7 секунд.
 
Последнее редактирование:

vad7

Active member
@pvvx, Сейчас проверил так - поставил на роутере режим безопасности - нет. На девайсе тоже - OPEN, DHCP, принес поближе к роутеру, мощность передатчика на всякий случай уменьшил до 75.
Устройство отваливается.
Причем после отвала, на роутере в списке подключенных еще висит где-то минуту.
Да все равно, какая-то хрень получается, это что, если постоянно кликать по ссылкам, то висеть хоть час может, а вот оставил его в режиме ожидания на несколько минут и привет!

Буду дальше баг локализовывать...
 

pvvx

Активный участник сообщества
Сейчас проверил так - поставил на роутере режим безопасности - нет. На девайсе тоже - OPEN, DHCP, принес поближе к роутеру, мощность передатчика на всякий случай уменьшил до 75.
Устройство отваливается.
Причем после отвала, на роутере в списке подключенных еще висит где-то минуту.
Да все равно, какая-то хрень получается, это что, если постоянно кликать по ссылкам, то висеть хоть час может, а вот оставил его в режиме ожидания на несколько минут и привет!

Буду дальше баг локализовывать...
Пока эта странность только у вас. Помочь ни чем не могу. 6 часов был включена последняя версия к AP с WPA2 и никуда не отвалилась - просто забыл отключить: DevTime: 15.03.2016 9:07:39 PowerStartTime: 15.03.2016 3:18:26.
 

vad7

Active member
@pvvx, возможно, я же не спорю. Вот сейчас принес первый модуль, который без отладки и уже запаянный с блоком питания - туда, где роутер Mikrotik и работал второй модуль на макетке.
Просто включаю - работает и не отваливается. Поставил на ap - WPA2, тоже работает.
То есть можно предположить, что дело не в прошивке и не в отладке.
Настройки MikroTik:
5.jpg
Отличается от Linksys EA4500 только Band, encryption в Linksys не выбирается. Попробую поставить Band B/G/N.

Поставил B/G/N, роутер применил настройки (отключил и включил WiFi) - прошло 30 секунд модуль не переподключился, хотя должен был, у него стоит Reconnect = 30.
Проверил еще так, отключил WiFi интерфейс на роутере, через некоторое время включил, модуль успешно переконнектился.
Пока включал-выключал интерфейсы на роутере, у него завис интерфейс, пришлось давить reset на роутере, и модуль успешно переподключился.
Но если изменить конфигурацию WiFi на роутере - есп переподключаться не хочет, хотя рядом лежащие смартфоны - моментально цепляются.
Похоже какая-то проблема в распознавании потери связи.
 
Последнее редактирование:

windalser

New member
Как программно установить, например GPIO5 на выдачу единицы? Нужно разбираться с регистрами?
 

shaman1010

Member
Как программно установить, например GPIO5 на выдачу единицы? Нужно разбираться с регистрами?
Да, нужно разбираться с регистрами, как в любом микроконтроллере, если пишите на СИ, C++...
Человек сейчас испугается и убежит :)
Если нужно задействовать несколько gpio для "клацанья светодиодом", то берем читаем 10leds_ru.txt, откуда делаем вывод, что можно вставить инициализацию в init.ini
Дальше смотрим, чем собрались дергать, и не затрагивает ли это еще чего-нить.
Дописываем в конец существующего init.ini что-то вроде этого:
Код:
cfg_pinclr=0
cfg_cdns=1
cfg_save=1
gpio5_out=1
gpio5_dir=1
где gpio5_out=1 это установка высокого уровня на gpio5 при старте (gpio5_out=0, если нужен низкий)
а дальше дергаем его через http://IP/web.cgi?gpio5_out=3 (здесь 0,1,3 - по вкусу)

Только не забудь на debug.htm отключить инициализацию портов, а то при заходе на страничку "Debug and Test" получишь что-то интересное :)
 
Сверху Снизу