Страница 199 из 326
Re: Arduino Mega Server
Добавлено: Сб мар 25, 2017 2:21 pm
ser009
В DASH панели не отображается состояние PIR "KID"
Во вкладке "pirs" меняем кусок кода
// 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 закоментировать пару строчек
// 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";}
Re: Arduino Mega Server
Добавлено: Сб мар 25, 2017 7:25 pm
serghei
Спасибо в очередной раз! Реально полезное дело. Осталось разобраться с синхронизацией времени. В настройках этернета указал все правильно. Все сервера на ЕСП получают время без проблем. Но в Меге другой код ( через IP ). Менял кучу адресов NTP - не помогает. Тот адрес, что указан в дистрибутиве из Молдовы пингуется, но время ожидания ответа превышает все нормы.
И еще прошу совета. Запустил связку двух АМС на Меге и WeMos_D1_mini в расширенной версии. Надо создать отдельную тему для обсуждения или корректно продолжать в теме про плату Robot Dyn ?
Описание работы RELE
Добавлено: Вт мар 28, 2017 7:54 am
ser009
Напишу немного об управлении с которым буквально на днях разобрался.
Добавил в код ещё одну секцию rele.
Вывел её состояние на панель.
Чтобы сильно не пились код состояние реле будем получать из уже готового запроса немного его исправив. Добавляем входа которые нужно опрашивать во время выполнения функции
DASH.JS
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"
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"
Код: Выделить всё
/*
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
Не забываем исправить
Теперь об управлении
функция отправки команды на включение/выключение реле
Код: Выделить всё
function GetButton1() {
if (RELE1_state === 1) {
RELE1_state = 0;
strRELE1 = "&RELE1=0";
} else {
RELE1_state = 1;
strRELE1 = "&RELE1=1";
}
}
Arduino дополняем "server_ajax"
Код: Выделить всё
#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
сама кнопка на страничке
Код: Выделить всё
<p>Выход D28 - <button type="button" onclick="GetButton1()" id="D28">...</button> </p> <br /><br />

- Отопление.JPG (93.79 КБ) 11473 просмотра
Re: Arduino Mega Server
Добавлено: Вт мар 28, 2017 8:02 am
serghei
Отлично ! В ветке по прикручиванию железа выкладывали решения по управлению Реле . У Меги вагон свободных выводов - попробуем прикрутить побольше.Вставлю код в Мегу - отпишусь.
И все таки полный код для страниц Dash.htm и .js можно увидеть ? Особенно в скрипте как и что прописать.
Re: Arduino Mega Server
Добавлено: Вт мар 28, 2017 10:13 am
ser009
serghei писал(а):Спасибо в очередной раз! Реально полезное дело. Осталось разобраться с синхронизацией времени. В настройках этернета указал все правильно. Все сервера на ЕСП получают время без проблем. Но в Меге другой код ( через IP ). Менял кучу адресов NTP - не помогает. Тот адрес, что указан в дистрибутиве из Молдовы пингуется, но время ожидания ответа превышает все нормы.
Не могу проверить внешние IP адреса, т.к. нахожусь на работе и не имею прямого доступа в интернет, все через прокси с паролями. Но у нас в локалке есть свой NTP сервер прописал его и вуаля все работает.

- time.JPG (142.13 КБ) 11452 просмотра
Re: Arduino Mega Server
Добавлено: Вт мар 28, 2017 10:18 am
ser009
serghei писал(а): И все таки полный код для страниц Dash.htm и .js можно увидеть ? Особенно в скрипте как и что прописать.
Re: Arduino Mega Server
Добавлено: Ср мар 29, 2017 3:31 pm
ser009
Хочу прикрутить вот такие переключатели.
Взято с онлайн конструктора
https://proto.io/freebies/onoff/. Может кто делал уже такие?
Ещё нужна реализация отправки данных в переменную Arduino ( верхняя и нижняя уставки ). Для удобной настройки порогов термостата

- кнопки.JPG (36.29 КБ) 11401 просмотр
Re: Описание работы RELE
Добавлено: Ср мар 29, 2017 6:27 pm
serghei
ser009 писал(а):... (это мое решение и если есть замечания с удовольствием их выслушаю)..
В очередной раз спасибо ! Это уже получается третья версия реализации управления реле в АМС. Первый через вкладку "key", второй 4-х канальное реле в ветке по прикручиванию железа. И вот это третье.
Код вставил, но с вебом не повезло - чего то не получается.Вывел статус второго реле. Выскажусь вообще по управлению релюшками. Так как свободных пинов много , хочется в отдельном модуле видеть механизм подключения до 16 (8) реле. И иметь отдельную страницу, по образу NRF24. Управлять с Веба уже понятно как, но хочется включение привязать к какой нибудь цифре в скетче. Поднялась влажность - включился вентилятор.
В целом - отлично!
Re: Arduino Mega Server
Добавлено: Чт мар 30, 2017 5:53 am
ser009
Алгоритм регулирования не очень сложен.
Меня больше сейчас волнует вопрос настройки гибкой настройки с web-интерфейса.
Для начала банальное задание параметров c web в переменные arduino.
Re: Arduino Mega Server
Добавлено: Чт мар 30, 2017 3:51 pm
ser009
Сегодня попытался добавить логер событий на sd-карте.
Очень удобно отслеживать события.
Файл создается, дополняется событиями.
Пока не разобрался как привязать запись времени.

- сообщения.JPG (62.87 КБ) 11306 просмотров