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

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

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

Сообщение Bagir » Вт дек 09, 2014 12:54 pm

угу, сейчас обновлю весь класс. Сразу с отловом разных комбинаций нажатий и проверкой на пустой ответ.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

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

Сообщение Bagir » Вт дек 09, 2014 1:09 pm

Обновил класс
http://smartliving.ru/forum/viewtopic.php?f=14&t=1832

Нашел один нехороший момент. Если мега отключена, то обращение к ней занимает продолжительное время. После неответа, она конечно будет признана неживой, но если таких Мег несколько, то их опрос будет долгий. Простой Пинг в этом отношении как то побыстрей сработает и не даст так сильно по тормозам. Возможно стоит подумать, и уйти на простой пинг, а температуру уже собирать только с живих.
Для обращения к Меге я делаю так:

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

// Запрос данных у Меги
$dt = trim(file_get_contents($cmdUrl)); 
Может для опроса температуры как то изменить таймаут?
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Kod.Begemot
Сообщения: 358
Зарегистрирован: Чт июн 20, 2013 5:53 pm
Благодарил (а): 32 раза
Поблагодарили: 42 раза

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

Сообщение Kod.Begemot » Вт дек 09, 2014 1:33 pm

Уважаемые, прощу прощения за, возможно, ламерский вопрос: :oops:
Вот класс обновился, загружаем обновление - и всё слетает, все настройки Мег, настройки реакции на входы и т.п. правильно?
ну понятно что можно куда-нибудь скопировать код, и потом его вставлять обратно.
А можно как нибудь сделать, чтобы класс как то универсально генерировал события в другом объекте, откуда их потом считывать и обрабатывать? :?:
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

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

Сообщение Bagir » Вт дек 09, 2014 1:37 pm

Да, это действительно неудобно. Но я с этим наверное мало что могу сделать. У меня пока есть только одна мысль. Можно просто взять код класса из моего CONNECT

На счет другого места, я думал об этом. Но Мега штука такая объемная, что вынести класс куда то отдельно очень сложно. Код получится такой, что в нем запутаюсь и я сам )) К тому же у всех Мега используется для совершенно разных задач. Кто то включает свет, кто то открывает ворота. Поэтому универсального кода написать не получится. Он возможен только для конкретных вариантов.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
zelevova
Сообщения: 291
Зарегистрирован: Вт ноя 18, 2014 11:43 pm
Откуда: Краснодарский край
Благодарил (а): 32 раза
Поблагодарили: 68 раз

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

Сообщение zelevova » Вт дек 09, 2014 2:05 pm

Bagir писал(а):Может для опроса температуры как то изменить таймаут?
Нашел вот такой вариант http://www.sql.ru/forum/actualutils.asp ... sg=7738295
Он нам подойдет?
За это сообщение автора zelevova поблагодарил:
Bagir (Вт дек 09, 2014 2:54 pm)
Рейтинг: 1.16%
Majordomo (GitHub) на cubietruck + MegaD + 1-wire
CONNECT: http://connect.smartliving.ru/profile/311
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

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

Сообщение Bagir » Вт дек 09, 2014 2:24 pm

Интересно, я так не пробовал, сейчас испытаем.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

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

Сообщение Bagir » Вт дек 09, 2014 3:00 pm

Так намного лучше. Добавил переменную $ta, которая для разных видов запросов получает разные таймауты. Температуру больше 1 секунды ждать мы не будем. Отключил все Меги, запустил опрос. Выполнение немного притормозило, но даже не критично. Оставляю этот вариант.
Кусочек кода метода getDataПоказать

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

// Добавление дополнительных параметрами запроса в зависимости от его типа
switch ($params['port']) {
case 'all':  // Спросить сразу все
  $cmdUrl .= '?cmd=all';
  $ta = 5; //Таймаут ожидания меги
  break;
case 'tget': // Температура встроенного датчика
  $cmdUrl .= '?tget=1';
  $ta = 1;
  break;
default:     // Состояние указанного порта
  $cmdUrl .= sprintf("?pt=%d&cmd=get", intval($params['port']));
  $ta = 5;
}

$ctx = stream_context_create(array(
    'http' => array('timeout'=>$ta)
    )
);

// Запрос данных у Меги
$dt = trim(file_get_contents($cmdUrl, 0, $ctx));
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Kod.Begemot
Сообщения: 358
Зарегистрирован: Чт июн 20, 2013 5:53 pm
Благодарил (а): 32 раза
Поблагодарили: 42 раза

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

Сообщение Kod.Begemot » Ср дек 10, 2014 10:34 am

Попробовал последний класс, работает, понравилось!
Примеры понятные, всё четко как обычно, спасибо!
Вопрос: при приходе события от меги мы можем в IncomingMessage определить параемтры настройки порта? ну P, P&R, R?
zelevova
Сообщения: 291
Зарегистрирован: Вт ноя 18, 2014 11:43 pm
Откуда: Краснодарский край
Благодарил (а): 32 раза
Поблагодарили: 68 раз

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

Сообщение zelevova » Ср дек 10, 2014 2:10 pm

Мы можем только узнать это нажатие или "отжатие" кнопки через параметр $ms.
Ну а дальше собрав статистику нажатий и "отжатий" можно сделать вывод. :)
Сами настройки порта только если отдельным обращением считывать.
Majordomo (GitHub) на cubietruck + MegaD + 1-wire
CONNECT: http://connect.smartliving.ru/profile/311
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

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

Сообщение Bagir » Ср дек 10, 2014 2:25 pm

Да, по другому не узнать. Можно только написать отдельный запрос на получение настроек порта. Но я не сталкивался с такой необходимостью. Обычно один раз настроил Мегу и забыл. А в коде оставляю комментарий, чтобы не забыть как настроен порт.
Будут идеи, пишите! Будем развивать класс дальше. Скоро выложу вариант отлова разных нажатий для режима P. Только конечно без долгого нажатия. Его не отловить.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Ответить