Страница 33 из 41

Re: Подключение контроллера MegaD-328

Добавлено: Чт фев 05, 2015 11:32 am
Bagir
Сервер на WinXP. Определение ip всегда проходит нормально. С W7 сам лично пока не тестировал. А вот megad-cfg.php работает исключительно на W7. На XP я его так и не завел. Поэтому прошиваю Меги с ноутбука.
Сейчас попробовал включить на Меге at при превышении порога температуры. Действительно Мега шлет пакет без mdid
10.10.3.58 - - [05/Feb/2015:11:18:35 +0300] "GET /megad.php?at=16 HTTP/1.1" 200 -
И это явный косяк. Я просто ранее не использовал эту возможность Мег, т.к. сам опрашиваю их температуру. На сообщение без mdid у меня вот такая реакция
11:18:35 ERROR [page.megad]: MegaDevice has not transmitted mdid. Try to search on IP (at D:\Server\www\majordomo\megad.php:46)
При этом по ip находится объект Меги и дальше все работает штатно. Так что исключать код поиска Меги по ip из файла megad.php не стоит. Если все же на W7 есть проблема, то можно попробовать найти решение, которое будет работать одинаково хорошо на W7 и на XP.
По поводу запуска отдельно метода класса. Это невозможно. Можно вызвать только конкретный Объект.метод При этом вначале будет выполнен код его родительской части, а потом уже его собственный код.

Re: Подключение контроллера MegaD-328

Добавлено: Чт фев 05, 2015 12:06 pm
Victor_S
Как уже писал, Андрей поправил уже этот косяк.
Bagir, попробуйте в Меге явно задать свой шлюз по умолчанию и посмотрите реакцию на сообщение at без mdid.

Re: Подключение контроллера MegaD-328

Добавлено: Чт фев 05, 2015 12:12 pm
Bagir
Попробую вечерком, как приеду домой. Надо еще найти и почитать для чего вообще была сделана настройка шлюза в Мегах. Вроде бы раньше ее и не было.

Re: Подключение контроллера MegaD-328

Добавлено: Чт фев 05, 2015 12:16 pm
zelevova
Bagir писал(а):megad-cfg.php работает исключительно на W7. На XP я его так и не завел
Загрузчик 13-й вроде решил проблему с megad-cfg.php и XP. Нужно один раз програматором перешить загрузчик.

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

Re: Подключение контроллера MegaD-328

Добавлено: Чт фев 05, 2015 12:34 pm
Victor_S
zelevova писал(а):На работу в локальной сети это ни как не влияет, если шлюз не пытается сильно рулить внутри сети.
Только пару дней как получил и поставил в качестве шлюза такую штуку: http://www.hite-pro.ru/lte-%D0%B0%D0%BD ... %8B/hybrid
Там внутри закрыт ZyXEL Keenetic 4G II и модем HUAWEI Mobile.
Вроде все настроил, работает, но до конца еще с ним не разобрался...:)

Re: Подключение контроллера MegaD-328

Добавлено: Чт фев 05, 2015 1:15 pm
Bagir
zelevova писал(а):Настройка шлюза используется для обращения к меге напрямую из-за ната. на шлюзе прокидываем порт на мегу и она доступна снаружи. Без указанного шлюза эта связка не работает. На работу в локальной сети это ни как не влияет, если шлюз не пытается сильно рулить внутри сети.
Спасибо за инфу. Я так и предполагал. При работе без сервера кому то такая настройка будет очень полезна.

Re: Подключение контроллера MegaD-328

Добавлено: Пт фев 06, 2015 1:10 pm
Jager
Bagir писал(а):.
Вопрос, как подправить incomingMessage что бы при срабатывании входа получать не состояние порта а данные счетчика?
Подключил геркон ко входу, и хочу писать в базу количество срабатываний.

Re: Подключение контроллера MegaD-328

Добавлено: Пт фев 06, 2015 1:20 pm
Bagir
Jager писал(а):Вопрос, как подправить incomingMessage что бы при срабатывании входа получать не состояние порта а данные счетчика?
Вот этот абзац

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

/* Если мы сами спросили Мегу о чем то, запустив метод getData
   и указав номер интересующего нас порта.
   ВНИМАНИЕ! в группах case нужно изменить код на свой!
*/   
if (isset($params['iasked'])) {
  // Разделить статус и счетчик
  $dt = explode("/", $params['iasked']);
  // Заменить слова на цифры    
  if ($dt[0] == 'ON') { $dt[0] = 1; }
  if ($dt[0] == 'OFF') { $dt[0] = 0; }
  
  // Обрабатываем значения портов, которые мы могли бы сами спросить 
  switch ($pt) {
  case 14:
    // Сказать счетчик входа 1 и его статус
    // Не спрашивайте счетчики у выходов. Они есть только у входов 1-7.
    say('Я спросил значение входа 1 равно '.$dt[0].', счётчик '.$dt[1]);
    break;
  default:
    // Если порта нет в группах case, но мы все же спрашиваем его
    say('Я спросил статус порта '.$pt.', а что с ним делать пока не придумал.');
  }
  return; 
}

Re: Подключение контроллера MegaD-328

Добавлено: Пт фев 06, 2015 1:30 pm
Jager
Bagir писал(а):Если мы сами спросили Мегу о чем то, запустив метод getData
Это если мы сами спросили, а хочется что бы мега сама слала состояние счетчика при каждом изменении входа.

Re: Подключение контроллера MegaD-328

Добавлено: Пт фев 06, 2015 1:40 pm
Bagir
А присылает ли Мега счетчик при коммутации порта? По моему там только mdid port и m. Пришлите ответ Меги, я посмотрю. Сейчас под рукой просто нет.