Предостережение
Перед тем как выполнять действия, описание в этой статье, пожалуйста прочтите мнение редакции в конце.
Watchdog расшифровывается как сторожевой таймер. Основная его функция - перезапуск системы в определённых случаях, таких как: зависание системы, повышенная температура, пропадание связи и т.д. Бывает аппаратный, программный и программно-аппаратный.
Меня заинтересовала прежде всего такая функция, как перезапускать систему при отсутствии связи с роутером. Почему прежде всего именно эта функция?
У меня часто отключают свет в квартире, а при подаче питания вновь часто отваливается HomeBridge на микроконтроллере Raspberry Pi 3 (далее малинка). Лечится это перезагрузкой самой малинки. Причина до конца не выяснена, но думаю мой роутер запускается позже чем сама малинка. Проведя эксперимент с выключением роутера во время работы малинки, я убедился что HomeBridge перестает функционировать. Вы можете проверить сами и написать в комментариях как решили данную проблему. Может быть проблема могла решиться заданием статического IP на самой малинке, но я это не проверял.
На малинке установлен образ с Node 10 по статье нашего коллеги. Малинка подключена к роутеру с помощью кабеля и её IP зарезервирован как статический адрес на роутере.
Так вот для решения проблем с пропаданием питания, благодаря советам нашего сообщества, я решил установить Watchdog. Как готовое решение я взял статью, которая полностью соответствовала моим запросам.
Заходим на малинку по SSH и устанавливаем демон Watchdog командой:
sudo apt-get install watchdog
Далее делаем бэкап конфигурационного файла, если что-то пойдет не так и для отказа от работы Watchdog, если нет больше необходимости.
sudo cp /etc/watchdog.conf /etc/watchdog.conf.backup
Далееи редактируем файл конфигурации /etc/watchdog.conf
sudo nano /etc/watchdog.conf
В файле конфигурации необходимо раскомментировать ниже приведенные строки и задать Ваши параметры
# Watchdog ping: если не отвечает, то перезагрузка: ping= 192.168.0.1 # IP моего роутера interface= eth0 # используем wlan0 для Wi-Fi ping-count = 5 # ping 5 раз # Смена интервала по умолчанию с 1 секунды на 20: interval = 20 # проверка watchdog каждые 20 секунд
Далее перегружаемся
sudo reboot
Теперь при отсутствии пинга 5 раз каждые 20 секунд (через 100. секунд) малинка будет перегружаться. Конечно интервал и количество пингов можно изменить в зависимости от задач, а так же при необходимо сменить IP на внешний (8.8.8.8 для примера) для проверки работоспособности интернета (хотя зачем это в моем случае).
Ложка дёгтя
Надо помнить, что при потере связи с указанным IP адресом малинка будет постоянно перегружаться и если Вы этого не хотите, то надо вернуть старый файл конфигурации (мы его специально сохраняли). Делается это командой
sudo cp /etc/watchdog.conf.backup /etc/watchdog.conf
Далее перегружаемся
sudo reboot
Я тестировал работу Watchdog , описанную в статье, отключая роутер на интервал более заданного и малинка перегружалась. При отключении роутера на меньшее время HomeBridge всё равно не запускался, так что Watchdog оказался бесполезен для решения конкретно моей задачи. Возможно что Watchdog контроля связи будет особенно полезен для тех кто использует Wi-Fi подключение. Как это повлияет на работоспособность малинки при длительном отсутствии связи (умер роутер) я не знаю. Рекомендую иметь рабочий бэкап прежде чем что либо устанавливать.
Как я уже писал выше Watchdog может перегружать малинку и по другим событиям, но это уже другая, не мене интересная тема., которую я продолжу изучать. Для желающих разобраться ниже ссылки на инструкции по Watchdog.
Ссылки на статьи по Watchdog: инструкция по Watchdog, файл конфигурации watchdog.conf
Прикольная картинка взята здесь
Мнение редакции
Мы считаем действия, описанные в статье слишком кардинальными, и избыточными. Необходимо более детально разбираться в корне проблемы а не перезагружать всю систему при каждом чихе. В данной проблеме вполне возможно помог бы рестарт сервиса бриджа или переподключение сетевого интерфейса.
Надеюсь автор найдет истиную причину и устранит ее менее кардинальным способом, но все равно спасибо за статью!
Гитхаб для бриджа содержит болле 1000 сообщений, попробую выудить всю полезную информацию, но похоже моя проблема уже сдвинулась, если уже не решилась и конечно без перезагрузки малинки.
Установил бридж как сервис, при зависании сам перезапускает. А вообще, может тогда подумать о бесперебойнике раз такие жесткие проблемы с электричеством? Или как вариант управляемая розетка с внешнего сервера (евелинк или сяоми например). Но статья интересная 👍
О бесперебойнике я уже думаю. Еще его надо в в Кит завести.
Чаще всего бридж не виснет, причем через web ui можно управлять, отваливается та часть, которая отвечает за связь с программой Дом. Я уже накопил часть информации и думаю выложу в блог. На Гитхабе по бриджу более 1000 запросов, хочу найти всё по моей теме и предложить действия.
В случае применения малинки в качестве хоумбриджа для хоумкита можно в приложении дом сделать автоматизацию: каждый час менять состояние какого-либо виртуального переключателя. А в фибаро сделать сценарий : проверять включалось ли устройство каждый час? Если нет , то перезагружать малинку физически ( поставить доп реле например) . Единственное,придется в приложении дом делать кучу сценариев на каждый час, т.к. нет периодического повтора сценариев к сожалению
а при явном зависании системы
всегда будет возможность в ручном режиме перезагрузить бридж через приложение фибаро
sudo ifconfig wlan1 down
sleep 2
sudo ifconfig wlan1 up
(wifi у меня на внешнем адаптере). Подскажите, как добавить эти команды для перезапуска вайфай, вместо полной перезагрузки устройства?