У меня давно переписано на for (i=1, i<количество входов, i++) {и тут повторяющийся код}ser009 писал(а): Вс июл 29, 2018 12:11 pm Привет всем.
Появилась необходимость доработать код для входов и выходов AMS.
Дело в том, что есть скажем пример для дискретного входа "contacts". Там код для 2 входов (HOM, CLO). Все хорошо и понятно написано.
2 входа - 2 похожих куска кода по ~ 40 строк каждый. Ну да для двух входов нормально, ну а если этих входов 40? Это же какой длины портянка получится. Поэтому необходимо допилить код...
Arduino Mega Server
Модератор: Alex
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
Re: Arduino Mega Server
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Re: Arduino Mega Server
код в студию
Re: Arduino Mega Server
Можно попробовать через массив сделать по примеру PowerMonitor-a.
Я сам вряд ли напишу код правильно , но получилось одним залпом отдать все термо датчики .
Другой вопрос - как это привязать к массиву реле. ( реле работают). Типа если сработал 5 контакт - включи на 30 секунд 4-е реле.
Код: Выделить всё
#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-е реле.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
Re: Arduino Mega Server
Код: Выделить всё
// 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Кстати тут же ответ на вопрос предыдущего поста))) прочитал его позже, чем этот ответ писал.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Re: Arduino Mega Server
Отлично
-
svetozar161
- Сообщения: 72
- Зарегистрирован: Пт янв 13, 2017 11:48 pm
Re: Arduino Mega Server
Приветствую. Поставил по всей квартире датчики на основе ESP12 на прошивке Макса. Датчик температуры/влажности и индикатор сегментный. В мажордомо они видятся так как там есть модуль ESP8266. Теперь, хочу сделать контроллер отопления на AMS - сейчас жду SD шилд с али - но не пойму как сделать так, чтобы мои датчики, которые висят на роутере видел контроллер AMS и на основе них принимал решение об термостатировании? Кто-нибудь делал термостат на AMS с датчиками температуры на ESP?
-
alexsis_76
- Сообщения: 792
- Зарегистрирован: Пт янв 22, 2016 10:08 am
Re: Arduino Mega Server
да без проблем,связываете ваш новоявленный девайс с вашими датчиками каким нибудь протоколом,HTTP например и вперед.
Re: Arduino Mega Server
Вплотную подхожу к этому вопросу. Пока реально получилось увидеть сеть MySensors на AMS_ESP32 по протоколу UDP. На Меге что то не взлетело. Надо скетч основательно перерабатывать.svetozar161 писал(а): Вс авг 05, 2018 11:08 pm Кто-нибудь делал термостат на AMS с датчиками температуры на ESP?
Но тут возникает куча не решенных проблем. Что бы эта связка работала , нужны идеальные условия -
Что будет с ESP12 если не будет работать роутер ?
Что будет с регулированием в AMS , если он не увидит ESP12 ?
.......
Без локальной сети Мега сама запустится. Веба конечно не будет.
Сделать термостат на AMS очень просто. Но он сам должен мерить температуру и щелкать реле.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Re: Arduino Mega Server
Реализовать не проблема. Появляются дополнительные "звенья" , что неизбежно ведет в уменьшению надежности системы
Re: Arduino Mega Server
Вот и я к тому же. Единственное возможное применение - это когда нет возможности дотянуться до датчиков по проводам. Одно дело, когда так управляем вытяжкой по датчику влажности , а с котлом надо иметь дополнительные условия - что бы была вода в системе, нормальное давление , проток воды ( завелся насос или нет )...... Два раза так взрывал печку , больше не хочу ))).
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS