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

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

pvvx

Активный участник сообщества
Последнее редактирование:

vad7

Active member
<time>105032091</time>
<rtctime>2265762444</rtctime>
<mactime>0x0000000906625a80</mactime>

Значит, похоже не перезагружается, вечером посмотрю, что в UART вылазит.
 

vad7

Active member
Вечером обнаружил, что модуль перезагрузился - uptime сбросился.

Вот что выдается в UART0 на 115200 при сбое, когда давишь на "main" при некотором бездействии:
ets Jan 8 2013,rst cause:2, boot mode:(3,6)
load 0x40100000, len 108, room 16
tail 12
chksum 0x83
csum 0x83

подключил второй терминал на GPIO2 - буду дальше мониторить.
 

vad7

Active member
С включенной опцией GPIO2 debug UART пару часов не падал.
Выключил опцию, не отключая терминал, также закладка debug->main после бездействия - "страница не доступна", debug UART:
meSDK 1.4.1
don't use rtc mem data

Save rx_gain_dc table (0, 1)
Old reset: Fatal exception (28):
epc1=0x40236a8b, epc2=0x00000000, epc3=0x00000000, excvaddr=0x04010018, depc=0x00000000
 

vad7

Active member
Вот еще поймал:
UART0 (115200):
ets Jan 8 2013,rst cause:2, boot mode:(3,6)

load 0x40100000, len 108, room 16
tail 12
chksum 0x83
csum 0x83
debug UART:
Код:
meSDK 1.4.1
don't use rtc mem data

Save rx_gain_dc table (0, 1)
Old reset: Fatal exception (28):
epc1=0x40236a8b, epc2=0x00000000, epc3=0x00000000, excvaddr=0x04010018, depc=0x00000000

Simple WEB version: 0.1.4
OpenLoaderSDK v1.2
Found free IRAM: base: 0x40105358, size: 27816 bytes
System memory:
data  : 0x3ffe8000 ~ 0x3ffe8380, len: 896
rodata: 0x3ffe8380 ~ 0x3ffe8bfc, len: 2172
bss   : 0x3ffe8c00 ~ 0x3ffef428, len: 26664
heap  : 0x3ffef428 ~ 0x3fffc000, len: 52184
Start 'heap' size: 51920 bytes
Set CPU CLK: 80 MHz
sleep disable
ErrWiFiSet: 0x00010000

Disk init: 68 files, addr = 0x0003f000
mode : sta(18:fe:34:9c:b8:d1)
add if0
f r0,
SDK Init - Ok
Current 'heap' size: 50760 bytes
Run ini file: protect/init.ini
of1[protect/init.ini] [sys_ram0x60000f00=0x48]
H[sys_ram0x60000f00=0x65]
e[sys_ram0x60000f00=0x6c]
l[sys_ram0x60000f00=0x6c]
l[sys_ram0x60000f00=0x6f]
o[sys_ram0x60000f00=0x21]
!cf1 WiFi_set(0x0000ffff)=0x00000000
WiFi mode:1 phy:3 dhcp:1/0
AP:ESP8266[7] hiden(0) psw:[0123456789] au:3 chl:1 maxcon:4 beacon:100
ip:192.168.4.1 gw:192.168.4.1 msk:255.255.255.0 mac:1a:fe:34:9c:b8:d1
DHCP ip:192.168.4.2..192.168.4.10
ST:[vadw] psw:[qwertyuiop123456789] b:0 ff:ff:ff:ff:ff:ff ac:1
ip:192.168.20.111 gw:192.168.20.1 msk:255.255.255.0 mac:18:fe:34:9c:b8:d1
sleep:0, rect:30, maxtpw:82, sthn:[ESP_9CB8D1]
scandone
state: 0 -> 2 (b0)
state: 2 -> 3 (0)
state: 3 -> 5 (10)
add 0
aid 10
cnt
 

pvvx

Активный участник сообщества
Вот еще поймал:
Old reset: Fatal exception (28):
epc1=0x40236a8b, epc2=0x00000000, epc3=0x00000000, excvaddr=0x04010018, depc=0x00000000
Это не web и система. Это что-то неверно задано в переменных, выводящихся на страницу... Вроде в web_int_callback() при обращении куда-то в отладку с выводом из i/o из 0x60000800. Регистры портов - iomuх... Точно сказать не могу - не знаю на какой версии прошивки и что по тем адресам, да и её уже (старой) нет. Но так - на вскидку примерно на 80%, по областям процедур... Весь этот демо-хлам не откатать никогда :) В рабочую прошивку надо большую часть просто стереть, оставив необходимое и заодно проверив...
Короче это из области - незачем "на машине рулить в столб" - она тоже сломается :)
 

vad7

Active member
Понятно, а когда ожидается поновей библиотека?
Прежде чем начать погружаться в ESP8266 вот хотел выбрать наиболее стабильную прошивку/среду разработки.
Чистый UDK, я как понимаю не вариант, Arduino тем более....
 

pvvx

Активный участник сообщества
Понятно, а когда ожидается поновей библиотека?
Я думаю уже закат.
Прежде чем начать погружаться в ESP8266 вот хотел выбрать наиболее стабильную прошивку/среду разработки.
Чистый UDK, я как понимаю не вариант, Arduino тем более....
Ну кто ж сделает среду разработки один, да ещё и без базы "торпедных катеров" ? :) Китайцам, как показала практика, этого тоже не надо и информацию по чипу они до сих пор скрывают, хотя уже слепили новый (ESP32). Его ждет аналогичная ситуация, но более скоротечная...
 

vad7

Active member
Понятно.

А такой вопрос - можно как-то отключить/запатчить перезапись секторов при загрузке?
При реконнекте WiFi, насколько я понял, перезаписи нет.
 

Andy Korg

Moderator
Команда форума

pvvx

Активный участник сообщества
vad7 Ну и выключить отладку раз стабильность вам важнее проверить.
Это связано не с выводом отладки (debug), а что запрашиваетcя по переменным в HTML. Можно же вызвать запись в любую область памяти по переменной...
А такой вопрос - можно как-то отключить/запатчить перезапись секторов при загрузке?
Это китайское сохранение настроек WiFi, плюс с последних версий там сохраняются настройки ухода частот от питания и т.д. для быстрой загрузки после deep_sleep.
При реконнекте WiFi, насколько я понял, перезаписи нет.
А неизвестно. При старте у китайцев некоторые настройки WiFi по умолчанию приходится менять, а это у них вызывает перезапись конфигов. Они не проверяют, изменилось ли что в записанном, а просто всегда стирают и пишут. Смените их процедуры на свои. Об этом уже где-то писали...
Ищите wifi_param_save_protect_with_check() и меняйте на свою.
http://esp8266.ru/forum/search/1607226/?q=wifi_param_save_protect_with_check&o=date&c[node]=8
Исходник тоже дан https://github.com/pvvx/esp8266web/blob/master/info/libs/main/user_interface.c#L679
Да и патчить для замены функций ничего не надо
Есть опции линковщику: -Wl,--wrap=имя_функции
Далее в СИ пишите
тип __wrap_имя_функции(аргументы)
{
а обращение к старой выглядит так __real_имя_функции(аргументы);
}
Но есть беда, если обращение к замененной функции уже в либе в одном объектнике. По тому ручками допатчиваете китай-либы :) Я этого делать за вас не буду - т.к. это надо делать для каждой версии SDK...
Сохранение калибровок WiFi по старту находится в meSDK -> https://github.com/pvvx/esp8266web/blob/master/app/sdklib/system/app_main.c#L540
Так что меняете как хотите...
 
Последнее редактирование:
  • Like
Реакции: vad7

Alexander

Member
Я тут снова с вопросами, возможно, глупыми :oops:
Нельзя ли портировать WEBFS22 или исходники? Оно вроде и не критично - под вайном нормально все работает, но хочется, чтобы уж совсем нативно.

Уж больно понравился мне данный проект. Я было потыкался в Arduino и Sming - не мое. Наверняка от неумения Готовить, но... :)
После AVR долго скрипел мозгами, но с подсказками и примером @pvvx, за что ему премного благодарен, дело потихоньку пошло.
Может позже OpenSDK освою. Просто здесь очень много халявы - готовый http сервер, да еще и удобная сборка диска. :)
 

pvvx

Активный участник сообщества
Я тут снова с вопросами, возможно, глупыми :oops:
Нельзя ли портировать WEBFS22 или исходники? Оно вроде и не критично - под вайном нормально все работает, но хочется, чтобы уж совсем нативно.
https://github.com/pvvx/esp8266web/blob/master/lib/WEBFS22.zip
На питоне так и не написал - https://github.com/pvvx/esp8266web/tree/master/webfs . Хотел, но лень, т.к. есть уже работающий...
 

pvvx

Активный участник сообщества
Alexander, сюда еще HTTP GET/POST нужно добавить для полной халявы :)
Переменные разбираются и передаются не только через GET/POST, но и через куки. И через формат multipart/form-data в POST. Т.е. ограничения в кол-ве за раз передаваемых параметров нет. С передачей по HHTP-Web файлов в ESP в формате multipart/form-data немного сложнее - неудобно сделан разбор, но тоже есть :)
Основная задача для пользователя при применении данной свалки для какого-то проекта - удаление лишнего и написание своих HTML файлов.

Счас вот на основе данного Web делаю логер/сборщик данных с десятка датчиков с выводом графиков с накоплениями за 1 год... и другой вариант - передача позиции устройства (примерно это, но дешевле и больше датчиков, т.к. позиция только для указания где произведены измерения других величин)... Но опять китайцы расстраивают:
IMG_6237sm.jpg
(плата висит на магните!)
Какого фигу к датчику магнитного поля на плате стоят магнитные детали? Это же приведет к искажению замеров магнитного поля не только вектора, но интенсивности, которые не скомпенсировать! Существует понятие магнитная вязкость, а мне надо измерять и изменения поля! А оно будет зависеть от скорости изменения, и чтобы откалиброваться потребуется неимоверная таблица ещё с параметрами по скорости намагничивания этих магнитных элементов на плате, а так-же их остаточной намагниченности! В общем испорченный датчик.
 
Последнее редактирование:

Alexander

Member
Снова я невнимателен, оно там и раньше было. Спасибо.
Какого фигу к датчику магнитного поля на плате стоят магнитные детали?
Это экономия такая безмозглая. Медь дорогая и сейчас выводф часто делают стальными. Практически все корпуса попадаются в варианте со стальными выводами. А что поставить... Да кто смотрит. Недавно с Али покупал ардуинки, так эти идиоты в платы с вариантом 5В 16МГц запаяли ATmega168V.
Спрашиваю продавца: "Ты что мне продал?" Все нормально, говорит и тычет скриншотом ардуино иде, с выбором типа платы, утверждая, что это доказательство работоспособности. Шлю ему фото платы, картинку с выдержкой из даташита и ссылку на даташит. Отвечает, что, наверное, я не то купил и если мне нужна мега 328, так ее бы и покупал. Толи дурака включил, толи реально идиот. Открыл спор, объясняю, что. мать вашу, нельзя ATmega168V на 16МГц, без V нужна ну и фото, ссылки. Мне отвечают, что раз я не предоставил видео, как это все не работает, то и предмета спора нет. Ну, я понимаю, удобно заменит кварц и стабилизатор, а контроллер оставить - сокращение номенклатуры и все такое.
 

pvvx

Активный участник сообщества
Я HTTP клиента имел ввиду, чтобы датчик сам передавал данные в БД (например, на сайт thingspeak.com).
Используйте Arduino или ещё чего. Я не делаю проектов зависящих от внешнего платного сервиса.
 
Сверху Снизу