Justo
29.Апрель.2025 08:27:36
1
wb-rules.service - MQTT Rule engine for Wiren Board
Loaded: loaded (/lib/systemd/system/wb-rules.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2025-04-29 10:35:46 MSK; 4min 57s ago
Main PID: 1849 (wb-rules)
Tasks: 19 (limit: 4790)
Memory: 41.4M
CPU: 2min 4.851s
CGroup: /system.slice/wb-rules.service
└─1849 /usr/bin/wb-rules -syslog -editdir /etc/wb-rules/ /usr/share/wb-rules-system/rules/ /etc/wb-rules/ /usr/share/wb-rules/
Apr 29 10:39:35 wirenboard-AHX6SEDM wb-rules[1849]: WARNING: [rule warning] 2-master_wc: Target topic ‘2-master_wc/ac_heating_boost’ not found in dev. Comm>
Apr 29 10:39:35 wirenboard-AHX6SEDM wb-rules[1849]: INFO: [rule info] 2-master_wc: Air initialization complete for this attempt.
Apr 29 10:39:35 wirenboard-AHX6SEDM wb-rules[1849]: WARNING: [rule warning] 2-master_wc: Some initial data for configured systems not ready. Retrying initi>
Apr 29 10:39:35 wirenboard-AHX6SEDM wb-rules[1849]: WARNING: [rule warning] 2-wc_1: Target topic ‘2-wc_1/floor_temp_display’ not found in dev. Command may >
Apr 29 10:39:48 wirenboard-AHX6SEDM wb-rules[1849]: INFO: reloading file: /etc/wb-rules/1-wc.js
Apr 29 10:39:57 wirenboard-AHX6SEDM wb-rules[1849]: ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0x128bbc0 >
Apr 29 10:40:07 wirenboard-AHX6SEDM wb-rules[1849]: ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0x167f7c0 >
Apr 29 10:40:17 wirenboard-AHX6SEDM wb-rules[1849]: ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0x12ed540 >
Apr 29 10:40:27 wirenboard-AHX6SEDM wb-rules[1849]: ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0x12ed680 >
Apr 29 10:40:37 wirenboard-AHX6SEDM wb-rules[1849]: ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0x12ed780 >
Justo
29.Апрель.2025 11:13:12
2
перезапуск wb-rules не спасает.
в чем может быть дело?
В продолжение телефонного разговора прошу показать скрипт, который вызывает эти ошибки.
Justo
29.Апрель.2025 13:59:33
5
на тестовой ветке тоже случилась такая штука
wb-rules.service - MQTT Rule engine for Wiren Board
Loaded: loaded (/lib/systemd/system/wb-rules.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2025-04-29 16:16:08 MSK; 42min ago
Main PID: 1860 (wb-rules)
Tasks: 22 (limit: 4790)
Memory: 35.2M
CPU: 11min 54.529s
CGroup: /system.slice/wb-rules.service
└─1860 /usr/bin/wb-rules -syslog -editdir /etc/wb-rules/ /usr/share/wb-rules-system/rules/ /etc/wb-rules/ /usr/share/wb-rules/
Apr 29 16:56:56 wirenboard-AHX6SEDM wb-rules[1860]: ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0xe33180 >
Apr 29 16:57:06 wirenboard-AHX6SEDM wb-rules[1860]: ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0xf5fc00 >
Apr 29 16:57:16 wirenboard-AHX6SEDM wb-rules[1860]: ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0xf5ff40 >
Apr 29 16:57:26 wirenboard-AHX6SEDM wb-rules[1860]: ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0xe08280 >
Apr 29 16:57:36 wirenboard-AHX6SEDM wb-rules[1860]: ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0x12fc180
Apr 29 16:57:46 wirenboard-AHX6SEDM wb-rules[1860]: ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0xe08800 >
Apr 29 16:57:56 wirenboard-AHX6SEDM wb-rules[1860]: ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0xe08940 >
Apr 29 16:58:06 wirenboard-AHX6SEDM wb-rules[1860]: ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0xe089c0 >
Apr 29 16:58:16 wirenboard-AHX6SEDM wb-rules[1860]: ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0xe08a40 >
Apr 29 16:58:26 wirenboard-AHX6SEDM wb-rules[1860]: ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0x12fc200
Justo
29.Апрель.2025 14:00:58
6
room management.js (74,4 КБ)
вот код
Здравствуйте.
К сожалению, формат js на портале невозможно скачать. Прошу либо изменить формат файла, либо прислать сам код прямо в сообщении.
Justo
30.Апрель.2025 08:26:23
8
Увидел несколько проблем в функции initializeThermostat
:
function initializeThermostat(attempt) {
attempt = attempt || 1;
var maxAttempts = 5;
if (attempt > maxAttempts) {
log.error(ROOM_ID + ": Failed to initialize floor thermostat after " + maxAttempts + " attempts. Essential topics might be missing or offline.");
return;
}
log.debug(ROOM_ID + ": Floor thermostat initialization attempt " + attempt + "...");
// Проверяем наличие топиков в dev
if (!(FLOOR_TEMP_SENSOR_TOPIC in dev) || !(FLOOR_TARGET_TOPIC in dev) {
var sensorVal = dev[FLOOR_TEMP_SENSOR_TOPIC];
var targetVal = dev[FLOOR_TARGET_TOPIC];
log.info(ROOM_ID + ": Initial values found - Floor Sensor: " + sensorVal + ", Floor Target: " + targetVal + ". Running initial thermostat check.");
// Запускаем правило термостата для установки начального состояния
var rule = getRule(ROOM_ID + "_floor_thermostat");
if (rule) {
rule.trigger(); // Используем trigger() для запуска правила
} else {
log.error(ROOM_ID + ": Rule " + ROOM_ID + "_floor_thermostat not found during initialization!");
}
} else {
var missing = [];
if (!(FLOOR_TEMP_SENSOR_TOPIC in dev)) missing.push("Sensor ("+FLOOR_TEMP_SENSOR_TOPIC+")");
if (!(FLOOR_TARGET_TOPIC in dev)) missing.push("Target ("+FLOOR_TARGET_TOPIC+")");
log.warn(ROOM_ID + ": Floor thermostat init attempt " + attempt + " failed. Topics not ready: " + missing.join(', ') + ". Retrying in 30 seconds.");
setTimeout(function () {
initializeThermostat(attempt + 1);
}, 30000); // Повтор через 30 сек
}
}
1-я проблема:
if (!(FLOOR_TEMP_SENSOR_TOPIC in dev) || !(FLOOR_TARGET_TOPIC in dev) {
не хватает закрывающей круглой скобки.
2-я проблема:
объект dev
в той же конструкции if
используется не правильно. Проверьте согласно документации .
Прошу поделиться результатом.
Justo
30.Апрель.2025 10:22:55
10
Андрей, извините. Не тот файл. Вот текущее состояние файла управления
room management.js.zip (13,3 КБ)
Из-за очень большого кода требуется больше времени для анализа…
Добрый день.
Код хорош. Ну и довольно велик.
Для того чтобы полноценно посмотреть - выполните, пожалуйста, подписку на debug топик сервиса (включив предварительно Debug wb-rules, конечно),
mosquitto_sub -v -t /wbrules/log/# |ts
Что-то выводится в момент появления таймаутов?
Да, в коде видел вот такое: setTimeout
, без явного удаления объекта таймера после его выполнения.
Justo
05.Май.2025 08:50:01
13
дебаг так включать?
sudo systemctl stop wb-rules
sudo WB_RULES_DEBUG=1 /usr/sbin/wb-rules -d
Justo:
дебаг так включать?
Проще всего прямо в веб-интерфейсе:
Justo
05.Май.2025 13:50:48
15
Что-то я у себя такого не нахожу
Это находится в разделе «Устройства»
Здравствуйте.
Удалось решить проблему с wb-rules?
Justo
31.Май.2025 05:56:54
18
Возможно потому что у меня стоит девелоперская ветка на обновлениях - больше пока что такая ситуация не проявлялась.
Наблюдаем
Хорошо, если снова возникнут проблемы - напишите!