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

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

Модератор: immortal

Jager
Сообщения: 708
Зарегистрирован: Сб авг 18, 2012 10:21 am
Благодарил (а): 26 раз
Поблагодарили: 183 раза

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

Сообщение Jager » Ср апр 23, 2014 6:03 pm

dimitrystd писал(а):У меня увы такой сценарий нигде не используется. Думаю для этого вам надо в megad.php передать в switchPressed значения параметра "m". Или может даже все параметры передать, не знаю[/i]
Установил вход в мегаД в P&R, в megad.php добавил $param (callMethod($light['TITLE'].'.switchPressed', $params);)
В метод toggleSwith объекта Livingroom добавил ваш код.
В результате пока держу кнопку свет в Livingroom горит, отпускают -гаснет. Что то делаю не так, что?
Lewcom
Сообщения: 48
Зарегистрирован: Пн дек 30, 2013 6:37 pm
Благодарил (а): 3 раза
Поблагодарили: 1 раз

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

Сообщение Lewcom » Чт апр 24, 2014 9:39 pm

Блин ребята. Ткните носом как обработать нажатие мех. кнопки.(механика работает, из веба мышкой тоже)
Желательно пример.
vova5049
Сообщения: 64
Зарегистрирован: Пт фев 21, 2014 10:56 am
Откуда: Днепропетровск
Благодарил (а): 1 раз
Поблагодарили: 5 раз

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

Сообщение vova5049 » Пт апр 25, 2014 2:35 pm

Lewcom писал(а):Блин ребята. Ткните носом как ...
Так dmitrystd инструкцию же написал http://smartliving.ru/forum/viewtopic.p ... t=30#p4155
2*MegaD328, Система на Raspberry Pi 2
dimitrystd
Сообщения: 80
Зарегистрирован: Пн апр 01, 2013 10:20 pm
Откуда: Днепропетровск
Благодарил (а): 7 раз
Поблагодарили: 3 раза

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

Сообщение dimitrystd » Сб апр 26, 2014 2:53 pm

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>
Jager
Сообщения: 708
Зарегистрирован: Сб авг 18, 2012 10:21 am
Благодарил (а): 26 раз
Поблагодарили: 183 раза

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

Сообщение Jager » Сб апр 26, 2014 7:07 pm

dimitrystd писал(а):
Как выяснилось по невнимательности вписал код не туда, в toggleSwitch вместо switchPressed
После того как переделал получил это
Изображение
Lewcom
Сообщения: 48
Зарегистрирован: Пн дек 30, 2013 6:37 pm
Благодарил (а): 3 раза
Поблагодарили: 1 раз

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

Сообщение Lewcom » Сб апр 26, 2014 9:13 pm

У кого получилось пожалуйста посмотрите направте.
Есть мега настроена так
Изображение
Объект Light настроеный так
Изображение
Провожу обработку нажатия мех.кнопки в .switchPressed
Изображение
Нажимаю кнопку -сетевой индикатор моргнет а после ноль реакции...

хотя софтовая кнопка работает с таким кодом отлично
Изображение

Помогите разобраться
Jager
Сообщения: 708
Зарегистрирован: Сб авг 18, 2012 10:21 am
Благодарил (а): 26 раз
Поблагодарили: 183 раза

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

Сообщение Jager » Вс апр 27, 2014 10:46 am

Lewcom писал(а): Помогите разобраться
Поместите megaD и сервер в одну подсеть для начала.
vova5049
Сообщения: 64
Зарегистрирован: Пт фев 21, 2014 10:56 am
Откуда: Днепропетровск
Благодарил (а): 1 раз
Поблагодарили: 5 раз

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

Сообщение vova5049 » Вс апр 27, 2014 12:00 pm

А еще, почему у вас на скрине с админкой у МДМ адрес 192,168,0,1,
а в настройках MegaD адрес сервера 10,10,0,1, у Вас между ними
роутер стоит ?
2*MegaD328, Система на Raspberry Pi 2
Lewcom
Сообщения: 48
Зарегистрирован: Пн дек 30, 2013 6:37 pm
Благодарил (а): 3 раза
Поблагодарили: 1 раз

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

Сообщение Lewcom » Вс апр 27, 2014 3:10 pm

Моя невнимательность с сетью в МегаД. Исправил на одну подсеть - заработало.
А для связи сервер - МегаД использую отдельную сетевую с отдельной подсетью.
Спасибо.
Lewcom
Сообщения: 48
Зарегистрирован: Пн дек 30, 2013 6:37 pm
Благодарил (а): 3 раза
Поблагодарили: 1 раз

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

Сообщение Lewcom » Вс апр 27, 2014 10:03 pm

По длинному нажатию
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());
} 
Ответить