Подключение контроллера MegaD-328
Модератор: immortal
- Bagir
- Сообщения: 1615
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 375 раз
Re: Подключение контроллера MegaD-328
угу, сейчас обновлю весь класс. Сразу с отловом разных комбинаций нажатий и проверкой на пустой ответ.
- Bagir
- Сообщения: 1615
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 375 раз
Re: Подключение контроллера MegaD-328
Обновил класс
http://smartliving.ru/forum/viewtopic.php?f=14&t=1832
Нашел один нехороший момент. Если мега отключена, то обращение к ней занимает продолжительное время. После неответа, она конечно будет признана неживой, но если таких Мег несколько, то их опрос будет долгий. Простой Пинг в этом отношении как то побыстрей сработает и не даст так сильно по тормозам. Возможно стоит подумать, и уйти на простой пинг, а температуру уже собирать только с живих.
Для обращения к Меге я делаю так:Может для опроса температуры как то изменить таймаут?
http://smartliving.ru/forum/viewtopic.php?f=14&t=1832
Нашел один нехороший момент. Если мега отключена, то обращение к ней занимает продолжительное время. После неответа, она конечно будет признана неживой, но если таких Мег несколько, то их опрос будет долгий. Простой Пинг в этом отношении как то побыстрей сработает и не даст так сильно по тормозам. Возможно стоит подумать, и уйти на простой пинг, а температуру уже собирать только с живих.
Для обращения к Меге я делаю так:
Код: Выделить всё
// Запрос данных у Меги
$dt = trim(file_get_contents($cmdUrl));
- Kod.Begemot
- Сообщения: 358
- Зарегистрирован: Чт июн 20, 2013 5:53 pm
- Благодарил (а): 32 раза
- Поблагодарили: 42 раза
Re: Подключение контроллера MegaD-328
Уважаемые, прощу прощения за, возможно, ламерский вопрос:
Вот класс обновился, загружаем обновление - и всё слетает, все настройки Мег, настройки реакции на входы и т.п. правильно?
ну понятно что можно куда-нибудь скопировать код, и потом его вставлять обратно.
А можно как нибудь сделать, чтобы класс как то универсально генерировал события в другом объекте, откуда их потом считывать и обрабатывать?

Вот класс обновился, загружаем обновление - и всё слетает, все настройки Мег, настройки реакции на входы и т.п. правильно?
ну понятно что можно куда-нибудь скопировать код, и потом его вставлять обратно.
А можно как нибудь сделать, чтобы класс как то универсально генерировал события в другом объекте, откуда их потом считывать и обрабатывать?

- Bagir
- Сообщения: 1615
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 375 раз
Re: Подключение контроллера MegaD-328
Да, это действительно неудобно. Но я с этим наверное мало что могу сделать. У меня пока есть только одна мысль. Можно просто взять код класса из моего CONNECT
На счет другого места, я думал об этом. Но Мега штука такая объемная, что вынести класс куда то отдельно очень сложно. Код получится такой, что в нем запутаюсь и я сам )) К тому же у всех Мега используется для совершенно разных задач. Кто то включает свет, кто то открывает ворота. Поэтому универсального кода написать не получится. Он возможен только для конкретных вариантов.
На счет другого места, я думал об этом. Но Мега штука такая объемная, что вынести класс куда то отдельно очень сложно. Код получится такой, что в нем запутаюсь и я сам )) К тому же у всех Мега используется для совершенно разных задач. Кто то включает свет, кто то открывает ворота. Поэтому универсального кода написать не получится. Он возможен только для конкретных вариантов.
-
- Сообщения: 291
- Зарегистрирован: Вт ноя 18, 2014 11:43 pm
- Откуда: Краснодарский край
- Благодарил (а): 32 раза
- Поблагодарили: 68 раз
Re: Подключение контроллера MegaD-328
Нашел вот такой вариант http://www.sql.ru/forum/actualutils.asp ... sg=7738295Bagir писал(а):Может для опроса температуры как то изменить таймаут?
Он нам подойдет?
- Рейтинг: 1.16%
Majordomo (GitHub) на cubietruck + MegaD + 1-wire
CONNECT: http://connect.smartliving.ru/profile/311
CONNECT: http://connect.smartliving.ru/profile/311
- Bagir
- Сообщения: 1615
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 375 раз
- Bagir
- Сообщения: 1615
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 375 раз
Re: Подключение контроллера MegaD-328
Так намного лучше. Добавил переменную $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));
- Kod.Begemot
- Сообщения: 358
- Зарегистрирован: Чт июн 20, 2013 5:53 pm
- Благодарил (а): 32 раза
- Поблагодарили: 42 раза
Re: Подключение контроллера MegaD-328
Попробовал последний класс, работает, понравилось!
Примеры понятные, всё четко как обычно, спасибо!
Вопрос: при приходе события от меги мы можем в IncomingMessage определить параемтры настройки порта? ну P, P&R, R?
Примеры понятные, всё четко как обычно, спасибо!
Вопрос: при приходе события от меги мы можем в IncomingMessage определить параемтры настройки порта? ну P, P&R, R?
-
- Сообщения: 291
- Зарегистрирован: Вт ноя 18, 2014 11:43 pm
- Откуда: Краснодарский край
- Благодарил (а): 32 раза
- Поблагодарили: 68 раз
Re: Подключение контроллера MegaD-328
Мы можем только узнать это нажатие или "отжатие" кнопки через параметр $ms.
Ну а дальше собрав статистику нажатий и "отжатий" можно сделать вывод.
Сами настройки порта только если отдельным обращением считывать.
Ну а дальше собрав статистику нажатий и "отжатий" можно сделать вывод.

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