Страница 189 из 326

Re: Arduino Mega Server

Добавлено: Ср янв 18, 2017 5:55 pm
serghei
И под спойлер спрячте код, 5 экранов занимает )))), пожалуйста..Скомпилировали?

Re: Arduino Mega Server

Добавлено: Чт янв 19, 2017 3:03 am
Akorolev
serghei писал(а):И под спойлер спрячте код, 5 экранов занимает )))), пожалуйста..Скомпилировали?
Спрятал, скомпилировал, но что то долго отклик идет, думает сек. 2 потом открывает страницу )

Re: Arduino Mega Server

Добавлено: Сб янв 21, 2017 12:24 pm
Ultimo
Ребят а кто нибудь может написать скетч под мои задачи для arduino mega?

Re: Arduino Mega Server

Добавлено: Сб янв 21, 2017 12:43 pm
nick7zmail
Ultimo писал(а):Ребят а кто нибудь может написать скетч под мои задачи для arduino mega?
Задачи то озвучьте...и цену вопроса...тогда скажем - сможем/нет...

Re: Arduino Mega Server

Добавлено: Ср янв 25, 2017 6:21 am
ser009
В общем есть мысли по доработке AMS в плане работы с портами:
Я имею делаю дело с промышленными контроллерами и постараюсь изложить технологию работы с портами ввода/вывода промышленных контроллеров

Пример настроек дискретного входа:
SPOILERSPOILER_SHOW
- Физические данные с каждого порта считываются пи складываются в переменную. DI_OUT
- Для каждого порта задается режим работы DI_MODE (0 - измерение, 1 - имитация)
- Переменная DI_IMIT лежит значение имитации
- Так же можно прикрутить и переменную в которой будет хранится время опроса канала (дребиск)
- Инверсия. Позволяет изменить входной сигнал 1 на 0. И наобарот.
- Также это позволит сохраняя данные а EEprom или на SD при перезагрузке контроллера загрузить данные во временную переменную DI_OUT
Алгоритм на словах выгледит следующим образом:
SPOILERSPOILER_SHOW
Считываем данные, проверяем режим и если режим измерения перекладываем данные в DI_OUT. Если режим имитации то считываемое значение отображаем, но для алгоритмов берем значение из переменной DI_IMIT. И проверяем и инверсию
Если Alex не против накидаю код. Только понадобиться помощь, чтобы не тратить время при интеграции в проект

Re: Arduino Mega Server

Добавлено: Ср янв 25, 2017 7:31 am
Alex
Если Alex не против накидаю код. Только понадобиться помощь, чтобы не тратить время при интеграции в проект
Почему Alex должен быть против? Разве я хоть раз кому-то запрещал что-то выдумывать и делиться кодом? Наоборот это всегда только приветствуется.

Другое дело, что я из вашего сообщения ни слова не понял и в дистрибутив это включать навряд ли буду. Но если вы выложите это решение на форуме, то возможно оно кому-то понадобится.

А вообще я жду (начиная с первой страницы) когда наступит тот момент, когда народ соберётся, запустит народный проект на Гитхаб, выберет координатора и сможет сам формировать дистрибутив так, как считает нужным.

Re: Arduino Mega Server

Добавлено: Пт янв 27, 2017 2:59 pm
vladragor
Вопрос по авторизации в АМС кто разобрался.
АМС в связке с МД
если заходишь на АМС в браузере все норм запросило пароль и все дальше работаем.....
Хм а как с МД??? не будешь же каждый раз авторизоваться отдельно
http://адрес амс сервера/?rele4=1 к примеру стандартная команда включения реле....
по идее тут же нужно прикрутить имя и пароль что бы команда прошла...но где....

Re: Arduino Mega Server

Добавлено: Пт янв 27, 2017 4:38 pm
Alex
Вопрос по авторизации в АМС кто разобрался.
АМС в связке с МД
если заходишь на АМС в браузере все норм запросило пароль и все дальше работаем.....
Хм а как с МД??? не будешь же каждый раз авторизоваться отдельно
http://адрес амс сервера/?rele4=1 к примеру стандартная команда включения реле....
по идее тут же нужно прикрутить имя и пароль что бы команда прошла...но где....
В связи с неактуальностью MajorDoMo :) ничего не могу сказать по этому поводу. Но теоретически на стороне MajorDoMo нужно формировать запросы, содержащие строку авторизации. Я с этим не экспериментировал — может быть кто-то другой подскажет.

Re: Arduino Mega Server

Добавлено: Пт янв 27, 2017 11:56 pm
vladragor
В связи с неактуальностью MajorDoMo :) ничего не могу сказать по этому поводу. Но теоретически на стороне MajorDoMo нужно формировать запросы, содержащие строку авторизации. Я с этим не экспериментировал — может быть кто-то другой подскажет.
Но тут дело даже не в МД...По идее оставлять открытым АМС нежелательно и даже дусю если прикручивать в качестве голосового управления то нужны запросы содержащие строку авторизации....

Re: Arduino Mega Server

Добавлено: Вс янв 29, 2017 2:44 pm
ser009
Нашел небольшую незначительную ошибку.
При включении модуля дискретных входов

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

#define CONTACTS_FEATURE         
не работал вход D31.
Перекопал весь проект!!! Но нашел.
Вкладка contacts
Вот исправленный код.
SPOILERSPOILER_SHOW

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

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

#ifdef CONTACTS_FEATURE

#define cont1pin 27 // HOM
#define cont2pin 31 // CLO

#define OPEN  1
#define CLOSE 0

char cont1object[] = "contHOM";
char cont2object[] = "contCLO";

char cont1openMess[] = "Open"; char cont1closeMess[] = "Closed";
char cont2openMess[] = "Open"; char cont2closeMess[] = "Closed";

// states
  // 0 - open
  // 1 - close
  // 2 - not defined
  // 3 - not defined and not contXstatus
byte cont1state = 2; byte old_cont1state = 3; byte cont1objectState = 2;
byte cont2state = 2; byte old_cont2state = 3; byte cont2objectState = 2;

void contactsInit() {
  pinMode(cont1pin, INPUT);
  pinMode(cont2pin, INPUT);
  modulContacts = MODUL_ENABLE;
  started("Contacts", true);
}

void printAndSend(char obj[], char mess[]) {
  #ifdef EVENTS_CONTACTS
    timeStamp();
    Serial.print(obj);
    Serial.print(": ");
    Serial.println(mess);
  #endif
}

void contactsWorks() {
  // cont1 (HOM)
  cont1state = digitalRead(cont1pin);

  if (cont1state != old_cont1state) {
      old_cont1state = cont1state;
      
      if (cont1state == 0) {
        cont1objectState = OPEN;
        printAndSend(cont1object, cont1openMess);
        #ifdef MAJORDOMO_FEATURE
          sendRequestM(cont1object, OPEN);
        #endif
      } else {
        cont1objectState = CLOSE;
        printAndSend(cont1object, cont1closeMess);
        #ifdef MAJORDOMO_FEATURE
          sendRequestM(cont1object, CLOSE);
        #endif
      }
  }
  
  if (cycle1m) {
    old_cont1state = cont1state;

    if (cont1state == 0) {
      printAndSend(cont1object, cont1openMess);
      #ifdef MAJORDOMO_FEATURE
        sendRequestM(cont1object, OPEN);
      #endif
    } else {
        printAndSend(cont1object, cont1closeMess);
        #ifdef MAJORDOMO_FEATURE
          sendRequestM(cont1object, CLOSE);
        #endif
      }
  }

  // cont2 (CLO)
  cont2state = digitalRead(cont2pin);

  if (cont2state != old_cont2state) {
      old_cont2state = cont2state;
      
      if (cont2state == 0) {
        cont2objectState = OPEN;
        printAndSend(cont2object, cont2openMess);
        #ifdef MAJORDOMO_FEATURE
          sendRequestM(cont2object, OPEN);
        #endif
      } else {
        cont2objectState = CLOSE;
        printAndSend(cont2object, cont2closeMess);
        #ifdef MAJORDOMO_FEATURE
          sendRequestM(cont2object, CLOSE);
        #endif
      }
  }
  
  if (cycle1m) {
    old_cont2state = cont2state;

    if (cont1state == 0) {
      printAndSend(cont2object, cont2openMess);
      #ifdef MAJORDOMO_FEATURE
        sendRequestM(cont2object, OPEN);
      #endif
    } else {
        printAndSend(cont2object, cont2closeMess);
        #ifdef MAJORDOMO_FEATURE
          sendRequestM(cont2object, CLOSE);
        #endif
      }
  }
}
#endif // CONTACTS_FEATURE