Watch dog для внешних устройств

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Ответить
ledmax
Сообщения: 88
Зарегистрирован: Сб окт 24, 2015 9:56 pm
Благодарил (а): 11 раз
Поблагодарили: 8 раз

Watch dog для внешних устройств

Сообщение ledmax » Вс сен 17, 2017 4:58 pm

Пока что не очень разбираюсь в функционале majordomo, вынужден просить помощи в решении задачи..)
Идея следующая:
Majoromo каждые 30 сек получает сообщение по mqtt, например "Arduino online" , если сообщение не приходит, то majordomo дёргает gpio raspberry p3, к которому подключено реле и сбрасывает ардуину.

Направите в нужную сторону? ;)
ledmax
Сообщения: 88
Зарегистрирован: Сб окт 24, 2015 9:56 pm
Благодарил (а): 11 раз
Поблагодарили: 8 раз

Re: Watch dog для внешних устройств

Сообщение ledmax » Пн сен 18, 2017 10:54 am

Вроде что то наколхозил , правда есть подозрение, что это не самое элегантное решение :)

Хорошая статья по поводу 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
}
При изменение MHCdata.watchdog_status вызывается метод refresh

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 для внешних устройств

Сообщение Gelezako » Ср сен 27, 2017 7:14 pm

если я правильно понял, то основной вашей задачей было перегрузить ардуино если по какой-то причине она зависла. Но что если проблема будет с сетью (повис роутер, пропал инет, повредился кабель, шумы в эфире если это вайфай), а сама ардуино на самом деле исправно работает и её ребуты ни к чему не приведут. Думаю что вам не нужно слать данные в Мажордомо для этого. Лучше такую проблему решать на месте. Ардуино можно програмно перегружать. Я тоже как раз сегодня решал эту проблему, вот написал мини статью с примером исходного кода http://blog.gelezako.com/?p=69 как это сделать.
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
Ответить