Arduino Mega Server

Модератор:Alex

Аватара пользователя
ser009
Сообщения:595
Зарегистрирован:Сб окт 13, 2012 9:55 am
Благодарил (а): 4 раза
Поблагодарили: 43 раза
Re: Arduino Mega Server

Сообщение ser009 » Вт ноя 28, 2017 8:26 am

для вывода значений нужно:
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
sensors.JPG (97.03КБ)6421 просмотр
в архиве мой sensors.htm для примера
Вложения
sensors.rar
(2.12КБ)132 скачивания
За это сообщение автора ser009 поблагодарил:
serghei (Чт ноя 30, 2017 8:19 am)
Рейтинг: 1.16%
serghei
Сообщения:2575
Зарегистрирован:Пт ноя 06, 2015 10:22 am
Откуда:Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Arduino Mega Server

Сообщение serghei » Чт ноя 30, 2017 8:17 am

Nick7zmail
С электромодулем все понятно?
Скетч с NRF24 представлен как тестовый пример для ознакомления с девайсом. Для практической работы мало пригоден, пока не дописать процедуру распарсивания ответов от сенсоров по сетевому адресу. Со стороны сервера код разрастается в геометрической прогрессии.
Самый правильный вариант - это прикрутить библиотеку MySensor . Ну или использовать готовый гейт и по сериалу или сети сливать цифры с сенсоров. Но это уже к Ивану.
Шифрования нет, мало того , два. - три сервера видят один сенсор , если работают на одном канале. От соседа так не защититься )).
Сейчас у меня все сенсоры валят данные в один канал, что совсем не правильно. По факту у радио модуля 127 каналов и 6 труб. Так что теоретически можно прицепить кучу сенсоров.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Аватара пользователя
nick7zmail
Сообщения:7573
Зарегистрирован:Пн окт 28, 2013 8:14 am
Откуда:Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Arduino Mega Server

Сообщение nick7zmail » Чт ноя 30, 2017 7:03 pm

С электро - более-менее...надо на практике пробовать...пока не начнешь - всё, как в тумане =D...
С nrf печалька...mysensors проект сам по себе мощный...боюсь к AMS прикручивать - места не хватит...но попробовать можно...
Спасибо за ответы...
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
serghei
Сообщения:2575
Зарегистрирован:Пт ноя 06, 2015 10:22 am
Откуда:Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Arduino Mega Server

Сообщение serghei » Чт ноя 30, 2017 8:17 pm

nick7zmail писал(а):Уважаемые пользователи! Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Шутка.
Не всё так печально !! В любом случае одним сервером не отделаться - по хорошему на квартиру надо 4 - 8 серверов. Причем на разных платформах.
Мега элементарно справляется с электро.
Дуе вообще всё по барабану - памяти валом, 16 - 32 реле на свет, любые градусники и счетчики ( ВСЕ пины работают с прерываниями) и логированием событий. С легкостью рисует графики ))......
Mega+WeMos от RobotDyn c 4-мя метрами памяти вообще без комментариев. Так же умеет забирать JSON с сайтов погоды....
С радио модулями то же не всё так плохо - с два десятка подключить вполне реально , только очень жестко и всё руками... :lol:
Главное не накосячить с проводами и щитком, а то будешь переделывать как я по 10 раз.....))
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
ученик
Сообщения:230
Зарегистрирован:Чт фев 12, 2015 2:34 pm
Благодарил (а): 36 раз
Поблагодарили: 6 раз

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 то сообщает кто то звонит в дверь. а на деле выходит при любом обновлении с АМС к МД, Алиса сообщает, кто-то звонит в дверь
Последний раз редактировалось ученик Пт дек 01, 2017 4:42 pm, всего редактировалось 1 раз.
server i5, OS-Ubuntu Server 16., 1-wire
php 7, AMS,broadlink rm2,rm3 mini.
Аватара пользователя
nick7zmail
Сообщения:7573
Зарегистрирован:Пн окт 28, 2013 8:14 am
Откуда:Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Arduino Mega Server

Сообщение nick7zmail » Пт дек 01, 2017 4:41 pm

ученик писал(а):Решил подключить звонок к АМС
на АМС к 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('Кто-то звонит в дверь');
}
 
За это сообщение автора nick7zmail поблагодарил:
ученик (Пт дек 01, 2017 7:49 pm)
Рейтинг: 1.16%
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
ученик
Сообщения:230
Зарегистрирован:Чт фев 12, 2015 2:34 pm
Благодарил (а): 36 раз
Поблагодарили: 6 раз

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
Выходит без разницы на код и на условия в коде
Алиса тупо грит кто то звонит в дверь после обновления раз в мин
Последний раз редактировалось ученик Пт дек 01, 2017 5:00 pm, всего редактировалось 1 раз.
server i5, OS-Ubuntu Server 16., 1-wire
php 7, AMS,broadlink rm2,rm3 mini.
Аватара пользователя
nick7zmail
Сообщения:7573
Зарегистрирован:Пн окт 28, 2013 8:14 am
Откуда:Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Arduino Mega Server

Сообщение nick7zmail » Пт дек 01, 2017 4:58 pm

Код в ардуине поправьте, чтобы вызывала

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

/objects/?object=contCLO&op=set&p=v&v=1  //устанавливает свойство v объекта contCLO в 1  
Либо в методе update (если у вас такой имеется) распарсивайте запрос.
За это сообщение автора nick7zmail поблагодарил:
ученик (Пт дек 01, 2017 7:49 pm)
Рейтинг: 1.16%
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Alex
Сообщения:2357
Зарегистрирован:Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Arduino Mega Server

Сообщение Alex » Пт дек 01, 2017 6:21 pm

Замерил я тут напряжение на Меге — по идее должно быть 5 В. На одной 4,8 (ну это ладно), а на другой 4,2 (!) и при этом всё (АМС) работает.

Вопрос: как это вообще может быть 4,2 В вместо 5-и ? И почему при 4,2 всё работает? Причём напряжение скачет 4,1 — 4,3 вольта раз в несколько секунд, что вообще нереально — это же напряжение питания всей системы с кучей контроллеров.

Особую пикантность ситуации придают аналоговые измерения — о каких измерениях (например, Power Monitor) может идти речь, если напряжение питания дико занижено и к тому же скачет?

Кто-нибудь может объяснить в чём тут дело?
ученик
Сообщения:230
Зарегистрирован:Чт фев 12, 2015 2:34 pm
Благодарил (а): 36 раз
Поблагодарили: 6 раз

Re: Arduino Mega Server

Сообщение ученик » Пт дек 01, 2017 7:29 pm

nick7zmail писал(а):Код в ардуине поправьте, чтобы вызывала

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

/objects/?object=contCLO&op=set&p=v&v=1  //устанавливает свойство v объекта contCLO в 1    
Либо в методе update (если у вас такой имеется) распарсивайте запрос.
победил я его. в методе добавил строку

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

if (isset($_GET[v])) { 
 $this->setProperty("v",$_GET[v]); 
}
if (gg('contCLO.v')==0) {
say('Кто-то звонит в дверь');
}
server i5, OS-Ubuntu Server 16., 1-wire
php 7, AMS,broadlink rm2,rm3 mini.
Ответить