Страница 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
Вот и я к тому же. Единственное возможное применение - это когда нет возможности дотянуться до датчиков по проводам. Одно дело, когда так управляем вытяжкой по датчику влажности , а с котлом надо иметь дополнительные условия - что бы была вода в системе, нормальное давление , проток воды ( завелся насос или нет )...... Два раза так взрывал печку , больше не хочу ))).