# Wb-rules check failed, reload wb-rules

**URL:** <https://support.wirenboard.com/t/wb-rules-check-failed-reload-wb-rules/8311>\
**Category:** Rule Engine\
**Created:** [July 5, 2021, 8:56pm UTC](https://support.wirenboard.com/t/wb-rules-check-failed-reload-wb-rules/8311 "2021-07-05T20:56:56Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![cu6apum](https://avatars.discourse-cdn.com/v2/letter/c/74df32/32.png) [@cu6apum](https://support.wirenboard.com/u/cu6apum)\
**Post date:** [July 5, 2021, 8:56pm UTC](https://support.wirenboard.com/t/wb-rules-check-failed-reload-wb-rules/8311/1 "2021-07-05T20:56:56Z")

</div>

Версия 2.6.3.  
Второй раз встречаю такое. У меня идет управление узлом, критичным к шагу, на котором находится стейт-машина, и такие спорадические рестарты могут тупо его угробить.  
Скажите, ПОЖАЛУЙСТА, что именно не нравится данному “чеку” спорадически раз в пару-тройку суток?! И обязательно ли, черт подери, перегружать движок? Похоже, год назад вы проигнорировали мой совет выгнать из команды виндузятника и он по-прежнему подгаживает в малозаметных местах.

---

<div class="post-metadata">

**Author:** ![Explorerol](https://avatars.discourse-cdn.com/v2/letter/e/7ab992/32.png) [@Explorerol](https://support.wirenboard.com/u/Explorerol)\
**Post date:** [July 6, 2021, 5:55am UTC](https://support.wirenboard.com/t/wb-rules-check-failed-reload-wb-rules/8311/2 "2021-07-06T05:55:32Z")

</div>

Здравствуйте!

> Скажите, ПОЖАЛУЙСТА, что именно не нравится данному “чеку” спорадически раз в пару-тройку суток?!

В сервисе cron стоит задача раз в пять минут сравнивать время Uptime, которое отображается в веб-интерфейсе контроллера и которое обновляется движком правил, и время Uptime, которое было при предыдущем запуске cron. Установлена ли задача можно проверить командой crontab -e. Вывод команды с установленной задачей:

```auto
*/5 * * * * /usr/share/wb-daemon-watchdogs/check_wbrules.sh 2>&1 | logger -t wb-daemon-watchdogs

```

Задача 1 раз в пять минут вызывает на исполнение файл /usr/share/wb-daemon-watchdogs/check-wbrules.sh, где и происходит проверка времен и перезапуск движка правил.

Если эти времена совпадают, то делается вывод, что сервис wb-rules не работает и происходит его автоматический перезапуск.

> И обязательно ли, черт подери, перегружать движок?

Конечно, можно отключить эту задачу в демоне cron, но тогда при зависании движка wb-rules он уже не запуститься автоматически. То есть похоже на то, что движок у вас перестает работать раз в несколько суток и автоматически перезапускается.  
Есть ли какие-нибудь сообщения в логах об ошибках? Недавно в движке правил было сделано несколько исправлений, попробуйте его обновить до последнего из ветки testing (v 2.8.0).

---

<div class="post-metadata">

**Author:** ![cu6apum](https://avatars.discourse-cdn.com/v2/letter/c/74df32/32.png) [@cu6apum](https://support.wirenboard.com/u/cu6apum)\
**Post date:** [July 6, 2021, 8:54am UTC](https://support.wirenboard.com/t/wb-rules-check-failed-reload-wb-rules/8311/3 "2021-07-06T08:54:57Z")

</div>

Вы, коллеги, меня извините заранее, буду эмоционален, поскольку проблема для меня смыслообразующая. Не хочу никого обидеть или задеть. Думал, повторять это не надо. А надо.

1. КОНТРОЛЛЕР ДОЛЖЕН ВЕСТИ СЕБЯ ПРЕДСКАЗУЕМО. В противном случае в мануале первой строкой красным цветом должно быть написано: это ИГРУШКА и это не предназначено для УПРАВЛЕНИЯ устройствами.
2. Ребут НЕ ЛЕКАРСТВО, я это очень громко орал здесь год назад. Здесь не винда, ребутом ничего исправить не получится!!! Если демон/скрипт нестабилен, надо искать и корчевать ПРИЧИНУ. Сам линух превосходно работает десятилетиями без каких-либо вочдогов.
3. Вся подробная информация об осыпавшемся демоне или скрипте ОБЯЗАНА быть в логах. Что именно и как полетело. При возможности - еще и почему.
4. Тихонько передернуть демон, который занимается УПРАВЛЕНИЕМ - смерти подобно, это подход, ПРИНЦИПИАЛЬНО недопустимый для контроллера, который обязан спокойно молотить годами и десятилетиями. Такая практика ставит КРЕСТ на перспективах сколь-нибудь серьезного рыночного применения изделия. Вы понимаете, что, в отсутствие ЯВНЫХ упоминаний о подобных косяках в документации, кто-нибудь сможет открыть газ в котел, а запальником чиркнуть через час?!!  
Ребут - НЕШТАТНАЯ, АВАРИЙНАЯ, ЭКСТРЕННАЯ ситуация, о которой надо ВОПИТЬ во все колокола, а не оставлять строчку в логе, что, дескать, упс, время не совпало.

В общем, я жду исчерпывающей инфы на данную тему. И решаю дальше, сворачивать мне программу установки ваших контроллеров, или продолжать вычесывать баги.

---

<div class="post-metadata">

**Author:** ![cu6apum](https://avatars.discourse-cdn.com/v2/letter/c/74df32/32.png) [@cu6apum](https://support.wirenboard.com/u/cu6apum)\
**Post date:** [July 7, 2021, 2:06pm UTC](https://support.wirenboard.com/t/wb-rules-check-failed-reload-wb-rules/8311/4 "2021-07-07T14:06:01Z")

</div>

Наткнулся, похоже, на упомянутое вами “зависание” wb-rules. Вочдог выкорчевал, наблюдал несколько часов, “повезло”.  
Движок не висит, в топики кладет таймстемпы (у меня на сервере обработчик потери контроллера), в лог рапортует, но релейками не щелкает. После service restart - заработало.

Однако, очень сырой движок… Можно ли его попросить класть в логи инфу о собственном здоровье?

---

<div class="post-metadata">

**Author:** ![BrainRoot](https://avatars.discourse-cdn.com/v2/letter/b/c2a13f/32.png) [@BrainRoot](https://support.wirenboard.com/u/BrainRoot)\
**Post date:** [July 7, 2021, 2:31pm UTC](https://support.wirenboard.com/t/wb-rules-check-failed-reload-wb-rules/8311/5 "2021-07-07T14:31:43Z")

</div>

Да, вот это решение с контролем “аптайма” - оно историческое. Надо делать контроль стандартным способом - по файлику с пидом в /run и обрабатывать отсутствие процесса штатными средствами ОС.

---

<div class="post-metadata">

**Author:** ![BrainRoot](https://avatars.discourse-cdn.com/v2/letter/b/c2a13f/32.png) [@BrainRoot](https://support.wirenboard.com/u/BrainRoot)\
**Post date:** [July 7, 2021, 2:33pm UTC](https://support.wirenboard.com/t/wb-rules-check-failed-reload-wb-rules/8311/6 "2021-07-07T14:33:11Z")

</div>

> [@cu6apum](#):
>
> в лог рапортует, но релейками не щелкает.

Ага, то есть не пишет (и не читает) MQTT, получается, а сам по себе работает.  
А что за скрипт?

---

<div class="post-metadata">

**Author:** ![cu6apum](https://avatars.discourse-cdn.com/v2/letter/c/74df32/32.png) [@cu6apum](https://support.wirenboard.com/u/cu6apum)\
**Post date:** [July 7, 2021, 2:42pm UTC](https://support.wirenboard.com/t/wb-rules-check-failed-reload-wb-rules/8311/7 "2021-07-07T14:42:11Z")

</div>

> [@BrainRoot](#):
>
> А что за скрипт?

Водоснабжение дома, на минуточку. Там сотен пять строк на все файлы.

Раз уж вы таки решили мне ответить, пара доп. вопросов:

1. Влияют ли на wb-rules падения и подъемы сетевого интерфейса? У меня есть сильные подозрения, что ДА.
2. Если я перестартовываю wb-mqtt-serial, но не перестартовываю wb-rules, может ли быть такое, что второй не цепляется за первый? В таком случае вышеописанная ошибка понятна, в противном - нет.  
Вообще бы ОЧЕНЬ неплохо документировать зависимости! Например, у меня скрипты должны стартовать в определенном порядке - достаточно ли поименовать js файлы по алфавиту?

---

<div class="post-metadata">

**Author:** ![cu6apum](https://avatars.discourse-cdn.com/v2/letter/c/74df32/32.png) [@cu6apum](https://support.wirenboard.com/u/cu6apum)\
**Post date:** [July 7, 2021, 3:09pm UTC](https://support.wirenboard.com/t/wb-rules-check-failed-reload-wb-rules/8311/8 "2021-07-07T15:09:27Z")

</div>

> [@BrainRoot](#):
>
> Надо делать контроль стандартным способом - по файлику с пидом в /run

Ни в коем случае. Раззнакомлюсь.

Необходимо иметь несколько логлевелов, задаваемых в конфиге (none/err/warn/info/debug) и рассказывать пользователю, что стряслось.

---

<div class="post-metadata">

**Author:** ![poglazov](https://avatars.discourse-cdn.com/v2/letter/p/d26b3c/32.png) [@poglazov](https://support.wirenboard.com/u/poglazov)\
**Post date:** [July 7, 2021, 3:27pm UTC](https://support.wirenboard.com/t/wb-rules-check-failed-reload-wb-rules/8311/9 "2021-07-07T15:27:37Z")

</div>

Добрый день!

Очень извиняемся, что вам пришлось столкнуться с такими проблемами.

Если вы не возражаете, я бы предложил подключить к вашей проблеме нашего программиста, который занимается исправлениями в wb-rules в последнее время. Есть нюанс: он сейчас в отпуске, но смог бы подключиться по AnyDesk на этой неделе в день по договорённости.

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

Перед этим очень желательно сделать следующее:

1. Понять, на каком вы сейчас релизе, stable или testing: [Релизы ПО Wiren Board — Wiren Board](https://wirenboard.com/wiki/Software_Releases)
2. Обновить wb-rules на последнюю версию для вашего релиза.
3. Проверить, что проблема всё ещё воспроизводится.
4. По возможности найти способ гарантированно воспроизводить проблему.

---

<div class="post-metadata">

**Author:** ![cu6apum](https://avatars.discourse-cdn.com/v2/letter/c/74df32/32.png) [@cu6apum](https://support.wirenboard.com/u/cu6apum)\
**Post date:** [July 7, 2021, 3:41pm UTC](https://support.wirenboard.com/t/wb-rules-check-failed-reload-wb-rules/8311/10 "2021-07-07T15:41:20Z")

</div>

> [@poglazov](#):
>
> Очень извиняемся, что вам пришлось столкнуться с такими проблемами.

Да нормально все, лишь бы не было разных обидок. Вы делаете отличное железо! Мне пока за год с лишним не удалось убить ни один модуль (3тьфу). Это - показатель. Но с софтом у вас очень часто проскакивает индокитайское наплевательство - аааа, ребутнем, авось попустит.  
ТАК - НЕЛЬЗЯ, это может порушить “khu yam” вам весь бизнес. Проходили.  
Не попустит. Контроллер ОБЯЗАН быть надежным как топор. Прошу это впитать и никогда не упускать из виду.

1. Убирайте вочдоги по пидам. Вообще! Кому их надо, или кто прогать не умеет - сам поставит. Я оставил один вочдог - по железному зависанию - и даже он за год пока не выстрелил, хотя контроллер в одном шкафу с частотником и пускачом ставить приходилось.
2. 6.6.0D 409, wirenboard-AGPLM2T7 4.9.22-wb6 #2 SMP Tue Mar 9 09:47:37 UTC 2021 armv7l GNU/Linux, wb-rules 2.6.3.  
Апгрейд дистра не делал, ибо отойти от управления не получится надолго, узел в бою. Сейчас вот попробовал на тестовом приборе, а там, непечатно, снова сервис вочдога откопался и попер его ребутать по циклу…
3. Да, как накачаю резервуар.
4. 
5. Как??? )))) Если она спорадическая by nature. Лучше уже давайте логи начнем писать с wb-rules, иначе это переливание пустоты, и я лучше овна какого-нибудь туда воткну, чем жечь тонны времени впустую.

Вообще, иметь вменяемые логи для каждого демона - это одно из первых правил нормального прогера, не-се па?

---

<div class="post-metadata">

**Author:** ![cu6apum](https://avatars.discourse-cdn.com/v2/letter/c/74df32/32.png) [@cu6apum](https://support.wirenboard.com/u/cu6apum)\
**Post date:** [July 9, 2021, 10:31am UTC](https://support.wirenboard.com/t/wb-rules-check-failed-reload-wb-rules/8311/11 "2021-07-09T10:31:49Z")

</div>

> [@cu6apum](#):
>
> Если я перестартовываю wb-mqtt-serial, но не перестартовываю wb-rules, может ли быть такое, что второй не цепляется за первый? В таком случае вышеописанная ошибка понятна, в противном - нет.

Второй раз проблема, очень похоже, вызвана этой причиной.  
Просьба комментировать.

---

<div class="post-metadata">

**Author:** ![BrainRoot](https://avatars.discourse-cdn.com/v2/letter/b/c2a13f/32.png) [@BrainRoot](https://support.wirenboard.com/u/BrainRoot)\
**Post date:** [July 10, 2021, 6:33pm UTC](https://support.wirenboard.com/t/wb-rules-check-failed-reload-wb-rules/8311/12 "2021-07-10T18:33:43Z")

</div>

Вообще - как и wb-mqtt-serial так и wb-rules напрямую друг с другом **не взаимодействуют** , то есть никак. Все общение - через топики MQTT. Но вот при перезапуске serial, тот пересоздает топики своих устройств. Вот тут может быть что, при пересоздании значение какого-то, свежесозданного топика стало null (вообще нормальное поведение) перед тем как в него записалось считаное значение.  
То есть механизм работы serial:

- запустился, прочитал конфиг.
- создал топики устройств
- прочитал устройства - занес данные в топики, далее в цикле.

То есть, возможно, бага в обработке пропадания (пересоздания) топиков, попробую написать правило и поперезапускать serial. Или синтетически - создавать топики скриптом.

---

<div class="post-metadata">

**Author:** ![cu6apum](https://avatars.discourse-cdn.com/v2/letter/c/74df32/32.png) [@cu6apum](https://support.wirenboard.com/u/cu6apum)\
**Post date:** [July 10, 2021, 8:02pm UTC](https://support.wirenboard.com/t/wb-rules-check-failed-reload-wb-rules/8311/13 "2021-07-10T20:02:09Z")

</div>

Ну вот тут тонкое место для взаимных dependencies, а где тонко, там и рвется.  
Предлагаю в кратчайшие сроки сделать нормальные ЛОГИ для каждого демона (неужели действительно не сделано? Я, например, начинаю с этого) и я, поставив максимальный уровень подробности, начну вычесывать все эти нестыковки.  
И даже денег (пока) не попрошу. Потом набьюсь в долю. Пока же дело сделать нужно. ОЧЕНЬ всё сырое, други…

---

<div class="post-metadata">

**Author:** ![vugluskr](https://avatars.discourse-cdn.com/v2/letter/v/b2d939/32.png) [@vugluskr](https://support.wirenboard.com/u/vugluskr)\
**Post date:** [July 12, 2021, 8:40am UTC](https://support.wirenboard.com/t/wb-rules-check-failed-reload-wb-rules/8311/14 "2021-07-12T08:40:11Z")

</div>

> ОЧЕНЬ всё сырое, други…

Некоторые пользователи данных контроллеров (и я в том числе) давно “забили” на wb-rules и пишут основную часть кода (обработка данных с датчиков и управление исполнительными устройствами) на Python, Perl, С и даже на Shell. Получается на порядок надежней и предсказуемым, потому как сама платформа (Linux и его окружение) давно отлажены и на практике доказали свою надежность. Я лично wb-rules использую как часть WebUI для подготовки и вывода информации + быстрая автоматизация менее значимых процессов.

---

<div class="post-metadata">

**Author:** ![cu6apum](https://avatars.discourse-cdn.com/v2/letter/c/74df32/32.png) [@cu6apum](https://support.wirenboard.com/u/cu6apum)\
**Post date:** [July 12, 2021, 8:51am UTC](https://support.wirenboard.com/t/wb-rules-check-failed-reload-wb-rules/8311/15 "2021-07-12T08:51:33Z")

</div>

Я потихоньку ближусь к такому же решению…  
Но, согласитесь, идея-то была отличная, если б не подвела реализация. Так-то львиная доля задач спокойно решается банальной ардуинкой, - если нет цели собрать красивую и довольно могучую платформу.  
Будем надеяться, что платформа таки преодолеет статус первой (самой трудной) беты и продолжит свой путь к релизу.

---

<div class="post-metadata">

**Author:** ![cu6apum](https://avatars.discourse-cdn.com/v2/letter/c/74df32/32.png) [@cu6apum](https://support.wirenboard.com/u/cu6apum)\
**Post date:** [July 15, 2021, 8:48am UTC](https://support.wirenboard.com/t/wb-rules-check-failed-reload-wb-rules/8311/16 "2021-07-15T08:48:12Z")

</div>

Сегодняшней ночью wb-rules молча вывалился (вочдог я ранее убрал).  
Молча. Вывалился. На третьи сутки работы. В логах пусто.  
Вот така фигня, малята.

Пойду овна куплю на этот узел, фигли.
