Страница 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, то он летает потому, что использует другой механизм отдачи клиенту, а нам нужно, чтобы заработал

Код: Выделить всё

client.write(buff, rsize); 
или его эквивалент.

Меряю, например, так:

Код: Выделить всё

                  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 раз медленнее.

Виновник чётко определён — это стандартная функция

Код: Выделить всё

client.write();
которая на всех платформах работает менее 1 миллисекунды, а в реализации на ESP8266 ровно 200 миллисекунд.

У меня есть интуитивное предположение, что отрабатывает она также быстро, а 200 миллисекунд это какой-то флаг, которого она ждёт.

Re: Arduino Mega Server для esp8266

Добавлено: Пт май 27, 2016 7:21 am
nick7zmail
Alex писал(а):Проблема в том, что АМС отдаёт данные клиенту на всех платформах со скоростью 70 КБ в секунду, а на ESP8266 — со скоростью 0.6 КБ в секунду, что примерно в 100 раз медленнее.

Виновник чётко определён — это стандартная функция

Код: Выделить всё

client.write(); 
которая на всех платформах работает менее 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. Проблема очевидна.

Код во вложении.