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

Re: Arduino Mega Server

Добавлено: Сб сен 22, 2018 7:02 am
Alex
Так и есть...только при старте. Я приводил пример как сделать синхронизацию периодической.
Этого ничего делать не надо — библиотека сама периодически синхронизирует время.
Alex , а модуль " Ping" хоть как то у Вас работал ?
Друзья! После того, как на главной странице сайта исчез список последних сообщений на форуме, я стал пропускать ваши вопросы потому, что просто не вижу их. Поэтому ответы либо задерживаются, либо вы их не получаете вовсе. Я уже поднимал этот вопрос, ещё раз хочу обратить на это внимание: Сергей, верните список последних сообщений! (Тот список, который есть, слишком короткий и работает по неправильному алгоритму.)

По сути вопроса: Ping работал, хоть и плохо, но с переходом на какую-то версию совсем перестал, поэтому я его отключил.
Огромную благодарность выражаю пользователю serghei за помощь
Да, serghei молодец — сам учится и другим помогает.
Я сам был сильно удивлён - оказывается Alex заранее всё предусмотрел !
Вы не представляете сколько ещё и чего Alex предусмотрел. :) В отличие от прочей лабуды, АМС вещь СИСТЕМНАЯ (если вы понимаете о чём я).

Re: Arduino Mega Server

Добавлено: Сб сен 22, 2018 7:52 am
serghei
Alex писал(а): Сб сен 22, 2018 7:02 amАМС вещь СИСТЕМНАЯ
Это я уже понял очень давно , поэтому и стараюсь сделать его главным сервером в доме. И самое главное - он НЕ ГЛЮЧИТ !! Ни одна платформа ! И если что то не работает , то это ТОЛЬКО из - за кривых рук.

А напичкивание функционалом - так это коллективный процесс . Я только выступаю в роли подопытного... И все , чего добился - это благодаря трем моим учителям - форумчанам.

To schel4ok

Работа AMS состоит из 4-х частей:

1 Код
2 Вкладка Ажакс
3 СКРИПТ !!!!
4 Вывод в HTML.

И если на одной странице все работает правильно , а на другой нет - значит код не причем и косячит Scripts.js Ну или в проводных AMS это Dash.js Надо там ковыряться.

"Ping" у меня сейчас для W5500 . Почему то рутер видит , а любой другой сервер нет. Хотя просто меняю IP адрес.
Всё это нужно - что бы один сервер видел состояние остальных. Ну это очередная хотелка )).

PS / Самая большая награда для меня - это благодарность от таких же начинающих как и я.... ;)

PSS/ Банальный пример - в одном проекте для 8266 увидел , как со страницы попасть на любую другую. Цена вопроса - ОДНА строчка в HTM блоке. Теперь можно применить везде где это нужно....

Re: Arduino Mega Server

Добавлено: Сб сен 22, 2018 10:06 pm
serghei
Возможно я изменил вкладку " Контакт". Привожу рабочий вариант. Сама вкладка

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

/*
  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
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);
    } else {
        cont2objectState = CLOSE;
        printContMess(cont2object, cont2closeMess);
      }
  }
} // contactsWorks()

#endif // CONTACTS_FEATURE
В сервере ажакс

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

#ifdef CONTACTS_FEATURE
  String makeContacts() {
    String s = "";
    s += makeTag(BASE_CONTACT, "1", String(cont1objectState));
    s += makeTag(BASE_CONTACT, "2", String(cont2objectState));
    return s;
  }
#endif
----------------
    #ifdef CONTACTS_FEATURE
      s += makeContacts();// В void respDash(EthernetClient cl) {
    #endif  
В Dash.js

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

          // Contacts

          for (var i = 0; i < contName.length; i++) {
            try {
              var dcont = this.responseXML.getElementsByTagName(contXml[i])[0].childNodes[0].nodeValue;
            } catch (err) {
                dcont = '-1';
              }
            try {
              document.getElementById(contId[i]).innerHTML        = contName[i];
              document.getElementById(contId[i]).style.background = contactBackground(dcont);
              document.getElementById(contId[i]).style.color      = contactColor(dcont);
            } catch (err) { }
          }
Только работает в инверсном режиме - при D31 на +5 вольт и D27 на корпус оба контакта красных. При D31 на корпус и D27 на +5 вольт - оба зеленых.

Re: Arduino Mega Server

Добавлено: Сб сен 22, 2018 10:40 pm
schel4ok
Спасибо. Этот вариант работает.
Я уже сам последовательно нашел, что проблема была именно в коде файла contacts.ino
Он всё время передавал состояние контакта = 1. И поэтому в шапке у меня ничего не менялось.
Но знаний C++ пока не хватает, чтобы написать этот код верно.

А в прошлом сообщении была ещё такая конструкция. Она для чего?

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

  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
      }
  }

Re: Arduino Mega Server

Добавлено: Сб сен 22, 2018 10:55 pm
serghei
То сообщение относилось к Дуе еще 016 версии. Сейчас в 017 для Меги и Дуе код кардинально переделан в правильную сторону )). И кстати очень полезно посмотреть эволюцию развития кода от 010 до 017 версии. Это к вопросу о программировании. Хотя бы просто посмотреть что кардинально изменилось в 017 версии.

Я это прошел с 013 версии. И слежу за всеми сообщениями в теме. Так что мне проще в этом плане.

Re: Arduino Mega Server

Добавлено: Пн сен 24, 2018 6:15 am
nick7zmail
Alex писал(а): Сб сен 22, 2018 7:02 am
Друзья! После того, как на главной странице сайта исчез список последних сообщений на форуме, я стал пропускать ваши вопросы потому, что просто не вижу их. Поэтому ответы либо задерживаются, либо вы их не получаете вовсе. Я уже поднимал этот вопрос, ещё раз хочу обратить на это внимание: Сергей, верните список последних сообщений! (Тот список, который есть, слишком короткий и работает по неправильному алгоритму.)
Вроде тут есть https://majordomo.smartliving.ru/forum/ ... ifications

Re: Arduino Mega Server

Добавлено: Пн сен 24, 2018 6:55 am
Alex
Вроде тут есть https://majordomo.smartliving.ru/forum/ ... ifications
Что-то это совсем не то. Я пользуюсь вот этой страницей

https://connect.smartliving.ru/forum.html

Но у неё два недостатка по сравнению с прошлой версией:

1. список слишком короткий и за ним нужно постоянно следить. В реальной жизни 50% постов пролетают незамеченными.

2. прошлая версия списка группировала однотипные сообщения в одно, вследствие чего информационная ёмкость списка была в 2-3 раза больше при том же количестве строк.

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

Re: Arduino Mega Server

Добавлено: Вт сен 25, 2018 6:19 am
nick7zmail
Да вроде как раз то...список всех последних сообщений по темам с момента последнего присутствия. Правда мусора много в виде благодарностей, цитат и т.п. Фильтр бы не помешал. А так вроде с тегом "Ответ" как раз то самое, сильно расширенный функционал списка сообщений))

Если честно того списка сообщений тоже по началу сильно не хватало. Ща вроде привык этой штукой уже пользоваться. Там надо просто 1 раз "отметить всё как прочитанное", а потом уже следить за динамикой (если что - доступ к этой странице по колокольчику в верхней панели. Там же кол-во новых уведомлений).

Re: Arduino Mega Server

Добавлено: Вт сен 25, 2018 6:52 am
Alex
Ща вроде привык этой штукой уже пользоваться.
Вот зачем нам лишние трудности и зачем нам к чему-то привыкать? Было прекрасное решение — зачем нужно было его убирать? Кому оно мешало7

А в предлагаемом варианте кроме неудобства и непривычности есть ещё один недостаток — необходимость входить на форум. Мне удобнее видеть список сообщений без входа на форум.

Ещё раз: зачем нужно было ломать то, что прекрасно работало? И почему нужно сохранять гробовое молчание в ответ на вопли юзеров (я тут не единственный кто просил вернуть список)?

Re: Arduino Mega Server

Добавлено: Вт сен 25, 2018 7:22 am
serghei
Не единственный. И почему надо где то голосовать за то , чтобы нам вылечили форум УМНОГО дома?
Мне как бы достаточно подписаться на тему и на почту приходят уведомления о новых сообщениях.
Но это уже злой OffTop.