Страница 233 из 326
Re: Arduino Mega Server
Добавлено: Пн ноя 27, 2017 11:25 pm
ученик
Наконец то подключил 2 токовых датчика к АМС
Возникла проблема.
Вообщем есть страница sensors.htm
в ней присутствует строки
показывающие значение напряжения сети, мощностей.
но на странице эти значения прописаны в коде странице а не берут реальные значения с системы
я решил вставить вместо выставленных значений значения с системы
Код: Выделить всё
Напряжение сети</p></td><td><p>U</p></td><td><p><span class="value" id="volt">...</span></p></td> <td><p>OK</p></td> <td><p>100</p></td> <td><p>20</p></td></tr>
<tr class="tr-color1"><td class="td-first"><p>Общая мощность</p></td> <td><p>P1</p></td> <td><p><span class="value" id="p1">...</span></p></td> <td><p>OK</p></td> <td><p>100</p></td> <td><p>20</p></td></tr>
записал эти изменения на карту памяти но почему то реальные значения так и не появились
Видимо еще где то надо прописать что бы данные появились.
или в скетч добавить данные про эту страницу
*** Сообщение запрещено. Сообщение похоже на спам. ***
Re: Arduino Mega Server
Добавлено: Вт ноя 28, 2017 8:00 am
ученик
В АМС есть страница sensors.
На этой странице выведено
определенное кол-во датчиков, но данные изначально забиты, а не берутся с системы.
заменил в sensors.HTM вместо вбитых данных строки <span class="value" id="volt">...</span>
не помогло
Просмотрел скетч server ajax
в нем нет упоминания про эту страницу...
Как добавить эту страницу в скетч server ajax и как заменить данные вбитые на странице?
Re: Arduino Mega Server
Добавлено: Вт ноя 28, 2017 8:26 am
ser009
для вывода значений нужно:
SENSORS.HTM пример моей странички с комментариями
- добавить функцию получения данных с ардуино
Код: Выделить всё
<script>
function start() {
document.getElementById("hider-2").style.display = "none";
logoRotator();
getDashData();
getValue();
}
var hideInfo1 = false;
var hideInfo2 = true;
function showHide1() {
if (hideInfo1) {document.getElementById("hider-1").style.display = "block"; hideInfo1 = false;}
else {document.getElementById("hider-1").style.display = "none"; hideInfo1 = true;}
}
function showHide2() {
if (hideInfo2) {document.getElementById("hider-2").style.display = "block"; hideInfo2 = false;}
else {document.getElementById("hider-2").style.display = "none"; hideInfo2 = true;}
}
var ghvalue = ["tempDHT", "humDHT", "indexDHT", "tempBMP", "pressBMP"];
function getValue() {
var request = new XMLHttpRequest();
request.onreadystatechange = function() {
if (this.readyState == 4) {
if (this.status == 200) {
if (this.responseXML != null) {
// net activ
insertTick(30, bufferCpuLoad2);
for (var i = 0; i < ghvalue.length; i++) {
try {
var temp = this.responseXML.getElementsByTagName(ghvalue[i])[0].childNodes[0].nodeValue;
} catch (err) {
temp = "-1";
}
try {
document.getElementById(ghvalue[i]).innerHTML = temp;
} catch (err) { }
}
}
} //if (this.responseXML != null)
} // if (this.status == 200)
} // if (this.readyState == 4)
request.open("GET", "request_climate" + randomNoCache(), true);
request.send(null);
setTimeout('getValue()', 3000);
}
%# // scripts.js (mode one)
</script>
вкладка
Server Ajax
на
Arduino добавить отправку данных на запрос (в моем случает "GET", "request_climate")
Код: Выделить всё
else if (StrContains(HTTP_req, "request_climate")) {sendXmlAnswer(cl); responseClimate(cl);}
Код: Выделить всё
void responseClimate(EthernetClient cl) {
String s = tagXmlVersion();
s += openInputs();
s += makeTag("hum_gr", "", String(hum_gr));
s += makeTag("humDHT", "", String(dht1h));
s += makeTag("tempDHT", "", String(dht1t));
s += makeTag("indexDHT", "", String(dht1hic));
s += makeTag("pressBMP", "", String(bmp180press));
s += makeTag("tempBMP", "", String(bmp180temp));
s += closeInputs();
cl.println(s);
}
вот так выглядит(количество по мере подключения увеличиваю)

- sensors.JPG (97.03 КБ) 6669 просмотров
в архиве мой sensors.htm для примера
Re: Arduino Mega Server
Добавлено: Чт ноя 30, 2017 8:17 am
serghei
Nick7zmail
С электромодулем все понятно?
Скетч с NRF24 представлен как тестовый пример для ознакомления с девайсом. Для практической работы мало пригоден, пока не дописать процедуру распарсивания ответов от сенсоров по сетевому адресу. Со стороны сервера код разрастается в геометрической прогрессии.
Самый правильный вариант - это прикрутить библиотеку MySensor . Ну или использовать готовый гейт и по сериалу или сети сливать цифры с сенсоров. Но это уже к Ивану.
Шифрования нет, мало того , два. - три сервера видят один сенсор , если работают на одном канале. От соседа так не защититься )).
Сейчас у меня все сенсоры валят данные в один канал, что совсем не правильно. По факту у радио модуля 127 каналов и 6 труб. Так что теоретически можно прицепить кучу сенсоров.
Re: Arduino Mega Server
Добавлено: Чт ноя 30, 2017 7:03 pm
nick7zmail
С электро - более-менее...надо на практике пробовать...пока не начнешь - всё, как в тумане =D...
С nrf печалька...mysensors проект сам по себе мощный...боюсь к AMS прикручивать - места не хватит...но попробовать можно...
Спасибо за ответы...
Re: Arduino Mega Server
Добавлено: Чт ноя 30, 2017 8:17 pm
serghei
nick7zmail писал(а):Уважаемые пользователи! Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Шутка.
Не всё так печально !! В любом случае одним сервером не отделаться - по хорошему на квартиру надо 4 - 8 серверов. Причем на разных платформах.
Мега элементарно справляется с электро.
Дуе вообще всё по барабану - памяти валом, 16 - 32 реле на свет, любые градусники и счетчики ( ВСЕ пины работают с прерываниями) и логированием событий. С легкостью рисует графики ))......
Mega+WeMos от RobotDyn c 4-мя метрами памяти вообще без комментариев. Так же умеет забирать JSON с сайтов погоды....
С радио модулями то же не всё так плохо - с два десятка подключить вполне реально , только очень жестко и всё руками...
Главное не накосячить с проводами и щитком, а то будешь переделывать как я по 10 раз.....))
Re: Arduino Mega Server
Добавлено: Пт дек 01, 2017 4:39 pm
ученик
Решил подключить звонок к АМС
на АМС к 32 ноге согласно схемы подключил датчик контактный
на АМС все показывает , в МД все передает
Создал класс key1 с объектом cont.CLO, и свойство этого объекта cont.CLO.v
свойство меняется если клавиша нажата ставит 0 если отпущена 1
в методах key 1 update
написал код
Код: Выделить всё
if (contCLO.v==0);
say('Кто-то звонит в дверь');
мысль такова, если обновляется свойство cont.CLO.v и если оно равно 0 то сообщает кто то звонит в дверь. а на деле выходит при любом обновлении с АМС к МД, Алиса сообщает, кто-то звонит в дверь
Re: Arduino Mega Server
Добавлено: Пт дек 01, 2017 4:41 pm
nick7zmail
ученик писал(а):Решил подключить звонок к АМС
на АМС к 32 ноге согласно схемы подключил датчик контактный
на АМС все показывает , в МД все передает
Создал класс key1 с объектом cont.CLO, и свойство этого объекта cont.CLO.v
свойство меняется если клавиша нажата ставит 0 если отпущена 1
в методах key 1 update
написал код
Код: Выделить всё
if (contCLO.v==0);
say('Кто-то звонит в дверь');
мысль такова, если обновляется свойство cont.CLO.v и если оно равно 0 то сообщает кто то звонит в дверь. а на деле выходит при любом обновлении с АМС к МД, Алиса сообщает кто то звонит в дверь
Ну что за условие то у вас...contCLO.v - мд не понимает что это...надо забрать свойство gg('contCLO.v')==0
и конструкция какая-то корявая...где скобки?
Код: Выделить всё
if (gg('contCLO.v')==0) {
say('Кто-то звонит в дверь');
}
Re: Arduino Mega Server
Добавлено: Пт дек 01, 2017 4:54 pm
ученик
Изменил код
Код: Выделить всё
if (gg('contCLO.v')==0) {
say('Кто-то звонит в дверь');
}
вот после этого сообщения алиса говорит
- 2017-12-01 16:50:36 Host 192.168.1.4 GET /objects/?object=contHOM&op=m&m=update&v=1
2017-12-01 16:50:37 Host 192.168.1.4 GET /objects/?object=contCLO&op=m&m=update&v=1
Выходит без разницы на код и на условия в коде
Алиса тупо грит кто то звонит в дверь после обновления раз в мин
Re: Arduino Mega Server
Добавлено: Пт дек 01, 2017 4:58 pm
nick7zmail
Код в ардуине поправьте, чтобы вызывала
Код: Выделить всё
/objects/?object=contCLO&op=set&p=v&v=1 //устанавливает свойство v объекта contCLO в 1
Либо в методе update (если у вас такой имеется) распарсивайте запрос.