Пока что не очень разбираюсь в функционале majordomo, вынужден просить помощи в решении задачи..)
Идея следующая:
Majoromo каждые 30 сек получает сообщение по mqtt, например "Arduino online" , если сообщение не приходит, то majordomo дёргает gpio raspberry p3, к которому подключено реле и сбрасывает ардуину.
Направите в нужную сторону?
Watch dog для внешних устройств
Модератор: immortal
-
- Сообщения: 88
- Зарегистрирован: Сб окт 24, 2015 9:56 pm
- Благодарил (а): 11 раз
- Поблагодарили: 8 раз
Re: Watch dog для внешних устройств
Вроде что то наколхозил , правда есть подозрение, что это не самое элегантное решение
Хорошая статья по поводу raspberry gpio http://orangepi.su/content.php?p=112&c= ... %20i%20i2c
Реализация:
Объект MHCdata.Watch DOG - сюда ардуина каждые 30 сек записывает 1
Объект MHCdata.watchdog_status - статус реле, которая сбрасывает ардуину
При изменении MHCdata.Watch DOG вызывается метод watch dog control
watch dog control:
При изменение MHCdata.watchdog_status вызывается метод refresh
refresh:
Хорошая статья по поводу raspberry gpio http://orangepi.su/content.php?p=112&c= ... %20i%20i2c
Реализация:
Объект MHCdata.Watch DOG - сюда ардуина каждые 30 сек записывает 1
Объект MHCdata.watchdog_status - статус реле, которая сбрасывает ардуину
При изменении MHCdata.Watch DOG вызывается метод watch dog control
watch dog control:
Код: Выделить всё
if ($params['NEW_VALUE'] == 1) //если ардуина откликнулась
{
setTimeOut("timer_1m", "sg('MHCdata.Watch DOG', 0);", 60*1); //ждём 1м и сбрасываем на 0
}
else{
setTimeOut("timer_1m", "sg('MHCdata.Watchdog_status', 1);", 60*1); //если в течении 1 минуты ардуина не ответила, то ставим стасус 1
}
refresh:
Код: Выделить всё
$status=$this->getProperty("watchdog_status");
if ($status) {
exec ("gpio -1 write 3 0"); //реле включили
setTimeOut("timer_5s", "sg('MHCdata.watchdog_status', 0);", 5); //через 5 сек сбрасываем статус на 0 (вызывается метод, реле выключается
} else {
exec ("gpio -1 write 3 1");//реле выключили
}
- Gelezako
- Сообщения: 963
- Зарегистрирован: Чт июн 02, 2016 9:33 pm
- Благодарил (а): 205 раз
- Поблагодарили: 106 раз
- Контактная информация:
Re: Watch dog для внешних устройств
если я правильно понял, то основной вашей задачей было перегрузить ардуино если по какой-то причине она зависла. Но что если проблема будет с сетью (повис роутер, пропал инет, повредился кабель, шумы в эфире если это вайфай), а сама ардуино на самом деле исправно работает и её ребуты ни к чему не приведут. Думаю что вам не нужно слать данные в Мажордомо для этого. Лучше такую проблему решать на месте. Ардуино можно програмно перегружать. Я тоже как раз сегодня решал эту проблему, вот написал мини статью с примером исходного кода http://blog.gelezako.com/?p=69 как это сделать.
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E