Страница 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());
}