Страница 265 из 326
Re: Arduino Mega Server
Добавлено: Вс июл 29, 2018 12:35 pm
nick7zmail
ser009 писал(а): Вс июл 29, 2018 12:11 pm
Привет всем.
Появилась необходимость доработать код для входов и выходов AMS.
Дело в том, что есть скажем пример для дискретного входа "contacts". Там код для 2 входов (HOM, CLO). Все хорошо и понятно написано.
2 входа - 2 похожих куска кода по ~ 40 строк каждый. Ну да для двух входов нормально, ну а если этих входов 40? Это же какой длины портянка получится. Поэтому необходимо допилить код...
У меня давно переписано на for (i=1, i<количество входов, i++) {и тут повторяющийся код}
Re: Arduino Mega Server
Добавлено: Вс июл 29, 2018 12:51 pm
ser009
код в студию
Re: Arduino Mega Server
Добавлено: Вс июл 29, 2018 1:19 pm
serghei
Можно попробовать через массив сделать по примеру PowerMonitor-a.
Код: Выделить всё
#ifdef CONTACTS_FEATURE
#define MAX_CONTACT_SENSORS 30 // max 30
byte pinsCONT[] = {0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 14, 15.....};// Перечисляем пины
byte START_PIN = 1;
byte END_PIN = MAX_CONTACT_SENSORS;
---------------------
/* тут обработка срабатывания /*.
----------------------------
if (STT == START_PIN && STP == END_PIN) {
sprintf(buf,"GET /objects/?object .................. // сливать оптом статусы в МД
Я сам вряд ли напишу код правильно , но получилось одним залпом отдать все термо датчики .
Другой вопрос - как это привязать к массиву реле. ( реле работают). Типа если сработал 5 контакт - включи на 30 секунд 4-е реле.
Re: Arduino Mega Server
Добавлено: Вс июл 29, 2018 1:27 pm
nick7zmail
ser009 писал(а): Вс июл 29, 2018 12:51 pm
код в студию
Код: Выделить всё
// pins (объявление переменных вначале вкладки)
const byte PIRNUM=6;
byte PIRPIN[PIRNUM] ={39,41,43,45,47,49};
// states
byte PIRSTATE[PIRNUM];
char* PIRNAME[PIRNUM]={"LIV","BED", "KID", "KUH", "WCR", "PRH"};
byte CONNREL[PIRNUM] ={0,2,4,5,6,7}; //реле, связанные с датчиками (основные)
byte PIR[PIRNUM];
// works
void pirsWorks() {
for(byte i=0; i<PIRNUM; i++) {
PIR[i] = digitalRead(PIRPIN[i]);
if (PIR[i] == HIGH) {
rel_timer_refrash(CONNREL[i]); if(CONNREL[i]==0||CONNREL[i]==2) rel_timer_refrash(CONNREL[i]+1);
if (PIRSTATE[i] == LOW) {
detect(PIRNAME[i]);
pir_on(CONNREL[i]); ; if(CONNREL[i]==0||CONNREL[i]==2) pir_on(CONNREL[i]+1);//включаем привязанное реле в автоматическом/эко режиме.
PIRSTATE[i] = HIGH;
#ifdef MAJORDOMO_FEATURE
sendRequestM(PIRNAME[i], 1);
#endif
}
} else {
if (PIRSTATE[i] == HIGH){
endMmotion(PIRNAME[i]);
PIRSTATE[i] = LOW;
#ifdef MAJORDOMO_FEATURE
sendRequestM(PIRNAME[i], 0);
#endif
}
}
}
} // pirsWorks()
Вот похожий код для пиров. Для контактов примерно так же делается.
А это отправка в server_ajax
Код: Выделить всё
#ifdef PIRS_FEATURE
String makePirs() {
String s = "";
for(byte i=0; i<PIRNUM; i++) {
s += makeTag(BASE_PIR, String(i), String(PIR[i]));
}
return s;
}
#endif
Код с 0.16 версии, 0.17 ещё не смотрел пока.
Кстати тут же ответ на вопрос предыдущего поста))) прочитал его позже, чем этот ответ писал.
Re: Arduino Mega Server
Добавлено: Вс июл 29, 2018 1:34 pm
ser009
Отлично
Re: Arduino Mega Server
Добавлено: Вс авг 05, 2018 11:08 pm
svetozar161
Приветствую. Поставил по всей квартире датчики на основе ESP12 на прошивке Макса. Датчик температуры/влажности и индикатор сегментный. В мажордомо они видятся так как там есть модуль ESP8266. Теперь, хочу сделать контроллер отопления на AMS - сейчас жду SD шилд с али - но не пойму как сделать так, чтобы мои датчики, которые висят на роутере видел контроллер AMS и на основе них принимал решение об термостатировании? Кто-нибудь делал термостат на AMS с датчиками температуры на ESP?
Re: Arduino Mega Server
Добавлено: Пн авг 06, 2018 6:20 am
alexsis_76
да без проблем,связываете ваш новоявленный девайс с вашими датчиками каким нибудь протоколом,HTTP например и вперед.
Re: Arduino Mega Server
Добавлено: Пн авг 06, 2018 7:37 am
serghei
svetozar161 писал(а): Вс авг 05, 2018 11:08 pm
Кто-нибудь делал термостат на AMS с датчиками температуры на ESP?
Вплотную подхожу к этому вопросу. Пока реально получилось увидеть сеть MySensors на AMS_ESP32 по протоколу UDP. На Меге что то не взлетело. Надо скетч основательно перерабатывать.
Но тут возникает куча не решенных проблем. Что бы эта связка работала , нужны идеальные условия -
Что будет с ESP12 если не будет работать роутер ?
Что будет с регулированием в AMS , если он не увидит ESP12 ?
.......
Без локальной сети Мега сама запустится. Веба конечно не будет.
Сделать термостат на AMS очень просто. Но он сам должен мерить температуру и щелкать реле.
Re: Arduino Mega Server
Добавлено: Пн авг 06, 2018 7:42 am
ser009
Реализовать не проблема. Появляются дополнительные "звенья" , что неизбежно ведет в уменьшению надежности системы
Re: Arduino Mega Server
Добавлено: Пн авг 06, 2018 8:04 am
serghei
Вот и я к тому же. Единственное возможное применение - это когда нет возможности дотянуться до датчиков по проводам. Одно дело, когда так управляем вытяжкой по датчику влажности , а с котлом надо иметь дополнительные условия - что бы была вода в системе, нормальное давление , проток воды ( завелся насос или нет )...... Два раза так взрывал печку , больше не хочу ))).