Страница 9 из 41
Re: Подключение контроллера MegaD-328
Добавлено: Ср апр 23, 2014 6:03 pm
Jager
dimitrystd писал(а):У меня увы такой сценарий нигде не используется. Думаю для этого вам надо в megad.php передать в switchPressed значения параметра "m". Или может даже все параметры передать, не знаю[/i]
Установил вход в мегаД в P&R, в megad.php добавил $param (callMethod($light['TITLE'].'.switchPressed', $params);)
В метод toggleSwith объекта Livingroom добавил ваш код.
В результате пока держу кнопку свет в Livingroom горит, отпускают -гаснет. Что то делаю не так, что?
Re: Подключение контроллера MegaD-328
Добавлено: Чт апр 24, 2014 9:39 pm
Lewcom
Блин ребята. Ткните носом как обработать нажатие мех. кнопки.(механика работает, из веба мышкой тоже)
Желательно пример.
Re: Подключение контроллера MegaD-328
Добавлено: Пт апр 25, 2014 2:35 pm
vova5049
Lewcom писал(а):Блин ребята. Ткните носом как ...
Так
dmitrystd инструкцию же написал
http://smartliving.ru/forum/viewtopic.p ... t=30#p4155
Re: Подключение контроллера MegaD-328
Добавлено: Сб апр 26, 2014 2:53 pm
dimitrystd
Jager писал(а):В результате пока держу кнопку свет в Livingroom горит, отпускают -гаснет. Что то делаю не так, что?
Ну очевидно что при нажатии и отпускании не может всё время выполняться ветка
Код: Выделить всё
if (array_key_exists('m', $params)) {
ПОСТОЯННО СЮДА ЗАХОДИТЬ НЕ МОЖЕТ
}
else {
// Если кнопку нажали, то запоминаем время в милисек.
this->setProperty('beginningLongClick', microtime());
}
Значит когда добавляли код в Livingroom.switchPressed забыли поставить "Вызывать родительский метод = никогда". И оно сейчас использует старый код. А вот новый код может и не использует. Может оно никогда не находит параметр "m" и в холостую работает.
Попробуйте поставить логирование
Код: Выделить всё
$log = getLogger($this);
$log->debug('Зашли в метод switchPressed. Параметры '.print_r($params, true));
if (array_key_exists('m', $params)) {
$log->debug('Кнопку отпустили');
}
else {
$log->debug('Кнопку нажали');
}
Ну а дальше по обстоятельствам.
В конфиге логера (htdocs\lib\log4php\config.xml) не забудьте поменять
Код: Выделить всё
<root>
<level value="TRACE" />
<appender_ref ref="default" />
</root>
Re: Подключение контроллера MegaD-328
Добавлено: Сб апр 26, 2014 7:07 pm
Jager
dimitrystd писал(а):
Как выяснилось по невнимательности вписал код не туда, в toggleSwitch вместо switchPressed
После того как переделал получил это

Re: Подключение контроллера MegaD-328
Добавлено: Сб апр 26, 2014 9:13 pm
Lewcom
У кого получилось пожалуйста посмотрите направте.
Есть мега настроена так

Объект Light настроеный так

Провожу обработку нажатия мех.кнопки в .switchPressed

Нажимаю кнопку -сетевой индикатор моргнет а после ноль реакции...
хотя софтовая кнопка работает с таким кодом отлично
Помогите разобраться
Re: Подключение контроллера MegaD-328
Добавлено: Вс апр 27, 2014 10:46 am
Jager
Lewcom писал(а):
Помогите разобраться
Поместите megaD и сервер в одну подсеть для начала.
Re: Подключение контроллера MegaD-328
Добавлено: Вс апр 27, 2014 12:00 pm
vova5049
А еще, почему у вас на скрине с админкой у МДМ адрес 192,168,0,1,
а в настройках MegaD адрес сервера 10,10,0,1, у Вас между ними
роутер стоит ?
Re: Подключение контроллера MegaD-328
Добавлено: Вс апр 27, 2014 3:10 pm
Lewcom
Моя невнимательность с сетью в МегаД. Исправил на одну подсеть - заработало.
А для связи сервер - МегаД использую отдельную сетевую с отдельной подсетью.
Спасибо.
Re: Подключение контроллера MegaD-328
Добавлено: Вс апр 27, 2014 10:03 pm
Lewcom
По длинному нажатию
Jager писал(а):
Как выяснилось по невнимательности вписал код не туда, в toggleSwitch вместо switchPressed
После того как переделал получил это
в коде надо исправить $this .
у меня заработало с кодом
Код: Выделить всё
if (array_key_exists('m', $params)) {
// Отпустили кнопку
$interval = time() - $this->getProperty('beginningLongClick');
if ($interval > 2) // если держали больше чем 2сек
//callMethod('Outdoor_lamp.toggleSwitch');
say('длинное ['.$interval.']');
else
//callMethod('indoor_lamp.toggleSwitch');
say('короткое['.$interval.']');
}
else {
// Если кнопку нажали, то запоминаем время в сек.
$this->setProperty('beginningLongClick', time());
}