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

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

pvvx

Активный участник сообщества
Так вам же уже pull request-ы отправляли, но вы их не добавляете.
Я тоже исправляю некоторые мелкие ошибки, делаю некоторые доработки и добавляю ремарки, но опять же у себя в репозитории.
А вы думаете у меня есть время разбираться со всем?
Я бы с удовольствием всё это сбагрил бы кому... Цели же описаны - это просто демка разного и нагромождение в кучу с наслоениями по мере развития и реверса китайского SDK с целями демонстрации что возможно (прецедент). По мере освоения и реакции системы большая часть становиться неактуальной. Хотите из этого сделать какой проект - займитесь реверсом оставшихся частей китайкой SDK и редакцией всего этого хламу. Все права могу отдать безвозмездно и помочь чем смогу - до паролей на git или включения вас туда...
 

vad7

Active member
Я могу заняться косметической правкой только.
Типа опечаток, небольших ошибок, доработок и добавкой комментарий. Да и только с тем, с чем ковыряюсь - на данный момент по чистому веб-серверу.
На более серьезное пока не тяну, меня до сих пор в ступор вгоняет ассемблер esp с 3-мя операндами, хотя на ассемблере начинал писать с z80. И внятной документации нет.
А это только со временем проходит.

Сейчас эта демка вполне подходит для базы своего IoT устройства. Можно, конешно из нее сделать вообще вылизанную библиотеку, но думаю мало кто оценит. В этой теме только несколько человек сидит...
 

pvvx

Активный участник сообщества
Я могу заняться косметической правкой только.
Как вы сами видите - это не относится к главным целям, а времени на второстепенные задачи просто нет. Найти бы на основные :)
 
Последнее редактирование:

vad7

Active member
@pvvx, не подскажите, где может быть косяк - на планшете с андроидом при скачивании файлов *.bin (fullflash.bin, esp_init_default.bin и др.) планшет пишет - "Сбой загрузки". Причем от браузера не зависит, пробовал и на встроенном и на Chrome?
 

pvvx

Активный участник сообщества
Файлы *.bin не внесены в фильтр несжимаемых zip.
 

vad7

Active member
@pvvx, Тут, кстати, поймал прикольный глюк - на очень плохой связи с модулем сохранял настройки WiFi, и они как-то хитро сохранились, что теперь модуль падает с Fatal exception (9) в функции <rc_get_trc>.
Модуль только успевает написать:
meSDK 1.5.2
don't use rtc mem data
Щас вот попробую выцепить, что это он там сохранил такое.
 

vad7

Active member
@pvvx, ничего такого не нашел, настройки почему-то сбросились на:
WiFi_set(0x0000ffff)=0x0000e400
WiFi mode:1 phy:1 dhcp:0/0
AP:ESP8266[7] hiden(0) psw:[0123456789] au:0 chl:0 maxcon:4 beacon:100
Причем, наблюдались глюки такого плана - точка ESP8266 то появляется, то пропадает, кликаешь - соединяется и тут же разъединяется, перегружаешь модуль - соединяется.
Мощность передатчика ставил разную - не влияет. Похоже влияет тип роутера или особенности окружающей WiFi сети. Приношу модуль туда, где отлаживаюсь - там глюков таких еще не ловил.
 

Tomahawk

New member
Сейчас в проекте есть некий gdbstub, в настройках он не включен "// [HASHTAG]#define[/HASHTAG] USE_GDBSTUB // UDK пока не поддерживает GDB". Но он все равно каким-то образом принимает участие в компиляции. Если в user_config.h мы напишем простое char badaboom; - то произойдёт реально бадабум )) эклипс скажет, что не знает такого типа "char" (или uint8_t, что угодно). Поэтому для себя я вырезал gdbstub из проекта, теперь всё компилируется нормально.
 

vad7

Active member
"Сбой загрузки" на планшете с андроидом победил так - добавлением в заголовок при передаче файла: "Content-Disposition: attachment\r\n"
Во встроенном браузере, правда все равно не работает, но зато в Chrome загружается.

Намониторил еще периодическое отваливание AP. Сеть в этом месте загружена, порядка 15-20 станций обнаруживается и высокий WiFi трафик.
Происходит в момент попытки соединения с ST:
WiFi event(7): Probe Request (MAC:1c:99:4c:5d:6f:f7, RSSI:-65)
WiFi event(7): Probe Request (MAC:1c:99:4c:5d:6f:f7, RSSI:-65)
New connect ST...
f -180, scandone
no HOMEAP found, reconnect after 1s
WiFi event(1): Disconnect from ssid HOMEAP, reason(201): No_ap_found, count 1
Set reconnect after 30 sec
Close all:
<вот здесь или чуть выше отваливается точка>
chg_A1:-140

Далее после нескольких попыток соединения в логе появляется это:
New connect ST...
f 0, WiFi event(7): Probe Request (MAC:1c:99:4c:5d:6f:f7, RSSI:-14)
WiFi event(7): Probe Request (MAC:1c:99:4c:5d:6f:f7, RSSI:-50)
WiFi event(7): Probe Request (MAC:1c:99:4c:5d:6f:f7, RSSI:-57)
WiFi event(7): Probe Request (MAC:1c:99:4c:5d:6f:f7, RSSI:-67)
WiFi event(7): Probe Request (MAC:1c:99:4c:5d:6f:f7, RSSI:-64)
WiFi event(7): Probe Request (MAC:1c:99:4c:5d:6f:f7, RSSI:-64)
WiFi event(7): Probe Request (MAC:1c:99:4c:5d:6f:f7, RSSI:-68)
scandone
no HOMEAP found, reconnect after 1s
WiFi event(1): Disconnect from ssid HOMEAP, reason(201): No_ap_found, count 1
Set reconnect after 30 sec
Close all:

Где-то в середине этих сообщений точка появляется и так до следующей попытки соединения, на которой опять пропадает и т.д....
Так же прояснилось, почему нет отвала точки, когда постоянно обновляешь страницы или сидишь на просмотре Smoothie-графика - просто нет попыток соединиться и все.
Вот тебе и нет маин-лупа... :)
 
Последнее редактирование:

pvvx

Активный участник сообщества
f -180, scandone
chg_A1:-140
Это китай-фича. После сканирования что-то не верно выставляет и если наблюдаются данные надписи, то соединения не жди. У прошлой версии SDK частично лечилось вставкой, которая проверяла после скана на подключение закончился ли процесс на -180 или другим числом. Ели не выходило нужного числа, то снова вызывался процесс сканирования для подключения. По этому алгоритм, по заданному кол-ву попыток соединения не работал. Требовалось не ожидание фиксированного кол-ва попыток неудачных соединений, а выход с правильными параметрами их процедуры неудачного подключения для вставки паузы и возможности работы AP в эту паузу. Но китайцы что-то покопали и это немного прошибло, но не окончательно. Алго подсчета, в надежде что китайцы починили, и был поставлен в текущей версии на фиксированное кол-во опросов. На это вы и нарываетесь.
Да и проблема эта ранее уже обсуждалась. (примеры и части) Решения у неё нет. Баг неизлечимый. С "count 1" очень часто не работает.
По этой причине и выбран
[HASHTAG]#define[/HASHTAG] COUNT_RESCONN_ST 3 // кол-во непрерывных повторов попытки соединения ST модуля к внешней AP
С таким числом вероятность правильного конца 3-х итераций попыток подключения дает большую вероятность не проявления ошибки и возможности дальнейшей работы...
Найдете решение или обход этой китай-фичи - опишите :) Уже более полугода это не решено китайцами.
Код:
            if(wificonfig.st.reconn_timeout != 1
            && st_reconn_count >= COUNT_RESCONN_ST
            && (opmode & STATION_MODE)
#ifdef DEF_SDK_ST_RECONNECT_BAG
            &&    (evt->event_info.disconnected.reason != REASON_NO_AP_FOUND || gScanStruct[173] == 1)
#if DEF_SDK_VERSION != 1400
    #error "gScanStruct[173] !" // искать в scan_start() "f 0, scandone\n"
#endif
update · pvvx/esp8266web@cee58a5 · GitHub
 
Последнее редактирование:

vad7

Active member
Пока такую затычку поставил:
[HASHTAG]#define[/HASHTAG] COUNT_RESCONN_ST 3
....
[HASHTAG]#endif[/HASHTAG] // PRINT_EVENT_REASON_ENABLE
int opmode = wifi_get_opmode();
if((opmode & STATION_MODE)
&& wificonfig.st.reconn_timeout != 1
&& (st_reconn_count >= COUNT_RESCONN_ST || evt->event_info.disconnected.reason == 4)) { // Assoc_expire
...
 

dooglas

New member
Здравствуйте. Третий день не могу победить ошибку при компиляции проекта. Проект свежескачанный, без правок. Ошибка такая:

Traceback (most recent call last):
File "F:/ESP_8266/esp8266web/esptool.py", line 22, in <module>
import serial
ImportError: No module named serial
../Makefile:198: recipe for target '.output/eagle/bin/eagle.app.v6.bin' failed
mingw32-make[1]: *** [.output/eagle/bin/eagle.app.v6.bin] Error 1
mingw32-make[1]: Leaving directory 'F:/ESP_8266/esp8266web/app'
mingw32-make.exe: *** [.subdirs] Error 2
F:/ESP_8266/esp8266web/Makefile:255: recipe for target '.subdirs' failed


Если закоментить 22 строку в sptool.py, тогда компилится. Что делать?
 

dooglas

New member
Блин, мог бы и сам догадаться. Там же написано, что нет модуля. :confused: Pip install pyserial ни как не заставил заработать. Ставил отсюда: pyserial 3.0.1 : Python Package Index Все заработало. Спасибо за наводку.
 

vad7

Active member
Pip install pyserial ни как не заставил заработать.
pip лежит в C:\Python27\Scripts\, а в PATH должна быть строчка добавлена, если система - винда.
у меня наоборот через инсталлятор не ставилось, говорила, что питон не найден и до свидания.
 

ls_serg

New member
Такая же ошибка:
Traceback (most recent call last):
File "C:\Users\work\workspace\NEW\Web_Base\esptool.py", line 22, in <module>
import serial
ImportError: No module named serial
../Makefile:191: recipe for target '.output/eagle/bin/eagle.app.v6.bin' failed
mingw32-make[1]: *** [.output/eagle/bin/eagle.app.v6.bin] Error 1
mingw32-make[1]: Leaving directory 'C:/Users/work/workspace/NEW/Web_Base/app'
C:/Users/work/workspace/NEW/Web_Base/Makefile:240: recipe for target '.subdirs' failed
mingw32-make.exe: *** [.subdirs] Error 2

00:53:03 Build Finished (took 1m:49s.784ms)

Подскажите пожалуйста что нужно делать, поскольку "не очень" разбираюсь. Что именно нужно прописать в PATH, и где нужно набирать "Pip install pyseria". Установочный файл "pyserial-3.0.1.win32.exe" выдаёт ошибку: upload_2016-4-3_1-6-53.png

p/s Не судите строго.
 

vad7

Active member
@ls_serg, буквально сверху же написано: pip лежит в C:\Python27\Scripts\

@pvvx, "|| evt->event_info.disconnected.reason == 4" помогла победить Linksys ea4500, но Zyxel Keenetic II не сдавался. :)
Добавил в свой алгоритм еще проверку:
if(wifi_station_get_connect_status() == STATION_GOT_IP && !flg_open_all_service) wifi_station_connect();
Понаблюдаю дальше...
 

ls_serg

New member
@ls_serg, буквально сверху же написано: pip лежит в C:\Python27\Scripts\
Запуская pip с папки C:\Python27\Scripts\ ничего не происходило(может чтото ещё нужно было сделать). Сделал все как описано в видео:
Все заработало, и получилось перепрошить. Спасибо за наводку. Незнал вообще куда копать.
 
Сверху Снизу