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

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

Модератор: immortal

Dragon
Сообщения: 96
Зарегистрирован: Ср авг 27, 2014 6:14 am

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

Сообщение Dragon »

Дело не в потреблении, у меня тоже сервер работает уже второй месяц, просто недавно накрылся блок питания, и тогда заметил такую канетель со статусом.
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич

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

Сообщение Bagir »

Понятно, ну бывает, у меня когда то тоже помирал один китайский легкий ПБ. Второй фирменный дул очень теплым ветерком, но так и не отдал душу.
Конечно же в любом случае, всегда, правильнее будет при старте МД разово синхронизировать порты с Мегой. Только надо не полениться, написать этот код, и все протестить. Пример есть. Будет время, сделаю это и у себя на всех Мегах.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Dragon
Сообщения: 96
Зарегистрирован: Ср авг 27, 2014 6:14 am

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

Сообщение Dragon »

Bagir: подскажите, делал все по вашему методу но почему то у меня не отображается свойство aliveTimeOut в объекте MegaD, хотя все остальные свойства отображает.
zelevova
Сообщения: 291
Зарегистрирован: Вт ноя 18, 2014 11:43 pm
Откуда: Краснодарский край

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

Сообщение zelevova »

aliveTimeOut - это параметр параметр указывающий время в течении которого считается что мега жива с последней проверки.
По умолчанию он 15*60, т.е. 15 минут.
Можно задать его любым в секундах.
Majordomo (GitHub) на cubietruck + MegaD + 1-wire
CONNECT: http://connect.smartliving.ru/profile/311
Dragon
Сообщения: 96
Зарегистрирован: Ср авг 27, 2014 6:14 am

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

Сообщение Dragon »

я понимаю для чего это свойство, просто не могу понять куда и что прописывать.
Jager
Сообщения: 708
Зарегистрирован: Сб авг 18, 2012 10:21 am

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

Сообщение Jager »

Bagir писал(а):Если кто еще не в курсе, предлагаю освоить момент, как писать и добавлять свои функции в МД. Это очень просто. Открываем на диске путь где лежат файлы МД. Забираемся вот сюда ...\majordomo\lib\
Что то я не нашел такой путь, можно подробнее?
Аватара пользователя
Kod.Begemot
Сообщения: 358
Зарегистрирован: Чт июн 20, 2013 5:53 pm

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

Сообщение Kod.Begemot »

Не так давно Андрей добавил в прошивку МегаД возможность плавного включения и выключения диммируемого порта. Начиная с версии 3.28b6 можно ещё и управлять скоростью нарастания/спада через команды.
Вот такого вида команды: http://192.168.0.14/sec/?pt=12&pwm=100&cnt=10
Что, к примеру, означает изменить значение PWM канала 12 до 100 примерно за 10 секунд.
Я создал метод, реализующий эту возможность. Хотя это и очень просто (сделал на основе метода из набора предложенного Bagir), но всё-же выложу здесь.

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

// Expects 'output', 'value' 'cnt' in $params
$cmdUrl = sprintf('http://%s/%s/?pt=%d&pwm=%d&cnt=%d', $this->getProperty('IpAddress'), 
  $this->getProperty('Password'), intval($params['port']),
  intval($params['value']), intval($params['cnt']));
$log = getLogger($this);
$log->trace('setOutput method: '.$cmdUrl);
getURL($cmdUrl, 0); 
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич

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

Сообщение Bagir »

Увы у меня не на чем попробовать. Так то действительно можно новый метод добавить, чтобы не усложнять настройку имеющегося, раздувая его параметры. Без железки конечно трудно сказать. Еще не приобрел.
Тут баг нашелся. Температура упала до нуля, а в коде if ($dt)... И мега признается неживая. Я это исправил.
Изменения отправил в Connect. Комментарии позже.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич

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

Сообщение Bagir »

Jager писал(а):
Bagir писал(а):Если кто еще не в курсе, предлагаю освоить момент, как писать и добавлять свои функции в МД. Это очень просто. Открываем на диске путь где лежат файлы МД. Забираемся вот сюда ...\majordomo\lib\
Что то я не нашел такой путь, можно подробнее?
Ищите просто ...\lib\ в каталоге с файлами МД. Папка majordomo действительно только у меня.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич

Баг с нулём

Сообщение Bagir »

Мега признавалась неживая, если с ее термодатчика приходила температура 0 градусов. Баг исправлен. Смотрите Connect и поправьте у себя.
Ранее температура и свойство alive писались в методе getData в группе case 'tget': Сейчас там просто команда на запуск метода incomingMessage с передачей ему температуры (ответа Меги).

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

$this->callMethod('incomingMessage', array('tget'=>$dt));
А в общей части метода incomingMessage появился код, который записывает свойство температуры и признает Мегу живой. Этот же кусок кода сработает и при получении любого сообщения от Меги. Проверяется нулевая длинна текста ответа !strlen($dt)

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

$reclog = 1; // Писать логи отладки ( 0-нет, 1-только крит, 2-все )

$ot=$this->object_title;      

// Открывает лог если нужно
if ($reclog) { $log = getLogger($this); }

$this->setProperty('alive',1);
$alive_timeout=(int)$this->getProperty('aliveTimeOut');
if (!$alive_timeout) { $alive_timeout=15*60; }
setTimeOut($ot."_alive","sg('".$ot.".alive',0);",$alive_timeout);


/* Получение сообщения с данными температуры внутреннего датчика */
$dt=$params['tget'];
if (isset($dt)) {
  // Проверить $dt на число и Записать в свойство объекта 
  if (is_numeric($dt)) {  
    $this->setProperty('temperature', $dt);
  } else {
    if ($reclog) { $log->error('Failed to get data internal temperature sensor for object '.$ot); }
  }
  // Сразу установить флаг "не живой" если в $dt ничего нет
  if (!strlen($dt)) {  
    $this->setProperty('alive',0);
  }  
} 
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Ответить