Подключение контроллера MegaD-328
Модератор: immortal
-
- Сообщения: 96
- Зарегистрирован: Ср авг 27, 2014 6:14 am
- Благодарил (а): 36 раз
- Поблагодарили: 0
Re: Подключение контроллера MegaD-328
Дело не в потреблении, у меня тоже сервер работает уже второй месяц, просто недавно накрылся блок питания, и тогда заметил такую канетель со статусом.
- Bagir
- Сообщения: 1615
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 375 раз
Re: Подключение контроллера MegaD-328
Понятно, ну бывает, у меня когда то тоже помирал один китайский легкий ПБ. Второй фирменный дул очень теплым ветерком, но так и не отдал душу.
Конечно же в любом случае, всегда, правильнее будет при старте МД разово синхронизировать порты с Мегой. Только надо не полениться, написать этот код, и все протестить. Пример есть. Будет время, сделаю это и у себя на всех Мегах.
Конечно же в любом случае, всегда, правильнее будет при старте МД разово синхронизировать порты с Мегой. Только надо не полениться, написать этот код, и все протестить. Пример есть. Будет время, сделаю это и у себя на всех Мегах.
-
- Сообщения: 96
- Зарегистрирован: Ср авг 27, 2014 6:14 am
- Благодарил (а): 36 раз
- Поблагодарили: 0
Re: Подключение контроллера MegaD-328
Bagir: подскажите, делал все по вашему методу но почему то у меня не отображается свойство aliveTimeOut в объекте MegaD, хотя все остальные свойства отображает.
-
- Сообщения: 291
- Зарегистрирован: Вт ноя 18, 2014 11:43 pm
- Откуда: Краснодарский край
- Благодарил (а): 32 раза
- Поблагодарили: 68 раз
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
-
- Сообщения: 96
- Зарегистрирован: Ср авг 27, 2014 6:14 am
- Благодарил (а): 36 раз
- Поблагодарили: 0
Re: Подключение контроллера MegaD-328
я понимаю для чего это свойство, просто не могу понять куда и что прописывать.
-
- Сообщения: 708
- Зарегистрирован: Сб авг 18, 2012 10:21 am
- Благодарил (а): 26 раз
- Поблагодарили: 183 раза
Re: Подключение контроллера MegaD-328
Что то я не нашел такой путь, можно подробнее?Bagir писал(а):Если кто еще не в курсе, предлагаю освоить момент, как писать и добавлять свои функции в МД. Это очень просто. Открываем на диске путь где лежат файлы МД. Забираемся вот сюда ...\majordomo\lib\
- Kod.Begemot
- Сообщения: 358
- Зарегистрирован: Чт июн 20, 2013 5:53 pm
- Благодарил (а): 32 раза
- Поблагодарили: 42 раза
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
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 375 раз
Re: Подключение контроллера MegaD-328
Увы у меня не на чем попробовать. Так то действительно можно новый метод добавить, чтобы не усложнять настройку имеющегося, раздувая его параметры. Без железки конечно трудно сказать. Еще не приобрел.
Тут баг нашелся. Температура упала до нуля, а в коде if ($dt)... И мега признается неживая. Я это исправил.
Изменения отправил в Connect. Комментарии позже.
Тут баг нашелся. Температура упала до нуля, а в коде if ($dt)... И мега признается неживая. Я это исправил.
Изменения отправил в Connect. Комментарии позже.
- Bagir
- Сообщения: 1615
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 375 раз
Re: Подключение контроллера MegaD-328
Ищите просто ...\lib\ в каталоге с файлами МД. Папка majordomo действительно только у меня.Jager писал(а):Что то я не нашел такой путь, можно подробнее?Bagir писал(а):Если кто еще не в курсе, предлагаю освоить момент, как писать и добавлять свои функции в МД. Это очень просто. Открываем на диске путь где лежат файлы МД. Забираемся вот сюда ...\majordomo\lib\
- Bagir
- Сообщения: 1615
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 375 раз
Баг с нулём
Мега признавалась неживая, если с ее термодатчика приходила температура 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);
}
}
- Рейтинг: 1.16%