Arduino Mega Server
Модератор: Alex
-
- Сообщения: 81
- Зарегистрирован: Пт окт 02, 2015 7:47 pm
- Благодарил (а): 7 раз
- Поблагодарили: 4 раза
Re: Arduino Mega Server
SPbDima,спасибо,реализовываете очень необходимые функции и идеи!
у меня не совсем корректно работает отправка файлов на сервер...например я отправляю 404.htm(для эксперимента),вместо замещения файла появляется новый 404.h...что я делаю не так?ведь интересно именно замещение,удаленно редактировать файлы чтоб...
у меня не совсем корректно работает отправка файлов на сервер...например я отправляю 404.htm(для эксперимента),вместо замещения файла появляется новый 404.h...что я делаю не так?ведь интересно именно замещение,удаленно редактировать файлы чтоб...
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: Arduino Mega Server
Объявляем переменную:
long errorsHttpSend = 0;
В цикле печатаем:
Serial.println(errorsHttpSend);
Результат:
808333615
Переименовываем, добавляя 2:
long errorsHttpSend2 = 0;
В цикле печатаем:
Serial.println(errorsHttpSend2);
Результат:
0
Наши друзья из arduino.cc совсем … ? И как вести разработку в такой IDE?
long errorsHttpSend = 0;
В цикле печатаем:
Serial.println(errorsHttpSend);
Результат:
808333615
Переименовываем, добавляя 2:
long errorsHttpSend2 = 0;
В цикле печатаем:
Serial.println(errorsHttpSend2);
Результат:
0
Наши друзья из arduino.cc совсем … ? И как вести разработку в такой IDE?
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: Arduino Mega Server
Попробовал перейти на 1.6.7. Ничего не вышло — в упор не видит библиотеку Time. Пришлось вернуться на 1.6.5
Теперь не компилируется уже 1.6.5 с ошибкой директории...
Ладно, восстанавливаем из архива IDE и SAM для Due...
Компилируется.
Ну дают мастера из ардуино.сс... у меня слов нет...
Теперь не компилируется уже 1.6.5 с ошибкой директории...
Ладно, восстанавливаем из архива IDE и SAM для Due...
Компилируется.
Ну дают мастера из ардуино.сс... у меня слов нет...
-
- Сообщения: 5
- Зарегистрирован: Ср дек 30, 2015 8:15 am
- Благодарил (а): 1 раз
- Поблагодарили: 0
Re: Arduino Mega Server
Помаленьку исправляем косяки:
У меня локалка в диапазоне 192.168.1.* со шлюзом в Интернет 192.168.1.200. Поменял шилду W5100 IP адрес, никак не поднимался NTP клиент.
Решение:нужно в модуле ethernet указать gateway!
и все поднялось.
У меня локалка в диапазоне 192.168.1.* со шлюзом в Интернет 192.168.1.200. Поменял шилду W5100 IP адрес, никак не поднимался NTP клиент.
Решение:нужно в модуле ethernet указать gateway!
Код: Выделить всё
// Ethernet settings
byte SELF_MAC[] = {0x00, 0x2A, 0xF5, 0x12, 0x68, 0xFE};
byte SELF_IP[] = {192, 168, 1, 57};
byte MY_DNS[] = {84, 22, 142,2};
byte MY_GATEWAY[] = {192, 168, 1, 200};
void ethernetInit() {
Ethernet.begin(SELF_MAC, SELF_IP, MY_DNS, MY_GATEWAY);
modulEthernet = 1;
Serial.println("Modul Ethernet... started");
}
-
- Сообщения: 113
- Зарегистрирован: Пн окт 19, 2015 8:27 am
- Благодарил (а): 9 раз
- Поблагодарили: 21 раз
Re: Arduino Mega Server
Потому что расширение файла указано в верхнем регистре, а при парсинге стоки командой:pastry777 писал(а):SPbDima,спасибо,реализовываете очень необходимые функции и идеи!
у меня не совсем корректно работает отправка файлов на сервер...например я отправляю 404.htm(для эксперимента),вместо замещения файла появляется новый 404.h...что я делаю не так?ведь интересно именно замещение,удаленно редактировать файлы чтоб...
else if (StrContains(HTTP_req, "POST /") && StrContains(HTTP_req, "uploadfile")) {
строка разделяется символами P,O,S,T," ",/ - и именно в регистре в котором указаны. поэтому из 404.HTM получается имя файла 404.H
На данный баг недавно сам натолкнулся и исправил в релизе.
-
- Сообщения: 113
- Зарегистрирован: Пн окт 19, 2015 8:27 am
- Благодарил (а): 9 раз
- Поблагодарили: 21 раз
Re: Arduino Mega Server
Alex, прости, но ни Пир-датчиков, ни Дуо у меня нет, поэтому я тебе в этом деле не помощник.
На версию 1.6.7. переехал без проблем.
На версию 1.6.7. переехал без проблем.
-
- Сообщения: 5
- Зарегистрирован: Ср дек 30, 2015 8:15 am
- Благодарил (а): 1 раз
- Поблагодарили: 0
Re: Arduino Mega Server
Еще немножко: файл STYLE.CSS, убрал жестко прописанный IP адрес, а то не работали полноэкранные демо.
Было:
стало:
Демки заработали.
Было:
Код: Выделить всё
.concept1 {
color: #fff;
background: #C3AFA8 url(//192.168.2.36/concept1.png) no-repeat;
background-size: 100% 100%;
}
Код: Выделить всё
.concept1 {
color: #fff;
background: #C3AFA8 url(concept1.png) no-repeat;
background-size: 100% 100%;
}
-
- Сообщения: 113
- Зарегистрирован: Пн окт 19, 2015 8:27 am
- Благодарил (а): 9 раз
- Поблагодарили: 21 раз
Re: Arduino Mega Server
Выкладываю Релиз.
Внимание! кто пробовал рабочий вариант, необходимо удалить в логах датчиков запятую в начале файла и, рекомендую, удалить файл конфигурации.
Что реализовано:
1. upload файлов на сервер.
2. Информация для даш-панели:
2.1. разделена на 2 части:
2.1.1. при загрузке страницы получаем состояние системы(индикаторы/кнопки в даш)
2.1.2. постоянно обновляем только изменяемые данные, как загрузка системы, свободное место, uptime, температура, напряжение, время
2.2. данные получаем от сервера в формате json, что существенно сокращает размер постоянно получаемых данных от сервера
2.3. частота запросов уменьшается на время upload
2.4. (Для разработчика) Теперь в запросе для даш-панели можно запрашивать дополнительные параметры, к примеру, когда работаешь со страницей "сенсоры" получать текущую температуру с добавлением показателей в таблицу. Задействованы: scripts.js(function getDashDataJSON()) и server_ajax.ino(void responseDashJSON(EthernetClient cl))
3. глобальная переделка работы с температурными датчиками
3.1. теперь в переменных скетча не надо указывать руками id датчиков температуры, т.к. вся необходимая информация, при старте системы, берется из конфигов. Которые, при их отсутствии, создаются с параметрами датчиков по умолчанию.
3.2. создан новый класс (переменная с параметрами датчиков) для датчиков температуры, который используется сервером для работы.
3.3. конфигурация датчиков производит клиент на веб сервере, т.е. при открытии страницы "сенсоры" в таблицу подгружается файл-конфиг датчиков. При необходимости, в таблице данные правятся и отправляются обратно на сервер, где удаляется старый конфиг-файл и создаётся новый с полученными данными. Далее происходит повторная инициализация датчиков, и если, есть ошибки в конфиг-файле, то они исправляются. Далее, конфиг-файл отправляется клиенту.
3.4. ведется лог датчиков. Для каждого датчика пишется свой лог. Имя лога имеет следующие идентификаторы: второй и третий байты id датчиков, месяц и год в hex.
3.5. веб-клиент строит график изменения температуры по запрашиваемым логам. - внимание! пока параметры запроса логов нужно делать вручную в файле "sensors.js" в функции "void responseDashJSON(EthernetClient cl)" строка request.open("GET", "&A&B&LogTSensor" + randomNoCache(), true); - где А-количество месяцев, B - порядковые номера датчиков через запятую.
3.6. логи и конфиг хранятся в формате json
3.7. При нажатии кнопки "применить" в настройке параметров датчиков происходит повторная инициализация сенсоров.
4. добавлена в скетч переменная, которая определяет первый проход по loop, т.к. у Алекса там временной диапазон, который срабатывал только после третьего прохода по loop.
Что не доделано:
1. т.к. для работы с SD используем урезанную библиотеку (не sdfat), то файлы сохраняются с датой создания 01.01.1970 - видимо так и останется
2. в скетче осталось много соплей формирующих XML
3. не оптимизирован парсинг json в скетче (старался улучшить как мог)
4. до конца не реализована загрузка в график логов
Развитие:
1. для upload нужно сделать отдельную страницу, где выводить файлы с размерами, которые находятся на SD. Если Alex сделает страницу, то я её наполню.
2. расчет hash данных при отправке
3. докачка файлов
4. сделать красивым прогресс-бар
ВНИМАНИЕ!!!
1. все доработки проверялись на странице сенсоры
2. для нормальной загрузки сайта необходимо АЛЕКСУ доделать скетч, чтобы небыло дополнительно подгружаемых файлов. Сейчас при работе со страницей "сенсоры" в браузер подгружается 3 файла: sensors.htm, sensor.js и CSS-файл. Из-за слабости интернет шилда: sensor.js и CSS-файл - подгружаются через раз. Для устранения данной проблемы необходимо файлы <страница>.js и CSS-файл включать в <страница>.htm
Внимание! кто пробовал рабочий вариант, необходимо удалить в логах датчиков запятую в начале файла и, рекомендую, удалить файл конфигурации.
Что реализовано:
1. upload файлов на сервер.
2. Информация для даш-панели:
2.1. разделена на 2 части:
2.1.1. при загрузке страницы получаем состояние системы(индикаторы/кнопки в даш)
2.1.2. постоянно обновляем только изменяемые данные, как загрузка системы, свободное место, uptime, температура, напряжение, время
2.2. данные получаем от сервера в формате json, что существенно сокращает размер постоянно получаемых данных от сервера
2.3. частота запросов уменьшается на время upload
2.4. (Для разработчика) Теперь в запросе для даш-панели можно запрашивать дополнительные параметры, к примеру, когда работаешь со страницей "сенсоры" получать текущую температуру с добавлением показателей в таблицу. Задействованы: scripts.js(function getDashDataJSON()) и server_ajax.ino(void responseDashJSON(EthernetClient cl))
3. глобальная переделка работы с температурными датчиками
3.1. теперь в переменных скетча не надо указывать руками id датчиков температуры, т.к. вся необходимая информация, при старте системы, берется из конфигов. Которые, при их отсутствии, создаются с параметрами датчиков по умолчанию.
3.2. создан новый класс (переменная с параметрами датчиков) для датчиков температуры, который используется сервером для работы.
3.3. конфигурация датчиков производит клиент на веб сервере, т.е. при открытии страницы "сенсоры" в таблицу подгружается файл-конфиг датчиков. При необходимости, в таблице данные правятся и отправляются обратно на сервер, где удаляется старый конфиг-файл и создаётся новый с полученными данными. Далее происходит повторная инициализация датчиков, и если, есть ошибки в конфиг-файле, то они исправляются. Далее, конфиг-файл отправляется клиенту.
3.4. ведется лог датчиков. Для каждого датчика пишется свой лог. Имя лога имеет следующие идентификаторы: второй и третий байты id датчиков, месяц и год в hex.
3.5. веб-клиент строит график изменения температуры по запрашиваемым логам. - внимание! пока параметры запроса логов нужно делать вручную в файле "sensors.js" в функции "void responseDashJSON(EthernetClient cl)" строка request.open("GET", "&A&B&LogTSensor" + randomNoCache(), true); - где А-количество месяцев, B - порядковые номера датчиков через запятую.
3.6. логи и конфиг хранятся в формате json
3.7. При нажатии кнопки "применить" в настройке параметров датчиков происходит повторная инициализация сенсоров.
4. добавлена в скетч переменная, которая определяет первый проход по loop, т.к. у Алекса там временной диапазон, который срабатывал только после третьего прохода по loop.
Что не доделано:
1. т.к. для работы с SD используем урезанную библиотеку (не sdfat), то файлы сохраняются с датой создания 01.01.1970 - видимо так и останется
2. в скетче осталось много соплей формирующих XML
3. не оптимизирован парсинг json в скетче (старался улучшить как мог)
4. до конца не реализована загрузка в график логов
Развитие:
1. для upload нужно сделать отдельную страницу, где выводить файлы с размерами, которые находятся на SD. Если Alex сделает страницу, то я её наполню.
2. расчет hash данных при отправке
3. докачка файлов
4. сделать красивым прогресс-бар
ВНИМАНИЕ!!!
1. все доработки проверялись на странице сенсоры
2. для нормальной загрузки сайта необходимо АЛЕКСУ доделать скетч, чтобы небыло дополнительно подгружаемых файлов. Сейчас при работе со страницей "сенсоры" в браузер подгружается 3 файла: sensors.htm, sensor.js и CSS-файл. Из-за слабости интернет шилда: sensor.js и CSS-файл - подгружаются через раз. Для устранения данной проблемы необходимо файлы <страница>.js и CSS-файл включать в <страница>.htm
- Вложения
-
- sketch(30122015).rar
- (36.1 КБ) 280 скачиваний
-
- sd(30122015).rar
- (21.03 КБ) 267 скачиваний
- За это сообщение автора SPbDima поблагодарили (всего 3):
- victorhom (Ср дек 30, 2015 1:00 pm) • pastry777 (Сб янв 30, 2016 5:02 pm) • braserlaky (Ср фев 24, 2016 11:55 am)
- Рейтинг: 3.49%
-
- Сообщения: 5
- Зарегистрирован: Ср дек 30, 2015 8:15 am
- Благодарил (а): 1 раз
- Поблагодарили: 0
Re: Arduino Mega Server
файл arduino_mega_serverSPbDima писал(а):Выкладываю Релиз.
строка 178
Ошибка компилятора:
'strncpy_P' was not declared in this scope
Плата Arduino Due.
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: Arduino Mega Server
Статья на Гиктаймс
«Новогодние приколы от проекта Arduino Mega Server»
http://geektimes.ru/post/268522/
«Новогодние приколы от проекта Arduino Mega Server»
http://geektimes.ru/post/268522/