• Система автоматизации с открытым исходным кодом на базе 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\ ничего не происходило(может чтото ещё нужно было сделать). Сделал все как описано в видео:
Все заработало, и получилось перепрошить. Спасибо за наводку. Незнал вообще куда копать.
 
Сверху Снизу