Как сделать регулярный перезапуск потоков nodered?

У меня на wb7 под nodered настроены скрипты с использованием нод работы с телеграм ботом.
Периодически (раз в 3 месяца) wb перестает отвечать на команды из тг бота и отправлять туда что либо. Лечится перезапуском потоков из интерфейса nodered.
Можно ли как-то настроить watchdog, который будет отслеживать зависание ноды телеграмм и перезапускать ее? Или по расписанию перезапускать все потоки оптом.
Как это сделать в nodered?
Спасибо

1 лайк

Добрый день.
К сожалению, плохо знаком с Node-RED.

Перестает отвечать контроллер или Node-RED?

По мне, так лучше определить и исправить причину данной проблемы.
Выявлены ли какие-либо проблемы на стороне контроллера?

Причина - потери сетевых пакетов. После потери бот зависает и помогает только перезагрузка:
systemctl restart nodered
Такая же проблема.

В моем случае использую: node-red-contrib-telegrambot
Скорее всего автор ноды не отлавливает данное исключение и программа зависает.
Как вариант реализовать бот через правила, ничего сложного в этом нет. Вот пример.

Как костыль, можно добавить задачу в cron по перезапуску.
пишем в консоли: crontab -e
добавляем строчку:
0 */2 * * * systemctl restart nodered
В данном случае я указал выполнение скрипта каждые два часа, если нужно делать это с другой периодичностью, замените, для справки можно воспользоваться онлайн калькулятором Crontab.guru - The cron schedule expression editor

С контроллером все ОК, зависает именно node-red-contrib-telegrambot.
Надо обновить ноду, может автор устранил уже.
Жаль, что нельзя отследить момент, когда бот перестает быть доступным для контроллера:(

Сейчас появилась возможность ловить ошибки ноды Sender, надо попробовать.

Если получится, то хотелось бы перезапустить node-red из самого node-red.
Это возможно?

Это точно возможно. Можно использовать узел “exec” и туда указать уже любую команду, в том числе systemctl restart nodered

Но этот вопрос, к сожалению, не по теме данного портала.

1 лайк

А, собственно, зачем?
Тащить непонятные сторонние модули, монструозный NR - для бота?
Не проще использовать Движок правил wb-rules — Wiren Board

Как раз проще использовать NR: взял из примера конструкцию, поменял пару строк кода и работает.
Рациональнее использовать правила.
Но когда с этой задачей встречаешься раз в год-два, то в голове, от изучения этого механизма, ничего не остается и нужно вникать по новой. :man_shrugging:

Спойлер

Так и люди, кто всю жизнь программировал контроллеры на fbd ужасаются коду и просят вас добавить какой нибудь codesys. Его актуальность не в том, что так нагляднее или проще, а потому что так умеют.
Недавно рассчитывал шкаф автоматики на три приточно вытяжные системы, ваше железо вышло в 2 раза дешевле, чем ОВЕН, но заказчик испугался, что здесь нужно конфигурировать контроллер через веб, возможно залазить в linux.
В итоге они закупили контроллеры, которые программируются через beremiz, где модули расширения прописываются вручную через modbus, потому что “ну тут же все просто и очевидно”. А там на самом деле обычная raspberry в пластиковом корпусе, но по цене в восемь раз выше самого одноплатника.
Возможно эту проблему решали бы различные дистрибутивы: захотел заказал контроллер для программирования из под fbd, тебе уже пришел с настроенным беремизом.
Чем популярен segnetics? У них есть конструкторы программ, переплатил за контроллер, нажал пару кнопок и у тебя готов исходник программы.
Это я к тому, что NR интуитивно проще и люди все равно изначально будут стараться идти по пути наименьшей энтропии.

2 лайка

Полностью согласен.
Я не программист, запоминать синтаксис какой-то среды программирования ради того чтобы раз в год что-то настроить нет смысла.
Node-red визуально понятен. Выбрал нужные ноды, соединил связями, поправил параметры и все работает. Особенно интеграция со сторонними системами - видеонаблюдение, автополив, умные колонки, разные экосистемы умных домов - есть готовые ноды, которые все это вяжут с WB.

А в чем его «монструозность»?

Так он ставится: Программирование контроллера Wiren Board с помощью CODESYS — Wiren Board

Да, похожий проект сейчас в процессе. Но тут интерес у разработчиков СКАДЫ - они заказывают брендированные контроллеры с предустановленным своим ПО - и будут их продавать.

Если удобно - то конечно, согласен. Но для того чтобы определить утечку (возможно она является причиной) нужно погружаться гораздо глубже чем со скриптами.

Большой, сложный. У NR под капотом, особенно при использовании сторонних закрытых компонентов - разобраться крайне сложно.