Страница 30 из 41
Re: Подключение контроллера MegaD-328
Добавлено: Ср янв 21, 2015 1:28 am
Dragon
Дело не в потреблении, у меня тоже сервер работает уже второй месяц, просто недавно накрылся блок питания, и тогда заметил такую канетель со статусом.
Re: Подключение контроллера MegaD-328
Добавлено: Ср янв 21, 2015 1:33 am
Bagir
Понятно, ну бывает, у меня когда то тоже помирал один китайский легкий ПБ. Второй фирменный дул очень теплым ветерком, но так и не отдал душу.
Конечно же в любом случае, всегда, правильнее будет при старте МД разово синхронизировать порты с Мегой. Только надо не полениться, написать этот код, и все протестить. Пример есть. Будет время, сделаю это и у себя на всех Мегах.
Re: Подключение контроллера MegaD-328
Добавлено: Ср янв 21, 2015 1:29 pm
Dragon
Bagir: подскажите, делал все по вашему методу но почему то у меня не отображается свойство aliveTimeOut в объекте MegaD, хотя все остальные свойства отображает.
Re: Подключение контроллера MegaD-328
Добавлено: Ср янв 21, 2015 1:46 pm
zelevova
aliveTimeOut - это параметр параметр указывающий время в течении которого считается что мега жива с последней проверки.
По умолчанию он 15*60, т.е. 15 минут.
Можно задать его любым в секундах.
Re: Подключение контроллера MegaD-328
Добавлено: Ср янв 21, 2015 4:38 pm
Dragon
я понимаю для чего это свойство, просто не могу понять куда и что прописывать.
Re: Подключение контроллера MegaD-328
Добавлено: Ср янв 21, 2015 6:33 pm
Jager
Bagir писал(а):Если кто еще не в курсе, предлагаю освоить момент, как писать и добавлять свои функции в МД. Это очень просто. Открываем на диске путь где лежат файлы МД. Забираемся вот сюда ...\majordomo\lib\
Что то я не нашел такой путь, можно подробнее?
Re: Подключение контроллера MegaD-328
Добавлено: Ср янв 21, 2015 6:42 pm
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);
Re: Подключение контроллера MegaD-328
Добавлено: Ср янв 21, 2015 8:23 pm
Bagir
Увы у меня не на чем попробовать. Так то действительно можно новый метод добавить, чтобы не усложнять настройку имеющегося, раздувая его параметры. Без железки конечно трудно сказать. Еще не приобрел.
Тут баг нашелся. Температура упала до нуля, а в коде if ($dt)... И мега признается неживая. Я это исправил.
Изменения отправил в Connect. Комментарии позже.
Re: Подключение контроллера MegaD-328
Добавлено: Ср янв 21, 2015 8:46 pm
Bagir
Jager писал(а):Bagir писал(а):Если кто еще не в курсе, предлагаю освоить момент, как писать и добавлять свои функции в МД. Это очень просто. Открываем на диске путь где лежат файлы МД. Забираемся вот сюда ...\majordomo\lib\
Что то я не нашел такой путь, можно подробнее?
Ищите просто ...\lib\ в каталоге с файлами МД. Папка majordomo действительно только у меня.
Баг с нулём
Добавлено: Чт янв 22, 2015 11:04 am
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);
}
}