Arduino Mega Server

Модератор: Alex

serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв

Re: Arduino Mega Server

Сообщение serghei »

И под спойлер спрячте код, 5 экранов занимает )))), пожалуйста..Скомпилировали?
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Akorolev
Сообщения: 119
Зарегистрирован: Вт ноя 08, 2016 4:27 pm

Re: Arduino Mega Server

Сообщение Akorolev »

serghei писал(а):И под спойлер спрячте код, 5 экранов занимает )))), пожалуйста..Скомпилировали?
Спрятал, скомпилировал, но что то долго отклик идет, думает сек. 2 потом открывает страницу )
Ultimo
Сообщения: 75
Зарегистрирован: Сб дек 24, 2016 4:09 am

Re: Arduino Mega Server

Сообщение Ultimo »

Ребят а кто нибудь может написать скетч под мои задачи для arduino mega?
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург

Re: Arduino Mega Server

Сообщение nick7zmail »

Ultimo писал(а):Ребят а кто нибудь может написать скетч под мои задачи для arduino mega?
Задачи то озвучьте...и цену вопроса...тогда скажем - сможем/нет...
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
ser009
Сообщения: 595
Зарегистрирован: Сб окт 13, 2012 9:55 am

Re: Arduino Mega Server

Сообщение 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 не против накидаю код. Только понадобиться помощь, чтобы не тратить время при интеграции в проект
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm

Re: Arduino Mega Server

Сообщение Alex »

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

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

А вообще я жду (начиная с первой страницы) когда наступит тот момент, когда народ соберётся, запустит народный проект на Гитхаб, выберет координатора и сможет сам формировать дистрибутив так, как считает нужным.
vladragor
Сообщения: 27
Зарегистрирован: Пт янв 06, 2017 12:48 am

Re: Arduino Mega Server

Сообщение vladragor »

Вопрос по авторизации в АМС кто разобрался.
АМС в связке с МД
если заходишь на АМС в браузере все норм запросило пароль и все дальше работаем.....
Хм а как с МД??? не будешь же каждый раз авторизоваться отдельно
http://адрес амс сервера/?rele4=1 к примеру стандартная команда включения реле....
по идее тут же нужно прикрутить имя и пароль что бы команда прошла...но где....
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm

Re: Arduino Mega Server

Сообщение Alex »

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

Re: Arduino Mega Server

Сообщение vladragor »

В связи с неактуальностью MajorDoMo :) ничего не могу сказать по этому поводу. Но теоретически на стороне MajorDoMo нужно формировать запросы, содержащие строку авторизации. Я с этим не экспериментировал — может быть кто-то другой подскажет.
Но тут дело даже не в МД...По идее оставлять открытым АМС нежелательно и даже дусю если прикручивать в качестве голосового управления то нужны запросы содержащие строку авторизации....
Аватара пользователя
ser009
Сообщения: 595
Зарегистрирован: Сб окт 13, 2012 9:55 am

Re: Arduino Mega Server

Сообщение 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         
Ответить