Страница 203 из 326

Re: Arduino Mega Server

Добавлено: Вт апр 04, 2017 11:01 am
Nusmax
Добрый день. Вливаюсь в вашу тусовку :D
3 дня просидел с сервером. Итог: работают датчики PIR и температуры, причем разнесены на 2 контроллера, связь по nrf24.
С nrf24 я помучился конечно. Выяснилось, что генерировался ID, который ломал структуру XML, видимо запрещенные символы.
Решил обрезав диапазон "MIN_ID_CHAR", "MAX_ID_CHAR" до значений 97, 122 соответственно. Это на вкладке "aid" контроллера (мало ли кому пригодится).

В общем я в восторге :lol: , останавливаться на достигнутом не собираюсь)
Для того чтобы ускорить свои изыскания, хочу задать глупый вопрос.
На какой вкладке основной программы сервера формируется итоговые xml для вывода в веб по GET запросу (dash и nrf24)?
Заранее извиняюсь если вопрос глупый.

Re: Arduino Mega Server

Добавлено: Вт апр 04, 2017 11:34 am
serghei
И Вас приветствуем. Глупых вопросов не бывает, если что то не понятно. По моему глубокому убеждению XML таблица формируется в функции
SPOILERSPOILER_SHOW

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

// Dash

void responseDash(EthernetClient cl) {
  String s = tagXmlVersion();
  s += openInputs();
    s += makeModules();
    s += makeTag("uptime",   "", uptimeString());
    s += makeTag("freeRAM",  "", String(freeMem()));
    s += makeCpuLoad();
    s += makeTag("lifer",    "", String(lifer));
    s += makeTime();
    s += makeTag("day",      "", String(day()));
    s += makeTag("month",    "", String(month()));
    s += makeTag("weekday",  "", String(weekday())); 
во вкладке ServerAjax. Причем если хотите добавить в вывод Даш панели свои дополнительные данные, их надо продублировать. Например с SD картой есть вывод на страницу её емкости. Чтобы это отобразить на начальной странице , надо добавить к выше приведенному коду строчку

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

  s += makeTag("sdSize",   "", String(sdVolumeSize()));
Ну и обязательно перелопатить Scripts.js . Очень подробно про этот механизм расписано ТУТ

Чтобы цифры с сенсора вывести в даш-панель добавьте
SPOILERSPOILER_SHOW

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

       #ifdef NRF24_FEATURE
    s += makeTag("c1","Temp1", String(nrf1Temp1));
  #endif     
внутрь void responseDash(EthernetClient cl).

А что значит разнесены на 2 контроллера??

Re: Arduino Mega Server

Добавлено: Вт апр 04, 2017 12:05 pm
Nusmax
Спасибо за подробный ответ!
serghei писал(а): А что значит разнесены на 2 контроллера??
Ну это стандартно, ничего пока тут не придумывал. Один датчик температуры стоит а базе, другой на контроллере, который шлет данные на базу через nrf24. Я планирую сделать около 4 таких контроллеров по квартире, чтобы не тянуть длинные провода, соответственно большая часть датчиков будет привязана к контроллерам (ну это пока в планах).

Кстати, у меня есть nrf24 от RobotDyn, подключил их через их же адаптеры на 5в, чтобы не мучиться с 3.3в питанием.
Дак вот, с адаптерами без внешней антенны довольно много ошибок выходит в serial, с антенной ошибок нет вообще. Не знаю с чем связано (расстояние вроде небольшое), но лучше сразу с антенной брать.

Re: Arduino Mega Server

Добавлено: Вт апр 04, 2017 12:39 pm
serghei
Ну если так интересно, то выкладывал код для сенсора с двумя температурами, двумя счетчиками и влажностью DHT.
В качестве сенсоров использую Nano3. Питание NRF с внутреннего стабилизатора.Ошибок нет.
В дистрибутиве описана работа с одним сенсором. Пробовал запускать несколько, но не знаю как распарсить ответы от них. (сервер ответы видит правильно).Поэтому гоняю 3 сервера на разных трубах.

Re: Arduino Mega Server

Добавлено: Вт апр 04, 2017 4:40 pm
Nusmax
Оказывается, есть еще проблема с nrf24.
Я конечно буду копаться сам, но может у кого-то уже была.
При включении базы - данные приходят и заполняются. Но далее - их обновления не происходит.
Температура в течении дня не меняется. Если перезагрузить сервер - новая температура подтянется снова, и снова не будет обновляться.

Re: Arduino Mega Server

Добавлено: Вт апр 04, 2017 5:14 pm
serghei
Это известная ошибка.Решение объяснил Cahek2202 ТУТ. Посмотри и сообщения дальше.

Re: Arduino Mega Server

Добавлено: Вт апр 04, 2017 7:43 pm
ser009
тут реализован способ передачи значения по изменению. Если он вас не устраивет можете использовать время. скажем 1 раз в минуту. Циклы заложены в скетче. Можете добавить свои при необходимости

:?: Arduino Mega Server

Добавлено: Чт апр 06, 2017 8:04 am
ser009
Есть описание как передать значение с WEB -> Arduino?
с отправкой более менее понятно

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

  request.open("GET", "request_tester" + Test1 + Test2 + randomNoCache(), true); 
Поля ввода данных которые я хочу передать и дальше вызов функции

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

<input type='text' id='Test1' /> // вводимое значение 111
<input type='text' id='Test2' /> // вводимое значение 222
<br /><br />
<input type='button' value='Отправить' onclick='getButton'/>

getButton(){
var T1=document.getElementById('Test1').value;
var T2=document.getElementById('Test2').value;
}
Не могу сообразить как полученное значение записать?

Допустим я хочу на выходе получить

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

http://xxx.xxx.xxx.xx/request_tester&Test1=111&Test2=222        

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

void setTest(){
    if (StrContains(HTTP_req, "Test=111")) {
     } 
И полученный пакет как обработать?

Re: Arduino Mega Server

Добавлено: Чт апр 06, 2017 8:45 am
serghei
Страниц 20 назад в ветке АМС для ЕСП выкладывали версию для светодиодной ленты. Там с браузера можно было менять IP адреса и имя сети. Но оно запоминается в EEPROM. В Дуе её нет, но может механизм поймешь ?? Найду ссылку - сброшу сюда.
Нашел. Посмотри его сообщения дальше. На ЕСП это работает, проверял.(страница "сеть". Она такая же как на Дуе. Ну и плюс в ажаксе и главном скрипте много дополнений).

Re: Arduino Mega Server

Добавлено: Чт апр 06, 2017 10:15 am
Alex
Страниц 20 назад в ветке АМС
— Дедушка, расскажи мне про джедаев
— Ну, слушай: в давние-стародавние времена, 20 световых лет назад в кластере АМС...

:)