Страница 1 из 1

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

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

Направите в нужную сторону? ;)

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

Добавлено: Пн сен 18, 2017 10:54 am
ledmax
Вроде что то наколхозил , правда есть подозрение, что это не самое элегантное решение :)

Хорошая статья по поводу 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");//реле выключили
}

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

Добавлено: Ср сен 27, 2017 7:14 pm
Gelezako
если я правильно понял, то основной вашей задачей было перегрузить ардуино если по какой-то причине она зависла. Но что если проблема будет с сетью (повис роутер, пропал инет, повредился кабель, шумы в эфире если это вайфай), а сама ардуино на самом деле исправно работает и её ребуты ни к чему не приведут. Думаю что вам не нужно слать данные в Мажордомо для этого. Лучше такую проблему решать на месте. Ардуино можно програмно перегружать. Я тоже как раз сегодня решал эту проблему, вот написал мини статью с примером исходного кода http://blog.gelezako.com/?p=69 как это сделать.