Arduino Mega Server

Модератор: Alex

Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Arduino Mega Server

Сообщение Alex » Вс июл 26, 2015 3:13 pm

Уважаемый 123ksn, даже не знаю что сказать.

Цитата 1

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

Цитата 2

Там навороченный код и порог вхождения очень высок — нужно знать HTML, CSS, JavaScript, Processing, Ардуино, 3D, разбираться в сторонних библиотеках, иметь представление о принципах сетевого взаимодействия и т. д и т. п. Кроме того, нужно ещё иметь терпение для дзен-программирования, когда каждое изменение в HTML коде нужно посылать по Serial на сервер. Явно не для всех, особенно не для тех, кто хочет нажать кнопочку - и всё готово. Все изменения под свою конфигурацию вам придётся вносить руками и много думать.

Цитата 3

Альфа версия. Концепт и демонстрация идеи. Только для хардкорных разработчиков, которые готовы разбираться в километрах кода. Требуется знание HTML, CSS, JavaScript, Processing, Arduino, 3D, терпение и большое желание понять как всё это работает. Никаких гарантий!

Цитата 4

Ещё раз — никаких гарантий! Только для тех, кто готов разбираться в коде и всё переделывать
под себя.

Это без комментариев

С проектом ознакомилось более 7000 человек и вы ОДИН высказали претензии и остались недовольны. Благодарностей — сотни.

Это тоже без комментариев
За это сообщение автора Alex поблагодарил:
123ksn (Вс июл 26, 2015 9:09 pm)
Рейтинг: 1.16%
123ksn
Сообщения: 8
Зарегистрирован: Сб июл 25, 2015 1:23 am
Благодарил (а): 5 раз
Поблагодарили: 0

Re: Arduino Mega Server

Сообщение 123ksn » Вс июл 26, 2015 9:29 pm

Alex писал(а): С проектом ознакомилось более 7000 человек и вы ОДИН высказали претензии
Если претензии справедливые, то можно было бы сказать мне спасибо.
Alex писал(а):и остались недовольны.
Я остался недоволен не проектом, а тем, как он Вами представлен общественности. Проект в текущем состоянии, извините, мне не интересен. Но я нигде, никогда ничего не сказал плохого о Вашем проекте. Я впечатлен им! Круто! Так держать!
Alex писал(а):Благодарностей — сотни.
Среди них и мои. Однако редкая и конструктивная критика часто намного полезней бесконечных благодарностей. Я смею надеяться, что со временем Вы поймете ценность моих высказываний и внесете изменения в презентацию своего проекта.
Успехов Вам!!!
Аватара пользователя
uni
Сообщения: 191
Зарегистрирован: Вс июл 26, 2015 9:21 pm
Откуда: Екатеринбург
Благодарил (а): 4 раза
Поблагодарили: 7 раз
Контактная информация:

Re: Arduino Mega Server

Сообщение uni » Вс июл 26, 2015 9:59 pm

Доброго.

Насколько я понял, в проекте есть проблема с обновлением файлов через сеть. Используется какой-то самодельный способ загрузки.

Могу посоветовать изучить материал по ссылкам: http://cyber-place.ru/showpost.php?p=12044&postcount=45

Только там метод POST используется. Поток имеет определённую структуру, можно на ходу вычислять размер файла из первых полей и без использования промежуточного буфера сразу писать содержимое файла на флешку.

Так реализован CyberWrt модуль Обновление, в котором можно через веб-интерфейс залить прошивку роутера во временную папку и прошить его. Причём можно даже показывать прогресс загрузки файла.

Проблема, насколько я понимаю, как раз в том, чтобы мк был посредником при передаче потока байт, так как собственных ресурсов для его обработки у него нет. Я использовал интерпретатор shell и утилиту dd, чтобы реализовать приём потока, какой-то небольшой промежуточный буфер там используется, но как это могло бы выглядеть для скетча - пока сказать не могу.
Россия навсегда!
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Arduino Mega Server

Сообщение Alex » Вс июл 26, 2015 10:58 pm

Спасибо за информацию. Способ интересный, чуть попозже постараюсь с ним разобраться.
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Arduino Mega Server

Сообщение Alex » Вт июл 28, 2015 9:08 am

Требуется помощь сообщества!
----------------------------------------

Наконец-то дошли руки до отладки одиночного режима работы (без MajorDoMo) и тут выявилась одна крайне неприятная вещь, а именно: катастрофическое увеличение времени загрузки страничек.

Всё работает, с этим проблем нет, но загрузка странички по 10-15 секунд, на мой взгляд, совершенно неприемлема. И задача стоит уменьшить это время хотя бы до 4-5 секунд. Получается так либо красота и время загрузки 15 секунд либо отключаем все украшения и время загрузки более-менее приемлемо.

Первый вопрос где же на самом деле происходит потеря скорости и кто в этом виноват: быстродействие SD карты, картридер, шина, алгоритм в скетче Ардуино или что-то другое?

Я использую microSD карту со скоростью чтения около 20 МБ в секунду, что соответствует хорошему 10 классу. У кого есть карты с быстродействием 40 — 90 МБ в секунду было бы интересно узнать как быстро всё работает (в одиночном режиме).

Как включить одиночный режим

Просто перемещаете CSS и JS файлы на SD карту (при помощи Arduino Serial Commander) и создаёте новую страничку (просто скопировав любую существующую) и в её заголовке удаляете ссылки на сторонний сервер (192.168.... и оставляете только имя файла). При заходе на эту страничку AMS будет выдавать всё с SD карты памяти, а не пользоваться услугами стороннего сервера. Процессинг библиотеку не грузим, она слишком большая (> 200 КБ).

У кого есть мысли или возможность решить эту проблему, хотелось бы услышать ваше мнение. Вопрос крайне важный, можно даже сказать принципиальный.
Аватара пользователя
uni
Сообщения: 191
Зарегистрирован: Вс июл 26, 2015 9:21 pm
Откуда: Екатеринбург
Благодарил (а): 4 раза
Поблагодарили: 7 раз
Контактная информация:

Re: Arduino Mega Server

Сообщение uni » Вт июл 28, 2015 10:42 am

А как у вас карта памяти подключена к мк? Где можно на схему посмотреть?

В общем, если вы сами управляете чтением с карты по SPI, то есть нюансы этого дела. Можно рассчитать скорость чтения при таком подключении: ссылка.

О мегабайтах в секунду речь не идёт, сотня - другая килобайт в секунду в зависимости от частоты, настроек скорости SPI и размера читаемого буфера.
Вложения
Petit FatFs Read Performance.png
Petit FatFs Read Performance
Petit FatFs Read Performance.png (2.94 КБ) 16507 просмотров
Россия навсегда!
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Arduino Mega Server

Сообщение Alex » Вт июл 28, 2015 11:10 am

Карта вставлена в картридер на плате W5100 стандартно со стандартной же библиотекой. В сети встречал замеры 25 КБ в секунду, на картинке 140 КБ.

Сейчас попробую замерить, сколько в реальности.
Аватара пользователя
uni
Сообщения: 191
Зарегистрирован: Вс июл 26, 2015 9:21 pm
Откуда: Екатеринбург
Благодарил (а): 4 раза
Поблагодарили: 7 раз
Контактная информация:

Re: Arduino Mega Server

Сообщение uni » Вт июл 28, 2015 11:24 am

25 Кб/сек ? На такой скорости интерфейс с примочками не загрузить. Каждая библиотека js будет по пару секунд грузиться.

Petit FAT File System Module
В будущем, если Вы хотите вызвать функции модуля .c из файла .cpp, то Вам нужно обернуть объявления этих функция в блок 'extern "C" {}', который определяется только внутри файлов C++.
Arduino: описание процесса сборки скетча
Последний раз редактировалось uni Вт июл 28, 2015 12:09 pm, всего редактировалось 1 раз.
Россия навсегда!
Аватара пользователя
uni
Сообщения: 191
Зарегистрирован: Вс июл 26, 2015 9:21 pm
Откуда: Екатеринбург
Благодарил (а): 4 раза
Поблагодарили: 7 раз
Контактная информация:

Re: Arduino Mega Server

Сообщение uni » Вт июл 28, 2015 12:04 pm

По поводу производительности ещё. Я посмотрел на скетч server_ajax.ino. Как по мне, я бы весь интерфейс взаимодействия (протоколы) сделал на основе json, как в сети принято. Куски html отдавать - это расточительно. Нужно отдавать только массивы с данными, а js на стороне клиента должен этот json обрабатывать. В jquery есть даже параметр при приёме/передаче данных - интерпретировать как json. Для скетча работу с json можно организовать при помощи этого исходника: jsmn.
Россия навсегда!
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Arduino Mega Server

Сообщение Alex » Вт июл 28, 2015 12:14 pm

Итак, отдачей файла с карты занимается этот цикл:

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

          if (webFile) {
            while(webFile.available()) {
              sclient.write(webFile.read());
            }
            webFile.close();
          } 
мы на его работу никак повлиять не можем, тут просто нечего оптимизировать.

Но, тем не менее, он умудряется отдавать файлы со скоростью

4.1 килобайта в секунду !!!!!!!!!!!!!!!!!

какого...

Не 140 и даже не 25, а 4.1 !!!!!!!!!!!!


У кого-нибудь есть мысли?
Ответить