Подключение контроллера MegaD-328
Модератор: immortal
Re: Подключение контроллера MegaD-328
Дело не в потреблении, у меня тоже сервер работает уже второй месяц, просто недавно накрылся блок питания, и тогда заметил такую канетель со статусом.
- Bagir
- Сообщения: 1615
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
Re: Подключение контроллера MegaD-328
Понятно, ну бывает, у меня когда то тоже помирал один китайский легкий ПБ. Второй фирменный дул очень теплым ветерком, но так и не отдал душу.
Конечно же в любом случае, всегда, правильнее будет при старте МД разово синхронизировать порты с Мегой. Только надо не полениться, написать этот код, и все протестить. Пример есть. Будет время, сделаю это и у себя на всех Мегах.
Конечно же в любом случае, всегда, правильнее будет при старте МД разово синхронизировать порты с Мегой. Только надо не полениться, написать этот код, и все протестить. Пример есть. Будет время, сделаю это и у себя на всех Мегах.
Re: Подключение контроллера MegaD-328
Bagir: подскажите, делал все по вашему методу но почему то у меня не отображается свойство aliveTimeOut в объекте MegaD, хотя все остальные свойства отображает.
Re: Подключение контроллера MegaD-328
aliveTimeOut - это параметр параметр указывающий время в течении которого считается что мега жива с последней проверки.
По умолчанию он 15*60, т.е. 15 минут.
Можно задать его любым в секундах.
По умолчанию он 15*60, т.е. 15 минут.
Можно задать его любым в секундах.
Majordomo (GitHub) на cubietruck + MegaD + 1-wire
CONNECT: http://connect.smartliving.ru/profile/311
CONNECT: http://connect.smartliving.ru/profile/311
Re: Подключение контроллера MegaD-328
я понимаю для чего это свойство, просто не могу понять куда и что прописывать.
Re: Подключение контроллера MegaD-328
Что то я не нашел такой путь, можно подробнее?Bagir писал(а):Если кто еще не в курсе, предлагаю освоить момент, как писать и добавлять свои функции в МД. Это очень просто. Открываем на диске путь где лежат файлы МД. Забираемся вот сюда ...\majordomo\lib\
- Kod.Begemot
- Сообщения: 358
- Зарегистрирован: Чт июн 20, 2013 5:53 pm
Re: Подключение контроллера MegaD-328
Не так давно Андрей добавил в прошивку МегаД возможность плавного включения и выключения диммируемого порта. Начиная с версии 3.28b6 можно ещё и управлять скоростью нарастания/спада через команды.
Вот такого вида команды: http://192.168.0.14/sec/?pt=12&pwm=100&cnt=10
Что, к примеру, означает изменить значение PWM канала 12 до 100 примерно за 10 секунд.
Я создал метод, реализующий эту возможность. Хотя это и очень просто (сделал на основе метода из набора предложенного Bagir), но всё-же выложу здесь.
Вот такого вида команды: 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
Увы у меня не на чем попробовать. Так то действительно можно новый метод добавить, чтобы не усложнять настройку имеющегося, раздувая его параметры. Без железки конечно трудно сказать. Еще не приобрел.
Тут баг нашелся. Температура упала до нуля, а в коде if ($dt)... И мега признается неживая. Я это исправил.
Изменения отправил в Connect. Комментарии позже.
Тут баг нашелся. Температура упала до нуля, а в коде if ($dt)... И мега признается неживая. Я это исправил.
Изменения отправил в Connect. Комментарии позже.
- Bagir
- Сообщения: 1615
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
Re: Подключение контроллера MegaD-328
Ищите просто ...\lib\ в каталоге с файлами МД. Папка majordomo действительно только у меня.Jager писал(а):Что то я не нашел такой путь, можно подробнее?Bagir писал(а):Если кто еще не в курсе, предлагаю освоить момент, как писать и добавлять свои функции в МД. Это очень просто. Открываем на диске путь где лежат файлы МД. Забираемся вот сюда ...\majordomo\lib\
- Bagir
- Сообщения: 1615
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
Баг с нулём
Мега признавалась неживая, если с ее термодатчика приходила температура 0 градусов. Баг исправлен. Смотрите Connect и поправьте у себя.
Ранее температура и свойство alive писались в методе getData в группе case 'tget': Сейчас там просто команда на запуск метода incomingMessage с передачей ему температуры (ответа Меги). А в общей части метода incomingMessage появился код, который записывает свойство температуры и признает Мегу живой. Этот же кусок кода сработает и при получении любого сообщения от Меги. Проверяется нулевая длинна текста ответа !strlen($dt)
Ранее температура и свойство alive писались в методе getData в группе case 'tget': Сейчас там просто команда на запуск метода incomingMessage с передачей ему температуры (ответа Меги).
Код: Выделить всё
$this->callMethod('incomingMessage', array('tget'=>$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);
}
}