Arduino Mega Server

Модератор: Alex

Аватара пользователя
ser009
Сообщения: 595
Зарегистрирован: Сб окт 13, 2012 9:55 am

Re: Arduino Mega Server

Сообщение ser009 »

В DASH панели не отображается состояние PIR "KID"
Во вкладке "pirs" меняем кусок кода
SPOILERSPOILER_SHOW
// pir3 (KID)
pir3 = digitalRead(pir3pin);
if (pir3 == HIGH) {
if (pir3state == LOW) {
detect("KID");
pir3state = HIGH;
#ifdef MAJORDOMO_FEATURE
sendRequestM("pirKID", 1);
#endif
/*if (MODE == LED_PIR_01) {
yellow(BRIGHT);
} */
}
} else {
if (pir3state == HIGH){
endMmotion("KID");
pir3state = LOW;
#ifdef MAJORDOMO_FEATURE
sendRequestM("pirKID", 0);
#endif
#ifdef LEDS_FEATURE
//black(led1);
#endif
}
}
В файле DASH.JS закоментировать пару строчек
SPOILERSPOILER_SHOW
// PIR's
for (var i = 0; i < 6; i++) {
try {
var dpir = this.responseXML.getElementsByTagName(pirXml)[0].childNodes[0].nodeValue;
} catch (err) {
//dpir = "-1";
//alert('Error' + err.name + ":" + err.message + "\n" + err.stack);
}
//if (i == 2) {dpir = "-1";}
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв

Re: Arduino Mega Server

Сообщение serghei »

Спасибо в очередной раз! Реально полезное дело. Осталось разобраться с синхронизацией времени. В настройках этернета указал все правильно. Все сервера на ЕСП получают время без проблем. Но в Меге другой код ( через IP ). Менял кучу адресов NTP - не помогает. Тот адрес, что указан в дистрибутиве из Молдовы пингуется, но время ожидания ответа превышает все нормы.
И еще прошу совета. Запустил связку двух АМС на Меге и WeMos_D1_mini в расширенной версии. Надо создать отдельную тему для обсуждения или корректно продолжать в теме про плату Robot Dyn ?
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Аватара пользователя
ser009
Сообщения: 595
Зарегистрирован: Сб окт 13, 2012 9:55 am

Описание работы RELE

Сообщение ser009 »

Напишу немного об управлении с которым буквально на днях разобрался.

Добавил в код ещё одну секцию rele.
Вывел её состояние на панель.

Чтобы сильно не пились код состояние реле будем получать из уже готового запроса немного его исправив. Добавляем входа которые нужно опрашивать во время выполнения функции

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

function getDashData() 

DASH.JS
SPOILERSPOILER_SHOW
var digitalPins = ["D2","D3","D4","D5","D6","D7","D8","D9","D10", "D22","D23","D24","D25","D26","D27","D28","D29","D30","D31"];
var analogPins = ["A0","A1","A2","A3","A4","A5","A6","A7","A8","A9","A10","A11","A12","A13","A14","A15","A16"];
Теперь добавляем в Arduino "server_ajax"
SPOILERSPOILER_SHOW
String makeDigitalPorts() {
String s = "";
byte pins[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31};
for (byte i = 0; i < sizeof(pins); i++) {
s += makeTag("D", String(pins), String(digitalRead(pins)));
}
return s;
}[/code]

После небольших исправлений мы получим состояние 28 и 29 входов.
Теперь что касается управления. (это мое решение и если есть замечания с удовольствием их выслушаю)
Добавил в Arduino вкладку "rele"
SPOILERSPOILER_SHOW

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

/*
  Modul RELEs
  part of Arduino Mega Server project
*/

#ifdef RELE_FEATURE

// pins
#define rele1pin 28 // Rele1
#define rele2pin 29 // Rele2

#define RELE_ON   1
#define RELE_OFF  0

char rele1object[] = "rele1";
char rele2object[] = "rele2";

char rele1onMess[] = "On"; char rele1offMess[] = "Off";
char rele2onMess[] = "On"; char rele2offMess[] = "Off";

// states
  // 0 - on
  // 1 - off
  // 2 - not defined
  // 3 - not defined and not contXstatus
byte rele1state = 2; byte old_rele1state = 3; byte rele1objectState = 2;
byte rele2state = 2; byte old_rele2state = 3; byte rele2objectState = 2;

// init
void relesInit() {
  pinMode(rele1pin, OUTPUT);
  pinMode(rele2pin, OUTPUT);
  modulReles = MODUL_ENABLE;
  started("Reles", true);
}

void relesWorks() {
  // rele1
  
  if (rele1state != old_rele1state) {
      old_rele1state = rele1state;
      
      if (rele1state == 1) {
        rele1objectState = RELE_ON;
        digitalWrite(rele1pin, HIGH); 
        printAndSend(rele1object, rele1onMess);
        #ifdef MAJORDOMO_FEATURE
          sendRequestM(rele1object, RELE_ON);
        #endif
      } else {
        rele1objectState = RELE_OFF;
        digitalWrite(rele1pin, LOW); 
        printAndSend(rele1object, rele1offMess);
        #ifdef MAJORDOMO_FEATURE
          sendRequestM(rele1object, RELE_OFF);
        #endif
      }
  }

}  
#endif // RELE_FEATURE               
Не забываем исправить

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

void  setup() void loop
Теперь об управлении
функция отправки команды на включение/выключение реле
SPOILERSPOILER_SHOW

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

function GetButton1() {
  if (RELE1_state === 1) {
    RELE1_state = 0;
    strRELE1 = "&RELE1=0";
  } else {
      RELE1_state = 1;
      strRELE1 = "&RELE1=1";
    }
  } 
Arduino дополняем "server_ajax"
SPOILERSPOILER_SHOW

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

#ifdef RELE_FEATURE
    if (StrContains(HTTP_req, "RELE1=1")) {
    rele1state = 1;}
    //digitalWrite(rele1pin, HIGH);}
    else if (StrContains(HTTP_req, "RELE1=0")) {
    rele1state = 0;}
    //digitalWrite(rele1pin, LOW);}
    if (StrContains(HTTP_req, "RELE2=1")) {
    rele2state = 1;
    digitalWrite(rele2pin, HIGH);}
    else if (StrContains(HTTP_req, "RELE2=0")) {
    rele2state = 0;
    digitalWrite(rele2pin, LOW);}
#endif             
сама кнопка на страничке
SPOILERSPOILER_SHOW

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

 <p>Выход D28 - <button type="button" onclick="GetButton1()" id="D28">...</button> </p> <br /><br /> 
SPOILERSPOILER_SHOW
Отопление.JPG
Отопление.JPG (93.79 КБ) 11474 просмотра
Последний раз редактировалось ser009 Чт мар 30, 2017 3:52 pm, всего редактировалось 1 раз.
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв

Re: Arduino Mega Server

Сообщение serghei »

Отлично ! В ветке по прикручиванию железа выкладывали решения по управлению Реле . У Меги вагон свободных выводов - попробуем прикрутить побольше.Вставлю код в Мегу - отпишусь.
И все таки полный код для страниц Dash.htm и .js можно увидеть ? Особенно в скрипте как и что прописать.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Аватара пользователя
ser009
Сообщения: 595
Зарегистрирован: Сб окт 13, 2012 9:55 am

Re: Arduino Mega Server

Сообщение ser009 »

serghei писал(а):Спасибо в очередной раз! Реально полезное дело. Осталось разобраться с синхронизацией времени. В настройках этернета указал все правильно. Все сервера на ЕСП получают время без проблем. Но в Меге другой код ( через IP ). Менял кучу адресов NTP - не помогает. Тот адрес, что указан в дистрибутиве из Молдовы пингуется, но время ожидания ответа превышает все нормы.
Не могу проверить внешние IP адреса, т.к. нахожусь на работе и не имею прямого доступа в интернет, все через прокси с паролями. Но у нас в локалке есть свой NTP сервер прописал его и вуаля все работает.
SPOILERSPOILER_SHOW
time.JPG
time.JPG (142.13 КБ) 11453 просмотра
Последний раз редактировалось ser009 Чт мар 30, 2017 3:52 pm, всего редактировалось 1 раз.
Аватара пользователя
ser009
Сообщения: 595
Зарегистрирован: Сб окт 13, 2012 9:55 am

Re: Arduino Mega Server

Сообщение ser009 »

serghei писал(а): И все таки полный код для страниц Dash.htm и .js можно увидеть ? Особенно в скрипте как и что прописать.
Вложения
+rele.rar
(4.77 КБ) 231 скачивание
Аватара пользователя
ser009
Сообщения: 595
Зарегистрирован: Сб окт 13, 2012 9:55 am

Re: Arduino Mega Server

Сообщение ser009 »

Хочу прикрутить вот такие переключатели.
Взято с онлайн конструктора https://proto.io/freebies/onoff/. Может кто делал уже такие?
Ещё нужна реализация отправки данных в переменную Arduino ( верхняя и нижняя уставки ). Для удобной настройки порогов термостата
SPOILERSPOILER_SHOW
кнопки.JPG
кнопки.JPG (36.29 КБ) 11402 просмотра
Последний раз редактировалось ser009 Чт мар 30, 2017 3:51 pm, всего редактировалось 1 раз.
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв

Re: Описание работы RELE

Сообщение serghei »

ser009 писал(а):... (это мое решение и если есть замечания с удовольствием их выслушаю)..
В очередной раз спасибо ! Это уже получается третья версия реализации управления реле в АМС. Первый через вкладку "key", второй 4-х канальное реле в ветке по прикручиванию железа. И вот это третье.
Код вставил, но с вебом не повезло - чего то не получается.Вывел статус второго реле. Выскажусь вообще по управлению релюшками. Так как свободных пинов много , хочется в отдельном модуле видеть механизм подключения до 16 (8) реле. И иметь отдельную страницу, по образу NRF24. Управлять с Веба уже понятно как, но хочется включение привязать к какой нибудь цифре в скетче. Поднялась влажность - включился вентилятор.
В целом - отлично!
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Аватара пользователя
ser009
Сообщения: 595
Зарегистрирован: Сб окт 13, 2012 9:55 am

Re: Arduino Mega Server

Сообщение ser009 »

Алгоритм регулирования не очень сложен.
Меня больше сейчас волнует вопрос настройки гибкой настройки с web-интерфейса.
Для начала банальное задание параметров c web в переменные arduino.
Аватара пользователя
ser009
Сообщения: 595
Зарегистрирован: Сб окт 13, 2012 9:55 am

Re: Arduino Mega Server

Сообщение ser009 »

Сегодня попытался добавить логер событий на sd-карте.
Очень удобно отслеживать события.
Файл создается, дополняется событиями.
Пока не разобрался как привязать запись времени.
SPOILERSPOILER_SHOW
сообщения.JPG
сообщения.JPG (62.87 КБ) 11307 просмотров
Ответить