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

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

pvvx

Активный участник сообщества
Это нормально или нет?
free_test_(2015-10-03_t23-13-31.713183).gif
Синяя - время загрузки страницы
Зеленая - Кол-во одновременных сессий (больше 25 без регистрации вроде не хочет)
Тест Web-свалки на ESP8266 как есть в https://loadimpact.com/
https://app.loadimpact.com/load-test/54eea43f-21d0-42be-810f-31bad61b3351

Как в JMeter задать, чтобы он просто подсчитал максимальное кол-во открытий HTTP файлов в секунду при среднем тормозе до заданных ms?
А то пишет какую-то фигню:
Задал: Number of Threads: 40, Ramp-up Period: 5, Loop Count: 30, Server: aesp8266 port: 80 path: /heap.xml
Получил:
Jmeter38.gif Jmeter39.gif
Говорит странную цифру - 228 в секунду.... Лог в UART на 3Mbit/s тормозит процесс, но если с ним то там:
Код:
5:04:20.068> srv[80] 192.168.4.2:58802 [60] read: 109 of1[heap.xml] GET f[/heap.xml] head[200]:200 send: cf1 63 dis
5:04:20.068> srv[80] 192.168.4.2:58803 [60] read: 109 of1[heap.xml] GET f[/heap.xml] head[200]:200 send: cf1 63 dis
5:04:20.068> srv[80] 192.168.4.2:58744 [60] disconnect
5:04:20.068> srv[80] 192.168.4.2:58804 [60] listen
5:04:20.068> srv[80] 192.168.4.2:58804 [60] read: 109 of1[heap.xml] GET f[/heap.xml] head[200]:200 send: cf1 63 dis
5:04:20.068> srv[80] 192.168.4.2:58745 [60] disconnect
5:04:20.068> srv[80] 192.168.4.2:58805 [60] listen
5:04:20.068> srv[80] 192.168.4.2:58805 [60] read: 109 of1[heap.xml] GET f[/heap.xml] head[200]:200 send: cf1 63 dis
5:04:20.068> srv[80] 192.168.4.2:58746 [60] disconnect
5:04:20.068> srv[80] 192.168.4.2:58806 [60] listen
5:04:20.068> srv[80] 192.168.4.2:58806 [60] read: 109 of1[heap.xml] GET f[/heap.xml] head[200]:200 send: cf1 63 dis
5:04:20.068> srv[80] 192.168.4.2:58807 [61] listen
5:04:20.068> srv[80] 192.168.4.2:58807 [61] read: 109 of1[heap.xml] GET f[/heap.xml] head[200]:200 send: cf1 63 dis
5:04:20.068> srv[80] 192.168.4.2:58747 [61] disconnect
5:04:20.068> srv[80] 192.168.4.2:58808 [61] listen
5:04:20.068> srv[80] 192.168.4.2:58808 [61] read: 109 of1[heap.xml] GET f[/heap.xml] head[200]:200 send: cf1 63 dis
доходит до 63-х одновременно открытых соединений...:eek:
При этом 'heap' падает до 31 кило в пределе во время теста JMeter:
Jmeter41.gif
 
Последнее редактирование:

waskez

New member
Здравствуйте, pvvx
Хочу на базе Вашего MinEspSDKLib сделать MQTT клиент. Никак не могу разобраться с вашим кодом (в C не силен) - как сделать tcp клиент.
Нужен пример простейшего tcp клиента (STATION_MODE), пожалуйста ...
 
Последнее редактирование:

Tomahawk

New member
waskez, если вы хотите что-то менять в проекте, это предполагает знание языка С, иначе как вы разберётесь в функциях, которые там описаны? Пример tcp-клиента есть в файле tcp2uart.c
 

pvvx

Активный участник сообщества
Пример работы примера Modbus TCP в Web-свалке, чтение ADC в Exel:
 

FGX

Member
Добрый день. Что-то не работает прошивка esp8266web-0.4.8c на ESP8266 12-F, пишет только Built-in Web server © на странице 192.168.1.4 Пришлось в исходнике свою станцию прописать и залить диск через WEBFS22.exe, а fullflash_web048.bin не работает.

Ну и собственно где посмотреть сколько памяти в ESP8266 12-F чтобы не снимать железную крышку?
 
Последнее редактирование:

pvvx

Активный участник сообщества
Добрый день. Что-то не работает прошивка esp8266web-0.4.8c на ESP8266 12-F, пишет только Built-in Web server © на странице 192.168.1.4 Пришлось в исходнике свою станцию прописать и залить диск через WEBFS22.exe, а fullflash_web048.bin не работает.
На flash более 512к диск заливается через http://192.168.4.1/fsupload или WEBFS22.exe, т.к. не все программаторы могут определить тип flash и менять адреса заливки...
 

FGX

Member
Ну то что они выведены не говорит о том что они не подключены к фешке внутренней, т.к. выведены еще и CS0, SCLK, MOSI, MISO, GPIO09, GPIO10 и все это обведено и подписано как QIO L4, скорее всего просто выведены все выходы флешки, чтобы можно было свою поставить снаруже или еще для каких то извращений.
 

Zanuda

New member
GPIO9 и 10 плохо. Это значит, что Flash работает в DIO, в 2 раза медленнее и производительность CPU падает. А её и так не хватает на 802.11n.
esp-12q разводка такая: gpio10-3flash-19esp, gpio9-7flash-18esp. флешка BergMicro 25Q32ASSIS.Значит работает в QSPI режиме?
 

pvvx

Активный участник сообщества
Ну то что они выведены не говорит о том что они не подключены к фешке внутренней, т.к. выведены еще и CS0, SCLK, MOSI, MISO, GPIO09, GPIO10 и все это обведено и подписано как QIO L4, скорее всего просто выведены все выходы флешки, чтобы можно было свою поставить снаруже или еще для каких то извращений.
Нет никакого смысла ставить внешнюю Flash. 16 Мегабайтной хватает на большинство запросов по большой памяти для данных. Использовать эти выводы одновременно для работы с SD картой не очень хорошо - в итоге других их применений нет.
Тем более контроллер SD не описан китайцами - область SDIO = 256 байт в 0x60000A00.
Espressif скорее всего не имеет документации на чип (по аналогии с другими частями ESP8266), или контроллер SDIO имеет ошибки...
 
Последнее редактирование:

FGX

Member
Нет никакого смысла ставить внешнюю Flash.
Ну и Бог с ним есть выводы и есть, кушать они не просят. Памяти зато сразу 4096 кб в отличии от ESP07 и просто 12, у других не знаю. Так что модуль не плохой и через прошивальщик было выставлено QDIO и он прошился так что флешка нормально там подключена.
Я забыл и не могу найти сколько байт нужно отправить по уарту чтобы ESP не выжидал таймаут? А то есть задержки, мелкие, пакеты по 512 байт, битрейт 4 000 000, большие паузы это мои паузы а мелких быть в идеале не должно.
https://www.dropbox.com/s/ynvl67lx0a975gx/Скриншот 2015-10-11 12.19.32.png?dl=0
 

pvvx

Активный участник сообщества
большие паузы это мои паузы а мелких быть в идеале не должно.
https://www.dropbox.com/s/ynvl67lx0a975gx/Скриншот 2015-10-11 12.19.32.png?dl=0
http://esp8266.ru/forum/threads/pro...nika-s-nastrojkoj-po-web.146/page-5#post-3355
+ При обычном соединении WiFi и передаче файлов по TCP часто идет задержка* в 120..162 us при CLK CPU на 80 MHz, что для CLK CPU на 160 Mhz соответственно в 2 раза меньше.
http://esp8266.ru/forum/threads/modbus-rtu-rs-485.529/#post-9891
* Задержка с запретом прерываний на обслуживание WiFi у китайцев.
 
Последнее редактирование:

FGX

Member
Там сказано "внутренний буфер на 384 байта в FT2232С", а меня интересует предпочтение самого ESP8266 его входного буфера уарта и буфера отправки вайфая, методом научного тыка 1024 байта для него много т.к. есть затыки в процессе передачи, 256 уже реже 1-2 затыка на пакет через 2-5 пакетов, 128 байт, разницы нет. Но если известен приемный буфер ESP8266 то луше же отправлять разом как раз столько сколько в него лезет а потом давать паузу переварить.

Итак хорошо работает, разогнал на скорости 4000000 до 320 кбайт в секунду, проходит практически без пауз между пакетами, но иногда он на 0,5 мс запинается, выставляя RTS. Данные доходят, все красиво. Скриншот 2015-10-11 14.27.07 1.pngСкриншот 2015-10-11 14.26.13.png
 
Последнее редактирование:

pvvx

Активный участник сообщества
Но если известен приемный буфер ESP8266 то луше же отправлять разом как раз столько сколько в него лезет а потом давать паузу переварить.
Кратно TCP_MSS - это [inline][HASHTAG]#define[/HASHTAG] TCP_MSS 1460 [/inline] в lwipopts.h
И надо успевать дать 2 шт MSS до передачи следующей партии. Иначе будет задержка у приемника отправки ACK на 200 ms.
Буфер передачи задан в tcp_srv_conn.h
[inline] [HASHTAG]#define[/HASHTAG] TCP_SRV_SERVER_DEF_TXBUF (TCP_MSS*3)[/inline]
Начальный буфер приема (он может увеличиваться на ходу):
[inline] [HASHTAG]#define[/HASHTAG] TCP_SRV_SERVER_MAX_RXBUF (TCP_MSS*3)[/inline]
Т.е. размер приемного буфера даже не используется в TCP2UART, а используется ограничение у LwIP по закрытию приемного окна (размер TCP стека). Иногда достигает и более 8 килобайт (9349), но в пределе.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Решается в итоге просто, вот пример. Работает на последних Firefox и Opera, в Chrome не хочет)
<a href="/protect/fullflash.bin" download="~hellomsg~">Download fullflash.bin</a>
Так всё-же как сделать чтобы имя скачиваемого файла можно было задавать в javasript? Простой пример есть?
----
Кто нибудь проверял Modbus TCP в Web-свалке? Потыкался, вроде работает то что вставил в шапку темы Прошивка TCP2UART переходника с настройкой по Web :
Для GPIO, ADC, VDD-ADC есть доступ и через Modbus TCP (порт 502). Краткое описание переменных в ReadMe.txt вложенном в архив (дубль тут)

Для доступа из WEB к полям Modbus назначены такие переменные:
~mdbwuNNN~ - чтение word unsigned, NNN - номер ячейки
~mdbwsNNN~ - чтение word signed, NNN - номер ячейки
~mdbduNNN~ - чтение dword unsigned, NNN - номер ячейки
~mdbdsNNN~ - чтение dword signed, NNN - номер ячейки
mdbwNNN=XXX - запись XXX word значения (dec или hex) в ячейку c номером NNN
mdbdNNN=XXX - запись XXX dword значения (dec или hex) в ячейку c номером NNN
 
Последнее редактирование:
Сверху Снизу