[Модуль] MegaD (megad)
Модератор: immortal
- Kod.Begemot
- Сообщения: 358
- Зарегистрирован: Чт июн 20, 2013 5:53 pm
- Благодарил (а): 32 раза
- Поблагодарили: 42 раза
-
- Сообщения: 5
- Зарегистрирован: Вс авг 30, 2015 8:46 pm
- Благодарил (а): 5 раз
- Поблагодарили: 0
Re: Модуль "MegaD"
Пробую использовать модуль от уважаемого Bagir с Мега-2561.
Заметил пока две проблемы.
1. В методе incomingMessage есть ошибка при анализе "all":
вот эту строчку $i = $i + 1; надо перенести в конец цикла, т.к. иначе порты считываются с неверными номерами. Значение нулевого порта заносится как порт 1, и т.п.
2. в методе setOutput нет проверки, что Мега вернула в ответ "Done". Это вызывает проблемы (например, если Мега отключилась или упал канал связи от сервера до Меги, и т.п.).
Как вариант можно анализировать ответ Меги, но не очень пока понимаю, как результат анализа передать в вышестоящий код, который вызывал метод setOutput. Подскажите, пожалуйста, есть ли возможность в Majordomo написать свою функцию с возвращаемым значением (например, 0 если выполнено успешно, 1 в случае ошибки) ?
Заметил пока две проблемы.
1. В методе incomingMessage есть ошибка при анализе "all":
Код: Выделить всё
if (isset($params['all'])) {
$ps = explode(";", $params['all']);
$i=0;
foreach($ps as $dt) {
$i = $i + 1;
2. в методе setOutput нет проверки, что Мега вернула в ответ "Done". Это вызывает проблемы (например, если Мега отключилась или упал канал связи от сервера до Меги, и т.п.).
Как вариант можно анализировать ответ Меги, но не очень пока понимаю, как результат анализа передать в вышестоящий код, который вызывал метод setOutput. Подскажите, пожалуйста, есть ли возможность в Majordomo написать свою функцию с возвращаемым значением (например, 0 если выполнено успешно, 1 в случае ошибки) ?
-
- Сообщения: 5
- Зарегистрирован: Вс авг 30, 2015 8:46 pm
- Благодарил (а): 5 раз
- Поблагодарили: 0
Re: Модуль "MegaD"
я сделал так в incomingMessage oт уважаемого Bagir:Kod.Begemot писал(а):Обработку данных о старте меги (st=1) никто к модулю не прикручивал?
Код: Выделить всё
// обработка st=1 (рестарт Меги)
$dt=$params['st'];
if (isset($dt)) {
say('Мега '.$ot.' перезапустилась');
if ($reclog) { $log->trace('Мега '.$ot.' перезапустилась, запрашиваем состояние портов'); }
$this->callMethod('getData', array('port'=>'all'));
return;
}
У меня Мега-2561 сразу после рестарта в ответ на запрос всех портов почему-то всегда возвращает значение датчиков температуры DS18B20 = 0 градусов. При следующих запросах либо запросе конкретного порта все ок.
Пришлось добавить соответствующую проверку.
-
- Сообщения: 109
- Зарегистрирован: Сб июл 11, 2015 2:54 am
- Откуда: Московская обл,город Ногинск
- Благодарил (а): 27 раз
- Поблагодарили: 6 раз
Re: Модуль "MegaD"
Да,Да.Даже без метода от Bagir вылетает ошибка с неверным считыванием порта.Сергей,поправьте ,пожалуйста.filippovsky писал(а):Пробую использовать модуль от уважаемого Bagir с Мега-2561.
Заметил пока две проблемы.
1. В методе incomingMessage есть ошибка при анализе "all":вот эту строчку $i = $i + 1; надо перенести в конец цикла, т.к. иначе порты считываются с неверными номерами. Значение нулевого порта заносится как порт 1, и т.п.Код: Выделить всё
if (isset($params['all'])) { $ps = explode(";", $params['all']); $i=0; foreach($ps as $dt) { $i = $i + 1;
- sergejey
- Site Admin
- Сообщения: 4286
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 76 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Модуль "MegaD"
А подскажите пожалуйста, что за ошибка? У меня нового модуля нет в наличии, не могу сам проверить.rtroyakov писал(а):Да,Да.Даже без метода от Bagir вылетает ошибка с неверным считыванием порта.Сергей,поправьте ,пожалуйста.filippovsky писал(а):Пробую использовать модуль от уважаемого Bagir с Мега-2561.
Заметил пока две проблемы.
...
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 109
- Зарегистрирован: Сб июл 11, 2015 2:54 am
- Откуда: Московская обл,город Ногинск
- Благодарил (а): 27 раз
- Поблагодарили: 6 раз
Re: Модуль "MegaD"
Вот у меня лично порт 0(IN) на первой гребёнке и порт 15(он же 0 на второй гребёнке, тоже IN ) отображаются и тот и другой после сканирования как порт OUTsergejey писал(а):А подскажите пожалуйста, что за ошибка? У меня нового модуля нет в наличии, не могу сам проверить.rtroyakov писал(а):Да,Да.Даже без метода от Bagir вылетает ошибка с неверным считыванием порта.Сергей,поправьте ,пожалуйста.filippovsky писал(а):Пробую использовать модуль от уважаемого Bagir с Мега-2561.
Заметил пока две проблемы.
...
P.S Описание и распиновка появилась на сайте ab-log.ru
-
- Сообщения: 1465
- Зарегистрирован: Вс янв 10, 2016 11:05 am
- Благодарил (а): 262 раза
- Поблагодарили: 455 раз
Re: Модуль "MegaD"
Сергей, с вами должен был связаться Андрей (разработчик Меги) с целью предоставления вам МегаД-2561 для проведения опытов над этой новой "железкой". Удалось договориться о получении "железяки"?
- sergejey
- Site Admin
- Сообщения: 4286
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 76 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Модуль "MegaD"
Да. Как только оборудование будет у меня, займусь тестированием и доработкой модуля.Chainik писал(а):Сергей, с вами должен был связаться Андрей (разработчик Меги) с целью предоставления вам МегаД-2561 для проведения опытов над этой новой "железкой". Удалось договориться о получении "железяки"?
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 1465
- Зарегистрирован: Вс янв 10, 2016 11:05 am
- Благодарил (а): 262 раза
- Поблагодарили: 455 раз
Re: Модуль "MegaD"
Спасибо! Хоть пока у меня и нет Меги-2561, стараюсь для общего блага.
- Рейтинг: 1.16%