Ошибка старта wb-rules

Добрый день!
В чем может быть проблема?
Со второго раза запустилось.

Oct 20 09:50:18 IQ930000 daemon.info wb-rules[1755]: ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.SubscribeToken (&{{{{0 0} 0 0 0 0} 0x1445500 false <nil>} [] map[]})
Oct 20 09:50:28 IQ930000 daemon.info wb-rules[1755]: ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.SubscribeToken (&{{{{0 0} 0 0 0 0} 0x1445540 false <nil>} [] map[]})
Oct 20 09:50:38 IQ930000 daemon.info wb-rules[1755]: ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.SubscribeToken (&{{{{0 0} 0 0 0 0} 0x1445580 false <nil>} [] map[]})
Oct 20 09:50:48 IQ930000 daemon.info wb-rules[1755]: ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.SubscribeToken (&{{{{0 0} 0 0 0 0} 0x1445740 false <nil>} [/devices/+/meta/driver] map[]})

Судя по логу - ошибка обращения к брокеру. Надо посмотреть сколько mosquitto ест памяти, CPU. Недавно было похожее - когда он со стороннего сервера через мост “набрал” в свою базу больше 150МБ топиков и симптомы были похожие.

Я перед самим запуском чистил топики, может потер что лишнее… Но пока больше не возникало проблем. Понаблюдаю.

Apr 14 16:11:29 IQ930001 daemon.info wb-rules[1454]: INFO: [wbgo_mqtt] rules-IQ930001-1454: MQTT connection established
Apr 14 16:11:29 IQ930001 daemon.info wb-rules[1454]: WARNING: [wbgo_mqtt] MQTT connection lost
Apr 14 16:11:29 IQ930001 daemon.info wb-rules[1454]: INFO: [wbgo_mqtt] rules-IQ930001-1454: MQTT connection established
Apr 14 16:11:39 IQ930001 daemon.info wb-rules[1454]: ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.SubscribeToken (&{{{{0 0} 0 0 0 0} 0xc45500 false <nil>} [] map[]})
Apr 14 16:11:49 IQ930001 daemon.info wb-rules[1454]: ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.SubscribeToken (&{{{{0 0} 0 0 0 0} 0xc45540 false <nil>} [] map[]})
Apr 14 16:11:59 IQ930001 daemon.info wb-rules[1454]: ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.SubscribeToken (&{{{{0 0} 0 0 0 0} 0xc45580 false <nil>} [] map[]})
Apr 14 16:12:09 IQ930001 daemon.info wb-rules[1454]: ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.SubscribeToken (&{{{{0 0} 0 0 0 0} 0xc455c0 false <nil>} [/devices/+/meta/driver] map[]})

Опять такая же ошибка после перезагрузки контроллера. Состояние mosquitto в БД не сохраняем.

Вы тестировали работу wb-rules 2.6.3 с отключенным persistence?
Поидее не должно влиять, но как только мы выставили persistence false, wb-rules стал нестабильно запускаться при загрузке контроллера.

Добрый день. Вообще - да, проверяли конечно. Сейчас на тестовом контроллере прогоняю.

После перезапуска mosquitto:

Apr 16 10:52:14 IQ170000 daemon.info wb-rules[1813]: INFO: [wbgo_mqtt] rules-IQ170000-1813: MQTT connection established
Apr 16 10:52:14 IQ170000 daemon.info wb-rules[1813]: WARNING: [wbgo_mqtt] MQTT connection lost
Apr 16 10:52:14 IQ170000 daemon.info wb-rules[1813]: INFO: [wbgo_mqtt] rules-IQ170000-1813: MQTT connection established
Apr 16 10:52:24 IQ170000 daemon.info wb-rules[1813]: ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.SubscribeToken (&{{{{0 0} 0 0 0 0} 0x1845500 false <nil>} [] map[]})
Apr 16 10:52:34 IQ170000 daemon.info wb-rules[1813]: ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.SubscribeToken (&{{{{0 0} 0 0 0 0} 0x1845540 false <nil>} [] map[]})
Apr 16 10:52:44 IQ170000 daemon.info wb-rules[1813]: ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.SubscribeToken (&{{{{0 0} 0 0 0 0} 0x1845580 false <nil>} [] map[]})
Apr 16 10:52:54 IQ170000 daemon.info wb-rules[1813]: ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.SubscribeToken (&{{{{0 0} 0 0 0 0} 0x18455c0 false <nil>} [/devices/+/meta/driver] map[]})
Apr 16 11:00:02 IQ170000 user.notice wb-daemon-watchdogs: wb-rules check failed, reload wb-rules
Apr 16 11:00:34 IQ170000 daemon.info wb-rules[11817]: INFO: driver is created
Apr 16 11:00:34 IQ170000 daemon.info wb-rules[11817]: INFO: [wbgo_mqtt] rules-IQ170000-11817: MQTT connection established
Apr 16 11:00:34 IQ170000 daemon.info wb-rules[11817]: INFO: driver loop is started
Apr 16 11:00:34 IQ170000 daemon.info wb-rules[11817]: INFO: wait for driver to become ready
Apr 16 11:00:36 IQ170000 daemon.info wb-rules[11817]: INFO: driver is ready
Apr 16 11:00:36 IQ170000 daemon.info wb-rules[11817]: INFO: [rule info] using file /var/lib/wirenboard/wbrules-persistent.db for persistent DB
Apr 16 11:00:36 IQ170000 daemon.info wb-rules[11817]: INFO: [wbgo_mqtt] wb-rules-engine-IQ170000-11817: MQTT connection established
Apr 16 11:00:36 IQ170000 daemon.info wb-rules[11817]: INFO: [engine] Starting main loop
Apr 16 11:00:36 IQ170000 daemon.info wb-rules[11817]: INFO: the engine is ready

В конечном счете wb-rules запустился сам, но 7 минут старта как-то очень долго. И аналогично wb-rules иногда запускается при загрузке контроллера.

у меня тоже возникли вопросы почему после рестарта сервиса правил они запустились, но по факту вскоре перестали работать. Я правила не трогал при этом, а занимался настройкой GPIO.

Перед этим еще выполнил:

service wb-mqtt-serial restart // status ok
service wb-homa-gpio restart // status ok
service wb-rules restart // status ok

Фрагмент лог-файла:
messages.txt (27.9 КБ)

Здравствуйте! При остановке mosquitto сервис wb-rules тоже завершил работу. Затем по watchdog сервис был перезапущен. Ожидание срабатывания watchdog и заняло столько времени. Сейчас у wb-rules прописана зависимость от сервиса mosquitto, поэтому так происходит. После остановки mosquitto нужно запускать wb-rules вручную. Разработчики обещали это поправить.

Пока проблема не совсем понятна. Скажите, как воспроизвести?

Правила после рестарта не хотят работать ни в каком виде, в отладочном окне ничего не отображается, да и сценарии не работают, хотя кроны в логе были замечены. force-reload помог запустить правила. Вообщем все трудности я ловлю в новом релизе.

Еще через WEB UI не могу посмотреть правила. Ошибка: Error listing the scripts: MQTT RPC request timed out MqttTimeoutError

Все началось с того, что я обновил через ftp файлы сценариев и увидел, что setTimeout не сработал.

Перезагрузил контроллер - js-файлы видны, но если зайти и сохранить, то та же ошибка по таймауту.

force-reload тока спасает после перезагрузки. Что-то здесь не то

Понятно. А какие сейчас у файлов атрибуты?

-rw-r--r-- 1 root root   184 авг 27 01:04 alarms.conf
-rw-r--r-- 1 root root   516 сен 14 01:11 common.js
-rw-r--r-- 1 root root  1598 сен 14 00:11 custom-home-config.conf
-rw-r--r-- 1 root root 24561 сен 14 01:11 heating.js
-rw-r--r-- 1 root root 31166 сен 14 03:27 light.js
-rw-r--r-- 1 root root     0 сен 11 01:24 test.js
-rw-r--r-- 1 root root 32338 сен 14 01:11 vent.js
-rw-r--r-- 1 root root  3903 сен 14 00:32 water.js

А что wb-rules в свой лог пишет при запуске в процессе загрузки контроллера?

Это где смотреть?

journalctl -u wb-rules --since "10 min ago"

Ну и в журналах по времени запуска.

Обновил файл и запустил команду:

journalctl -u wb-rules --since "10 min ago"

root@wirenboard-ATNO6FBW:~# journalctl -u wb-rules --since "10 min ago"
-- Logs begin at Sun 2021-08-29 16:13:12 +03, end at Tue 2021-09-14 23:20:30 +03. --
сен 14 23:19:30 wirenboard-ATNO6FBW wb-rules[7888]: INFO: reloading file: /etc/wb-rules/light.js
сен 14 23:19:31 wirenboard-ATNO6FBW wb-rules[7888]: INFO: [rule info] Загрузка сценариев освещения wb-rules/light.js

Кусок лога ранее сутками:
wb-rules.log (100.5 КБ)

Через UI после сохранения правил опять зависание и ошибка в браузере Error saving the file: MQTT RPC request timed out MqttTimeoutError

Может это происходить из-за повторного переопределения defineRule с тем же дескриптором?
Когда я сохраняю изменения, то дескриптор cron-правила schedule_valve_control уже существует.

// создадим новое/переопределим cron-правило
var schedule_valve_control = createScheduleRule(hours);
runRule(schedule_valve_control);


// Создание правила управления приточными клапанами по времени
function createScheduleRule( hours ) {
	return defineRule('valve_schedule_rule', {
		when: cron("0 0 "+ hours.toString() + " * * *"),
		then: function () {
			var hour = data.time_now();
			checkValves(hour);
		}
	});
}