Страница 2 из 119
Re: Arduino Mega Server для esp8266
Добавлено: Вт май 24, 2016 7:09 pm
Alex
PS: Кстати, как там вообще проект? Движется?)
А с момента написания первого поста не было времени заниматься ESP8266, нужно было завершить текущие неотложные дела (последние 10 новостей):
http://hi-lab.ru/arduino-mega-server/details
Теперь очередь дошла до ESP8266, если не появятся более актуальные задачи, то начну разбираться с еспешкой.
Alex...небольшая просьба...ну как небольшая...наверное довольно таки большая...не суть...
В общем, если это не сильно напряжно реализуется, было бы неплохо сделать страничку подключения к wifi сети.
Т.е. подключаешь питание - создаётся какая-то wifi сеть по-умолчанию...цепляешься к ней, заходишь - и открывается приветственная форма с запросом SSID и пароля домашней сети. Вводишь - esp-шка перегружается, и цепляется к основной сети, и там уже по IP доступен остальной вэб-интерфейс. Я понимаю, что это, наверное трудоёмко, но в той же homes-smart вроде реализовано (не пробовал пока прошиваться). Если так сделать - будет просто отличная замена homes-smart...а иначе как-то трудоёмко цепляться через порт.
Честно говоря, уже забыл как там что выглядит, но технология крутая и очень гибкая (можно делать такие вещи, которые на Ардуино даже не снились).
Сейчас главная задача — решить вопрос, озвученный в первом посте (чем я и собираюсь заняться).
Re: Arduino Mega Server для esp8266
Добавлено: Чт май 26, 2016 5:53 pm
Alex
Вопрос знатокам на засыпку: почему в стандартной библиотеке ESP8266WiFi
Код: Выделить всё
WiFiClient client
client.write(55);
client.write(buff, rsize);
запись что байта, что целого буфера занимает ровно 200 миллисекунд вместо положенной одной миллисекунды? И как с этим бороться?
Логика подсказывает, что время тратится не на запись, а на что-то другое.
Те, кто может помочь разобраться в этом вопросе могут проанализировать код стандартной библиотеки ESP8266WiFi и/или поэкспериментировать с её примерами.
При этом сервер ESP8266WebServer отдаёт данные клиенту с нормальной скоростью, то есть система в принципе может работать как положено.
Re: Arduino Mega Server для esp8266
Добавлено: Чт май 26, 2016 6:30 pm
nick7zmail
Я конечно не знаток...уж тем более esp-шки...но я про неё немного читал...экспериментировать пока некогда...но запомнилась мысль (могу ошибаться) что все подобные переменные пишутся не в ram а на флешпамять сразу...и что ram отведён под другой функционал, но через процедуры к нему можно получить доступ (на память не скажу какие именно)... Ещё раз поторюсь - могу ошибаться.
Отправлено с моего C6603 через Tapatalk
Re: Arduino Mega Server для esp8266
Добавлено: Чт май 26, 2016 7:00 pm
Alex
200 миллисекунд это БЕЗУМНО много, это 0,2 секунды на запись одного байта — я просто не могу найти в дебрях библиотек, где это безобразие происходит. И это не зависит от объёма записи — 128 байт — тоже 200 миллисекунд.
Как это назвать, кроме как очередным приколом Ардуино, я не знаю.
Re: Arduino Mega Server для esp8266
Добавлено: Чт май 26, 2016 8:12 pm
nick7zmail
Добрался до esp-шки... Залил прошивку сервера - все норм летает...20-70 мс выдаёт строку. А в случае с wificlient ты как смотришь скорость?
Re: Arduino Mega Server для esp8266
Добавлено: Чт май 26, 2016 8:40 pm
Alex
Всё правильно, если сервер ESP8266WebServer, то он летает потому, что использует другой механизм отдачи клиенту, а нам нужно, чтобы заработал
или его эквивалент.
Меряю, например, так:
Код: Выделить всё
unsigned long startWrite = millis();
sclient.write(b);
unsigned long longWrite = millis() - startWrite;
Serial.print("*** WRITE: ");
Serial.println(longWrite);
Re: Arduino Mega Server для esp8266
Добавлено: Чт май 26, 2016 9:23 pm
nick7zmail
А в чем собственно проблема то? Это как раз время передачи по сети 1го байта информации. В начале ESP-шка была соединена с каким-то сервером в инете (из примера). До него write шел примерно 150-160 мс. Ради эксперимента указал свой роутер (самый короткий путь)) write стал проходить за 2-5 мс. До сервера МД - 50 мс. По-моему все логично...чем дальше пункт назначения и медленнее интернет - тем дольше идет пакет. Или я чего-то не допонимаю?
Re: Arduino Mega Server для esp8266
Добавлено: Пт май 27, 2016 7:10 am
Alex
Проблема в том, что АМС отдаёт данные клиенту на всех платформах со скоростью 70 КБ в секунду, а на ESP8266 — со скоростью 0.6 КБ в секунду, что примерно в 100 раз медленнее.
Виновник чётко определён — это стандартная функция
которая на всех платформах работает менее 1 миллисекунды, а в реализации на ESP8266 ровно 200 миллисекунд.
У меня есть интуитивное предположение, что отрабатывает она также быстро, а 200 миллисекунд это какой-то флаг, которого она ждёт.
Re: Arduino Mega Server для esp8266
Добавлено: Пт май 27, 2016 7:21 am
nick7zmail
Alex писал(а):Проблема в том, что АМС отдаёт данные клиенту на всех платформах со скоростью 70 КБ в секунду, а на ESP8266 — со скоростью 0.6 КБ в секунду, что примерно в 100 раз медленнее.
Виновник чётко определён — это стандартная функция
которая на всех платформах работает менее 1 миллисекунды, а в реализации на ESP8266 ровно 200 миллисекунд.
У меня есть интуитивное предположение, что отрабатывает она также быстро, а 200 миллисекунд это какой-то флаг, которого она ждёт.
Скинь код, который так тормозит. Ибо я не смог повторить ситуацию)).
Я открыл стандартный сэмпл (wifiClient вроде назывался), в него воткнул твой код
Код: Выделить всё
unsigned long startWrite = millis();
client.write(55);
unsigned long longWrite = millis() - startWrite;
Serial.print("*** WRITE: ");
Serial.println(longWrite);
Получил отклик 2 мс (на скрине в предыдущем сообщении)...
PS: Т.к. это время зависит от сервера, на который осуществляется запись, есть предположение, что client.write ждет окончание записи. Нужно просто отключить цикл ожидания в этой функции (если он там есть). Дома покапаю библиотеку...там должно это быть.
Re: Arduino Mega Server для esp8266
Добавлено: Пт май 27, 2016 8:27 am
Alex
Стандартный пример WiFiWebServer. Проблема очевидна.
Код во вложении.