Страница 260 из 328

Re: Arduino Mega Server

Добавлено: Ср май 02, 2018 8:40 pm
nick7zmail
Ну я как бы это и объяснил вроде вкратце...
У модуля есть 3 состояния - не скомпилирован (серая подсветка), активен (синяя подсветка) и не активен (какая-то оливковая подсветка). 3е состояние почти нигде не используется. Я вам предлагаю его использовать по назначению...если вам так больше нравится - можете подсветку на красную сменить)))Но в целом суть такая.

Re: Arduino Mega Server

Добавлено: Ср май 02, 2018 8:52 pm
serghei
Суть ясна. Реализовываю ооочень долго...

Re: Arduino Mega Server

Добавлено: Ср май 02, 2018 8:59 pm
nick7zmail
А что там реализовывать то?))
1) делаем периодический запуск rtcSync() в основной функции loop()
(допустим раз в 5 минут, чтоб новые таймеры пока не городить...потом, как и говорил, новый таймер на сутки можно создать)

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

    if (cycle5m) {
      rtcSync();
    }
2) в самой rtcSync добавляем обработчики

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

void rtcSync() {
  setSyncProvider(getNtpTime);
  Serialprint("...getNtpTime... \n");
  if (timeStatus() != timeNotSet) {
    time_t t = getNtpTime();
     if (t) {
      Serialprint("...set!... \n");
      modulRtc = MODUL_ENABLE;
      RTC.set(t);    
     } else {
    	 modulRtc = MODUL_DISABLE;
     }
     setSyncProvider(RTC.get);  
  }
}
3) Проверяем как работает подсветочка (я не проверял, но должно быть ок)
4) Добавляем писк зуммера, или что вы там хотели после modulRtc = MODUL_DISABLE; для предупреждения...можете так же добавить несколько попыток getNtpTime перед тем как в disable переключать

Re: Arduino Mega Server

Добавлено: Ср май 02, 2018 9:06 pm
serghei
Пищалка стоит , таймеры на год вперёд расписаны. Буду пробовать. Спасибо!.

Re: Arduino Mega Server

Добавлено: Пт май 18, 2018 10:11 pm
svetozar161
Здравствуйте. Купил плату Mega2560+W5100 шилд. Скачал дистрибутив AMS на карту, распаковал файлы. Карта Kingston 2 Gb, класс непонятный. Подал питание, плата не пингуется. В общем мучался долго, светодиоды активности моргают линк поднимается, но IP адрес роутер не назначает. Оказалось, что стоят не те сопротивления на плате позади RJ45. Стоит резистивная сборка на 510 ом, а нужно на 51 ом. Перепаял и все заработало! IP адрес роутер назначает. Так что если кто будет брать такой шилд, знайте о косяке. Но теперь проблема другая. Нет интерфейса. Плата пингуется, но по адресу 192.168.1.37 не заходит на интерфейс, впрочем как и не заходит по другим адресам прописанным в скетче например. Вот листинг порта.

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

Arduino Mega Server (0.17) started...
Module Hardware...
 Controller:      Arduino Mega
 Total memory:    8192
 Free memory:     1930 (23%)
 Network adapter: Ethernet Shield
============
Module EEPROM...
 Name: Arduino Mega Se
 Address: 138
============
Module Ethernet...
 MAC: 5C CF 7F 12 2F 30
 IP: 192.168.1.37
============
Module SD...
 SD init... OK
 index.htm... found
 Check..............
 Files: 145
 Size:  1974200
============
Module SD Info... 
 SD type:    SD2
 Filesystem: FAT32
 Cluster:    4096
 SD size:    1961 MB
============
Module SD Files... started
Module NTP...
 Local port: 123
============
Module Time...
 NTP sync...
 Transmit NTP request (85.114.26.194:123) Receive NTP response
============
2018-05-18 22:09:21 Module Server... started
2018-05-18 22:09:21 Module Upload... started
2018-05-18 22:09:21 Module Send...
2018-05-18 22:09:21 ============
2018-05-18 22:09:21 Module MajorDoMo...
2018-05-18 22:09:21  Connect to MajorDoMo... OK
2018-05-18 22:09:21 ============
2018-05-18 22:09:21 Module Laurent...
2018-05-18 22:09:21  Connect to Laurent... failed
2018-05-18 22:09:25 Error sending command
2018-05-18 22:09:27 Error sending command
2018-05-18 22:09:27 ============
2018-05-18 22:09:27 Module Temperature...
2018-05-18 22:09:27  Parasite power OFF
2018-05-18 22:09:27  Found 0 devices
2018-05-18 22:09:27  #0: 0 0 0 0 0 0 0 temp1
2018-05-18 22:09:27  #1: 0 0 0 0 0 0 0 temp2
2018-05-18 22:09:27  #2: 0 0 0 0 0 0 0 temp2
2018-05-18 22:09:27 ============
2018-05-18 22:09:27 Module Contacts... started
2018-05-18 22:09:27 Module PIR... started
2018-05-18 22:09:28 Module Electro... started
2018-05-18 22:09:28 Module Keys... started
2018-05-18 22:09:28 Module nooLite... started
2018-05-18 22:09:28 Module MR1132... started
2018-05-18 22:09:28 Module nRF24...
2018-05-18 22:09:28  Base Receiving
2018-05-18 22:09:28 ============
2018-05-18 22:09:28 Module Abstract... started
2018-05-18 22:09:28 GLOBAL Init DONE (10s)

2018-05-18 22:09:28 AMS WORK 1896 (23%)
2018-05-18 22:09:28 cont1: Open
2018-05-18 22:09:28 cont2: Norm
Что может быть, кто что подскажет. Спасибо.

Re: Arduino Mega Server

Добавлено: Пт май 18, 2018 10:42 pm
serghei
Странно.... Время синхронизируется - значит сеть настроена правильно. Хотя уточню - точно первая подсеть ? Компьютер то же в этой сети ?
Как вариант - такое бывает , когда AMS загружен на 100 %. Отключите все модули ( особенно электро , пиры, лаурент и NRF24 ). Должно полегчать.

Re: Arduino Mega Server

Добавлено: Пт май 18, 2018 11:00 pm
svetozar161
Беда вообще произошла странная. Вдруг ни с того ни с сего отвалился W5100. Сброс не помогает линк не светится. Потом выдернул шилд, вставил, все появилось - пять минут поработал и снова пропал из сети. Где-то плохой контакт что ли...Короче придется заказать наверное 28J60 и перейти на MegaD. Эх...

Re: Arduino Mega Server

Добавлено: Пт май 18, 2018 11:12 pm
serghei
Уж если Китайцы накосячили с резисторами , то нет никакой уверенности , что все остальное правильное. Оборудование должно быть правильным. Я вот так 6 версий плат ESP32 перепробовал , пока не нашел одну адекватную.

Re: Arduino Mega Server

Добавлено: Сб май 19, 2018 8:58 am
Alex
Беда вообще произошла странная. Вдруг ни с того ни с сего отвалился W5100. Сброс не помогает линк не светится. Потом выдернул шилд, вставил, все появилось - пять минут поработал и снова пропал из сети. Где-то плохой контакт что ли...Короче придется заказать наверное 28J60 и перейти на MegaD. Эх...
Я бы посоветовал просто купить исправное оборудование и всё у вас запустится. На неисправном оборудовании, естественно, ничего работать не будет, тем более такая сложная система как АМС.

Re: Arduino Mega Server

Добавлено: Вт июн 05, 2018 9:30 pm
serghei
Много раз упоминалось , что для AMS легче и проще отправить один GET запрос со множеством данных, чем кучу мелких. Конкретный пример - " PowerMonitor" , где одним залпом отправляются 14 данных. Попробовал реализовать так же для датчика BME280 с тремя цифрами температуры , влажности и давления. ( Докатился и до этого :P ).
  • 30.7 C , 35.5% ,744.4 mm.Hg.
    2018-06-05 21:07:06 Host 192.168.2.108 GET /objects/?object=packBME&op=m&m=update&Temp=30.0&Pres=744.0&Hum=35.0& HTTP/1.0
    2018-06-05 21:07:06 85928 (87%)
    2018-06-05 21:08:05 Host 192.168.2.108 GET /objects/?object=ncDue01&op=m&m=update&v=1
Первая строчка - просто вывод в сериал данных. Вторая - отправка залпом Алисе на завтрак :D . Как видно данные с точностью до десятых ( можно поспорить , но не здесь )). А в запросе только целая часть. А вот куда делась дробная , не соображу. Хотя если отправлять по одному - всё отлично. По образу и подобию PowerMonitor-a
СпойлерПоказать

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

int temp_ = (temp - (int)temp) * 100;
int pres_ = (pres - (int)pres) * 100;  
int hum_ = (hum - (int)hum) * 100;       

void sendBMEMajor(char obj[]) {

    sprintf(buf, "GET /objects/?object=%s&op=m&m=update&%s=%0d.%d&%s=%0d.%d&%s=%0d.%d& HTTP/1.0",
      obj, "Temp", (int)temp, abs(temp_),
      "Pres", (int)pres, abs(pres_),  "Hum", (int)hum, abs(hum_));
    #ifdef MAJORDOMO_FEATURE
      sendBuffToMajor();
    #endif
}

void getUIP(char obj[]) {
  sendBMEMajor(obj);
}
==============
   if (cycle1m) {
    getUIP("packBME");
    }
    
Можно по одному
СпойлерПоказать

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

       int temp_ = 0;

            temp_ = (temp - (int)temp) * 100;

        if ((temp > -1) && (temp < 0)) {
          #ifdef MAJORDOMO_FEATURE
           // sendRequestMinusM("Temp", "-", (int)temp, abs(temp)); 
          #endif          
        } else {
            #ifdef MAJORDOMO_FEATURE
              sendRequestMinusM("Temp", "", (int)temp, abs(temp_)); 
            #endif
          }

       int pres_ = 0;

        pres_ = (pres - (int)pres) * 100;

        if ((pres > -1) && (pres < 0)) {
          #ifdef MAJORDOMO_FEATURE
           // sendRequestMinusM("Pres", "-", (int)pres, abs(pres)); 
          #endif          
        } else {
            #ifdef MAJORDOMO_FEATURE
              sendRequestMinusM("Pres", "", (int)pres, abs(pres_)); 

//              sendRequestMinusM("Pres", "", (int)pres); 
            #endif
          }

          int hum_ = 0;

                 hum_ = (hum - (int)hum) * 100;

        if ((hum > -1) && (hum < 0)) {
          #ifdef MAJORDOMO_FEATURE
          //  sendRequestMinusM("Hum", "-", (int)hum, abs(hum_)); 
          #endif          
        } else {
            #ifdef MAJORDOMO_FEATURE
              sendRequestMinusM("Hum", "", (int)hum, abs(hum_)); 
            #endif
          }
И ,к стати , опять в дистрибутиве для DUE_017 нет вывода состояния - жива или нет.
Кому интересно , просто добавить на вкладке мажера
СпойлерПоказать

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

#ifdef MAJORDOMO_FEATURE

char majorMegaObject[] = "ncDue01";
char majorCommObject[] = "comm_due01";
=====================================
void majorWorks() {

   if (cycle1m) {
    sendRequestM(majorMegaObject, 1);
    checkEvent(&prevEventMegaLive);

 }
}

#endif // MAJORDOMO_FEATURE
Такая же беда и на ESP32.

PS/ Я догадываюсь , что дело в этих кракозябрах

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

"GET /objects/?object=%s&op=m&m=update&%s=%0d.%d&%s=%0d.%d&%s=%0d.%d& HTTP/1.0"
Их должно быть ровно столько и таких , какие мы отправляем

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

      obj, "Temp", (int)temp, abs(temp_),"Pres", (int)pres, abs(pres_),  "Hum", (int)hum, abs(hum_)
Но не могу найти сайт с расшифровкой.Показывали ,но очень давно.