Arduino Mega Server
Модератор: Alex
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: Arduino Mega Server
Уважаемый 123ksn, даже не знаю что сказать.
Цитата 1
На данный момент проект находится в статусе альфа версии и для работы с ним нужны знания программирования и веб-технологий. Если вы не чувствуете в себе уверенности в этих областях, то, возможно, вам стоит подождать некоторое время, пока проект не приобретёт более или менее законченный вид.
Цитата 2
Там навороченный код и порог вхождения очень высок — нужно знать HTML, CSS, JavaScript, Processing, Ардуино, 3D, разбираться в сторонних библиотеках, иметь представление о принципах сетевого взаимодействия и т. д и т. п. Кроме того, нужно ещё иметь терпение для дзен-программирования, когда каждое изменение в HTML коде нужно посылать по Serial на сервер. Явно не для всех, особенно не для тех, кто хочет нажать кнопочку - и всё готово. Все изменения под свою конфигурацию вам придётся вносить руками и много думать.
Цитата 3
Альфа версия. Концепт и демонстрация идеи. Только для хардкорных разработчиков, которые готовы разбираться в километрах кода. Требуется знание HTML, CSS, JavaScript, Processing, Arduino, 3D, терпение и большое желание понять как всё это работает. Никаких гарантий!
Цитата 4
Ещё раз — никаких гарантий! Только для тех, кто готов разбираться в коде и всё переделывать
под себя.
Это без комментариев
С проектом ознакомилось более 7000 человек и вы ОДИН высказали претензии и остались недовольны. Благодарностей — сотни.
Это тоже без комментариев
Цитата 1
На данный момент проект находится в статусе альфа версии и для работы с ним нужны знания программирования и веб-технологий. Если вы не чувствуете в себе уверенности в этих областях, то, возможно, вам стоит подождать некоторое время, пока проект не приобретёт более или менее законченный вид.
Цитата 2
Там навороченный код и порог вхождения очень высок — нужно знать HTML, CSS, JavaScript, Processing, Ардуино, 3D, разбираться в сторонних библиотеках, иметь представление о принципах сетевого взаимодействия и т. д и т. п. Кроме того, нужно ещё иметь терпение для дзен-программирования, когда каждое изменение в HTML коде нужно посылать по Serial на сервер. Явно не для всех, особенно не для тех, кто хочет нажать кнопочку - и всё готово. Все изменения под свою конфигурацию вам придётся вносить руками и много думать.
Цитата 3
Альфа версия. Концепт и демонстрация идеи. Только для хардкорных разработчиков, которые готовы разбираться в километрах кода. Требуется знание HTML, CSS, JavaScript, Processing, Arduino, 3D, терпение и большое желание понять как всё это работает. Никаких гарантий!
Цитата 4
Ещё раз — никаких гарантий! Только для тех, кто готов разбираться в коде и всё переделывать
под себя.
Это без комментариев
С проектом ознакомилось более 7000 человек и вы ОДИН высказали претензии и остались недовольны. Благодарностей — сотни.
Это тоже без комментариев
- Рейтинг: 1.16%
Re: Arduino Mega Server
Если претензии справедливые, то можно было бы сказать мне спасибо.Alex писал(а): С проектом ознакомилось более 7000 человек и вы ОДИН высказали претензии
Я остался недоволен не проектом, а тем, как он Вами представлен общественности. Проект в текущем состоянии, извините, мне не интересен. Но я нигде, никогда ничего не сказал плохого о Вашем проекте. Я впечатлен им! Круто! Так держать!Alex писал(а):и остались недовольны.
Среди них и мои. Однако редкая и конструктивная критика часто намного полезней бесконечных благодарностей. Я смею надеяться, что со временем Вы поймете ценность моих высказываний и внесете изменения в презентацию своего проекта.Alex писал(а):Благодарностей — сотни.
Успехов Вам!!!
- uni
- Сообщения: 191
- Зарегистрирован: Вс июл 26, 2015 9:21 pm
- Откуда: Екатеринбург
- Благодарил (а): 4 раза
- Поблагодарили: 7 раз
- Контактная информация:
Re: Arduino Mega Server
Доброго.
Насколько я понял, в проекте есть проблема с обновлением файлов через сеть. Используется какой-то самодельный способ загрузки.
Могу посоветовать изучить материал по ссылкам: http://cyber-place.ru/showpost.php?p=12044&postcount=45
Только там метод POST используется. Поток имеет определённую структуру, можно на ходу вычислять размер файла из первых полей и без использования промежуточного буфера сразу писать содержимое файла на флешку.
Так реализован CyberWrt модуль Обновление, в котором можно через веб-интерфейс залить прошивку роутера во временную папку и прошить его. Причём можно даже показывать прогресс загрузки файла.
Проблема, насколько я понимаю, как раз в том, чтобы мк был посредником при передаче потока байт, так как собственных ресурсов для его обработки у него нет. Я использовал интерпретатор shell и утилиту dd, чтобы реализовать приём потока, какой-то небольшой промежуточный буфер там используется, но как это могло бы выглядеть для скетча - пока сказать не могу.
Насколько я понял, в проекте есть проблема с обновлением файлов через сеть. Используется какой-то самодельный способ загрузки.
Могу посоветовать изучить материал по ссылкам: http://cyber-place.ru/showpost.php?p=12044&postcount=45
Только там метод POST используется. Поток имеет определённую структуру, можно на ходу вычислять размер файла из первых полей и без использования промежуточного буфера сразу писать содержимое файла на флешку.
Так реализован CyberWrt модуль Обновление, в котором можно через веб-интерфейс залить прошивку роутера во временную папку и прошить его. Причём можно даже показывать прогресс загрузки файла.
Проблема, насколько я понимаю, как раз в том, чтобы мк был посредником при передаче потока байт, так как собственных ресурсов для его обработки у него нет. Я использовал интерпретатор shell и утилиту dd, чтобы реализовать приём потока, какой-то небольшой промежуточный буфер там используется, но как это могло бы выглядеть для скетча - пока сказать не могу.
Россия навсегда!
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: Arduino Mega Server
Спасибо за информацию. Способ интересный, чуть попозже постараюсь с ним разобраться.
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: Arduino Mega Server
Требуется помощь сообщества!
----------------------------------------
Наконец-то дошли руки до отладки одиночного режима работы (без MajorDoMo) и тут выявилась одна крайне неприятная вещь, а именно: катастрофическое увеличение времени загрузки страничек.
Всё работает, с этим проблем нет, но загрузка странички по 10-15 секунд, на мой взгляд, совершенно неприемлема. И задача стоит уменьшить это время хотя бы до 4-5 секунд. Получается так либо красота и время загрузки 15 секунд либо отключаем все украшения и время загрузки более-менее приемлемо.
Первый вопрос где же на самом деле происходит потеря скорости и кто в этом виноват: быстродействие SD карты, картридер, шина, алгоритм в скетче Ардуино или что-то другое?
Я использую microSD карту со скоростью чтения около 20 МБ в секунду, что соответствует хорошему 10 классу. У кого есть карты с быстродействием 40 — 90 МБ в секунду было бы интересно узнать как быстро всё работает (в одиночном режиме).
Как включить одиночный режим
Просто перемещаете CSS и JS файлы на SD карту (при помощи Arduino Serial Commander) и создаёте новую страничку (просто скопировав любую существующую) и в её заголовке удаляете ссылки на сторонний сервер (192.168.... и оставляете только имя файла). При заходе на эту страничку AMS будет выдавать всё с SD карты памяти, а не пользоваться услугами стороннего сервера. Процессинг библиотеку не грузим, она слишком большая (> 200 КБ).
У кого есть мысли или возможность решить эту проблему, хотелось бы услышать ваше мнение. Вопрос крайне важный, можно даже сказать принципиальный.
----------------------------------------
Наконец-то дошли руки до отладки одиночного режима работы (без 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
А как у вас карта памяти подключена к мк? Где можно на схему посмотреть?
В общем, если вы сами управляете чтением с карты по SPI, то есть нюансы этого дела. Можно рассчитать скорость чтения при таком подключении: ссылка.
О мегабайтах в секунду речь не идёт, сотня - другая килобайт в секунду в зависимости от частоты, настроек скорости SPI и размера читаемого буфера.
В общем, если вы сами управляете чтением с карты по SPI, то есть нюансы этого дела. Можно рассчитать скорость чтения при таком подключении: ссылка.
О мегабайтах в секунду речь не идёт, сотня - другая килобайт в секунду в зависимости от частоты, настроек скорости SPI и размера читаемого буфера.
- Вложения
-
- Petit FatFs Read Performance
- Petit FatFs Read Performance.png (2.94 КБ) 16507 просмотров
Россия навсегда!
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: Arduino Mega Server
Карта вставлена в картридер на плате W5100 стандартно со стандартной же библиотекой. В сети встречал замеры 25 КБ в секунду, на картинке 140 КБ.
Сейчас попробую замерить, сколько в реальности.
Сейчас попробую замерить, сколько в реальности.
- uni
- Сообщения: 191
- Зарегистрирован: Вс июл 26, 2015 9:21 pm
- Откуда: Екатеринбург
- Благодарил (а): 4 раза
- Поблагодарили: 7 раз
- Контактная информация:
Re: Arduino Mega Server
25 Кб/сек ? На такой скорости интерфейс с примочками не загрузить. Каждая библиотека js будет по пару секунд грузиться.
Petit FAT File System Module
Petit FAT File System Module
Arduino: описание процесса сборки скетчаВ будущем, если Вы хотите вызвать функции модуля .c из файла .cpp, то Вам нужно обернуть объявления этих функция в блок 'extern "C" {}', который определяется только внутри файлов C++.
Последний раз редактировалось uni Вт июл 28, 2015 12:09 pm, всего редактировалось 1 раз.
Россия навсегда!
- uni
- Сообщения: 191
- Зарегистрирован: Вс июл 26, 2015 9:21 pm
- Откуда: Екатеринбург
- Благодарил (а): 4 раза
- Поблагодарили: 7 раз
- Контактная информация:
Re: Arduino Mega Server
По поводу производительности ещё. Я посмотрел на скетч server_ajax.ino. Как по мне, я бы весь интерфейс взаимодействия (протоколы) сделал на основе json, как в сети принято. Куски html отдавать - это расточительно. Нужно отдавать только массивы с данными, а js на стороне клиента должен этот json обрабатывать. В jquery есть даже параметр при приёме/передаче данных - интерпретировать как json. Для скетча работу с json можно организовать при помощи этого исходника: jsmn.
Россия навсегда!
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: Arduino Mega Server
Итак, отдачей файла с карты занимается этот цикл:
мы на его работу никак повлиять не можем, тут просто нечего оптимизировать.
Но, тем не менее, он умудряется отдавать файлы со скоростью
4.1 килобайта в секунду !!!!!!!!!!!!!!!!!
какого...
Не 140 и даже не 25, а 4.1 !!!!!!!!!!!!
У кого-нибудь есть мысли?
Код: Выделить всё
if (webFile) {
while(webFile.available()) {
sclient.write(webFile.read());
}
webFile.close();
}
Но, тем не менее, он умудряется отдавать файлы со скоростью
4.1 килобайта в секунду !!!!!!!!!!!!!!!!!
какого...
Не 140 и даже не 25, а 4.1 !!!!!!!!!!!!
У кого-нибудь есть мысли?