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

Re: Arduino Mega Server

Добавлено: Ср сен 19, 2018 10:56 am
serghei
Alex , а модуль " Ping" хоть как то у Вас работал ? Упоминали , что библиотека кривая.. Я скомпилил на Меге_017 и W5500. Пришлось переделать всю библиотеку <ICMPPing.h> для нормальной работы с W5500. Но боюсь что сам код вкладки поломал..((.
Во первых выводит в сериал всего 8 девайсов из 10-и. Ну и во вторых - не пингует. Хотя два девайса есть в локалке точно.
SPOILERSPOILER_SHOW
  • AMS_017_2 (0.17) started...
    Module Hardware...
    Controller: Arduino Mega
    Total memory: 8192
    Free memory: 2408 (29%)
    Network adapter: Ethernet Shield 2
    ============
    Module EEPROM...
    Name: AMS_017_2
    Address: 128
    ============
    Module Ethernet...
    MAC: 0 2A F5 12 67 37
    IP: 192.168.2.39
    ============
    Module SD...
    SD init... OK
    index.htm... found
    Check...............
    Files: 156
    Size: 2017781
    ============
    ============
    2018-09-19 09:52:34 Module Server... started
    2018-09-19 09:52:34 Module Upload... started
    2018-09-19 09:52:34 Module Send...
    2018-09-19 09:52:34 ============
    2018-09-19 09:52:34 Module MajorDoMo...
    2018-09-19 09:52:34 Connect to MajorDoMo... failed
    2018-09-19 09:52:36 ============
    2018-09-19 09:52:36 Module PIR... started
    2018-09-19 09:52:40 Module Electro... started
    2018-09-19 09:52:40 Module Keys... started
    2018-09-19 09:52:40 Module Ping... started
    2018-09-19 09:52:40 Module Abstract... started
    2018-09-19 09:52:40 GLOBAL Init DONE (12s)

    2018-09-19 09:52:40 AMS WORK 2374 (29%)
    2018-09-19 09:53:00 Host 192.168.2.108 not connected (GET /objects/?object=packPower2&op=m&m=update&u=52.21&p1=180.50&p2=175.40&p3=100.80&p4=101.95&p5=178.61&p6=98.46&p7=95.38&p8=97.27&p9=96.12&p10=96.81&p11=96.37&p12=96.93&p13=94.81 HTTP/1.0)
    SWH: 0
    HOM: 0
    MED: 0
    CMP: 0
    PRN: 0
    UN1: 0
    UN2: 0
    LRN: 0
    APC: 0
Ещё компилятор выдал предупреждение
  • ...\arduino\hardware\avr\1.6.21\cores\arduino/IPAddress.h:46:5: note: candidate is: IPAddress::IPAddress(uint32_t) <near match>

Re: Arduino Mega Server

Добавлено: Пт сен 21, 2018 12:37 pm
svetozar161
Огромную благодарность выражаю пользователю serghei за помощь мне в освоении амс и парсингу датчика температуры! Если бы не он, то до сих пор бы бился головой об стену. Огромное спасибо Серег.

Re: Arduino Mega Server

Добавлено: Пт сен 21, 2018 1:36 pm
serghei
И Вам Спасибо за казалось бы бредовую идею прикрутить сеть WiFi-Iot к AMS ! Я сам был сильно удивлён - оказывается Alex заранее всё предусмотрел ! :lol: Оставалось только скормить нужные данные.
Теперь сервер умеет слушать UDP , HTTP и распарсивать все что валится в сериал-порт. Это уже четвертая независимая сеть простых датчиков.

Re: Arduino Mega Server

Добавлено: Пт сен 21, 2018 2:20 pm
serghei
serghei писал(а): Ср сен 19, 2018 10:56 am Alex , а модуль " Ping" хоть как то у Вас работал ?
Воткнул пример пинга из библиотеки. Вроде заработало!!!! Но там только одно устройство. Теперь надо думать как адаптировать для хотя бы десяти.....Это пинг рутера. Работающий комп в этой сети что то не видит.
  • Reply[13] from: 192.168.2.100: bytes=64 time=3ms TTL=128
    2018-09-21 14:15:35 1914 (23%)
    2018-09-21 14:15:53 Host 192.168.2.108 not connected (GET /objects/?object=packPower2&op=m&m=update&u=51.91&p1=178.12&p2=172.42&p3=99.61&p4=100.57&p5=177.15&p6=97.80&p7=94.89&p8=96.79&p9=95.82&p10=96.10&p11=95.76&p12=96.1&p13=94.20 HTTP/1.0)
    Reply[14] from: 192.168.2.100: bytes=64 time=3ms TTL=128
Мажерик не запущен , поэтому нет соединения.

PS/ За два часа ни одного прокола. Можно пользоваться.

Re: Arduino Mega Server

Добавлено: Пт сен 21, 2018 9:23 pm
schel4ok
Подключил геркон к AMS к пину 27.
На странице ports.htm на схеме портов при открытии/закрытии окна состояние пина меняется. Когда окно закрыто - OFF, открыто - ON.
А в шапке ничего не меняется - CN1 всегда красного цвета. Я думал, что должно быть типа закрыто - зеленый, открыто - красный.

Re: Arduino Mega Server

Добавлено: Пт сен 21, 2018 10:04 pm
serghei
А резистор с пин27 на +5 вольт ?? Неа ??? Замкни просто пин27 на землю а потом на +5 вольт. В даш-панели обновление пройдет через 3 секунды.
И кажется в дистибутиве был косяк . Может в 017 это исправили. Конкретно скажу только завтра вечером.

Re: Arduino Mega Server

Добавлено: Пт сен 21, 2018 10:20 pm
schel4ok
Резистор 10 кОм поставил по схеме из мануала на hi-lab.ru

Re: Arduino Mega Server

Добавлено: Пт сен 21, 2018 10:24 pm
serghei
Мега на работе. Завтра вечером вышлю правильный код. И проверь на 31 пине.

Re: Arduino Mega Server

Добавлено: Пт сен 21, 2018 10:36 pm
schel4ok
Какая разница какой пин?

Re: Arduino Mega Server

Добавлено: Пт сен 21, 2018 10:40 pm
serghei
В 016 версии разница в коде - там был косяк.Кажется в ажаксе. ser009 исправил еще год назад. В 017 не проверял. Завтра посмотрю. А сейчас на Дуе.
На Дуе точно работает

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

/*
  Module Contacts
  part of Arduino Mega Server project
*/
/*
#ifdef CONTACTS_FEATURE

#define CONT1_PIN 27
#define CONT2_PIN 31

#define OPEN  1
#define CLOSE 0

char cont1object[] = "cont1";
char cont2object[] = "cont2";

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

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

void contactsInit() {
  pinMode(CONT1_PIN, INPUT);
  pinMode(CONT2_PIN, INPUT);
  moduleContacts = MODULE_ENABLE;
  started("Contacts");
}

void printContMess(char obj[], char mess[]) {
  timeStamp(); Serial.print(obj); Serial.print(F(": ")); Serial.println(mess);
}

void contactsWorks() {
  // cont1
  cont1state = digitalRead(CONT1_PIN);
  if (cont1state != old_cont1state) {
      old_cont1state = cont1state;
      if (cont1state == 0) {
        cont1objectState = OPEN;
        printContMess(cont1object, cont1openMess);

        #ifdef MAJORDOMO_FEATURE
          sendRequestM(cont1object, OPEN);
        #endif
                
      } else {
        cont1objectState = CLOSE;
        printContMess(cont1object, cont1closeMess);

        #ifdef MAJORDOMO_FEATURE
          sendRequestM(cont1object, CLOSE);
        #endif        
      }
  }
  
  // cont2
  cont2state = digitalRead(CONT2_PIN);
  if (cont2state != old_cont2state) {
    old_cont2state = cont2state;
    if (cont2state == 1) {
      cont2objectState = OPEN;
      printContMess(cont2object, cont2openMess);

        #ifdef MAJORDOMO_FEATURE
          sendRequestM(cont1object, OPEN);
        #endif
             
    } else {
        cont2objectState = CLOSE;
        printContMess(cont2object, cont2closeMess);
        
        #ifdef MAJORDOMO_FEATURE
          sendRequestM(cont1object, CLOSE);
        #endif   
        
      }
  }
} // contactsWorks()

#endif // CONTACTS_FEATURE
*/
#ifdef CONTACTS_FEATURE

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

#define OPEN  1
#define CLOSE 0

char cont1object[] = "cont1";
char cont2object[] = "cont2";

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);
  moduleContacts = MODULE_ENABLE;
  started("Contacts");
}


void printContMess(char obj[], char mess[]) {
  timeStamp(); Serial.print(obj); Serial.print(F(": ")); Serial.println(mess);
}
void contactsWorks() {
  // cont1 (HOM)
  cont1state = digitalRead(cont1pin);

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

     printContMess(cont1object, cont1closeMess);
     
        #ifdef MAJORDOMO_FEATURE
          sendRequestM(cont1object, CLOSE);
        #endif
      }
  }
  
  if (cycle1m) {
    old_cont1state = cont1state;

    if (cont1state == 0) {
      printContMess(cont1object, cont1openMess);
      #ifdef MAJORDOMO_FEATURE
        sendRequestM(cont1object, OPEN);
      #endif
    } else {
        printContMess(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;
        printContMess(cont2object, cont2openMess);
        #ifdef MAJORDOMO_FEATURE
          sendRequestM(cont2object, OPEN);
        #endif
      } else {
        cont2objectState = CLOSE;
        printContMess(cont2object, cont2closeMess);
        #ifdef MAJORDOMO_FEATURE
          sendRequestM(cont2object, CLOSE);
        #endif
      }
  }
  
  if (cycle1m) {
    old_cont2state = cont2state;

    if (cont1state == 0) {
      printContMess(cont2object, cont2openMess);
      #ifdef MAJORDOMO_FEATURE
        sendRequestM(cont2object, OPEN);
      #endif
    } else {
        printContMess(cont2object, cont2closeMess);
        #ifdef MAJORDOMO_FEATURE
          sendRequestM(cont2object, CLOSE);
        #endif
      }
  }
}
#endif // CONTACTS_FEATURE    
Оригинал и исправленное.