Не работают правила WARNING: [rule warning] DAC: no config file

Добрый день, что может быть не так? не работают правила.

Oct 31 13:33:58 wirenboard- wb-rules[35138]: INFO: driver loop is started

Oct 31 13:33:58 wirenboard- wb-rules[35138]: INFO: wait for driver to become ready

Oct 31 13:33:58 wirenboard- wb-rules[35138]: INFO: driver is ready

Oct 31 13:33:58 wirenboard- wb-rules[35138]: INFO: [rule info] using file /var/lib/wirenboard/wbrules-persistent.db for persistent DB

Oct 31 13:33:58 wirenboard- wb-rules[35138]: INFO: [wbgo_mqtt] wb-rules-engine-wirenboard–35138: MQTT connection established

Oct 31 13:33:58 wirenboard- wb-rules[35138]: INFO: [engine] Starting main loop

Oct 31 13:33:58 wirenboard- wb-rules[35138]: INFO: the engine is ready

Oct 31 13:33:58 wirenboard- wb-rules[35138]: INFO: [engine] Starting sync loop

Oct 31 13:33:58 wirenboard- wb-rules[35138]: WARNING: [rule warning] DAC: no config file

Oct 31 13:33:58 wirenboard- wb-rules[35138]: INFO: all rule files are loaded

Сделал уже самое простое:

defineRule(“activate_k7_and_k8”, {
whenChanged: “/devices/wb-mio-gpio_201:1/controls/IN7”,
then: function(newValue, devName, cellName) {
if (newValue === true) {
// Включаем K7
dev[“wb-mio-gpio_201:3”][“K7”] = true;

  // Выключаем K7 и включаем K8 через 3 секунды
  setTimeout(function() {
    dev["wb-mio-gpio_201:3"]["K7"] = false;
    dev["wb-mio-gpio_201:3"]["K8"] = true;
  }, 3000);
}

}
});

devices/wb-mio-gpio_201:1 - WBIO-DI-HVD-16
wb-mio-gpio_201:3 - WBIO-DO-R10A-8

/devices/wb-map3e_186/controls/Serial 16807725
/devices/wb-map3e_114/controls/Serial 16807653
/devices/wb-map3e_187/controls/Serial 16807726
/devices/wb-mio-gpio_201:1/controls/IN1 1
/devices/wb-mio-gpio_201:1/controls/IN2 0
/devices/wb-mio-gpio_201:1/controls/IN3 1
/devices/wb-mio-gpio_201:1/controls/IN4 1
/devices/wb-mio-gpio_201:1/controls/IN5 1
/devices/wb-mio-gpio_201:1/controls/IN6 1
/devices/wb-mio-gpio_201:1/controls/IN7 1
/devices/wb-mio-gpio_201:1/controls/IN8 0
/devices/wb-mio-gpio_201:1/controls/IN9 1
/devices/wb-mio-gpio_201:1/controls/IN10 1
/devices/wb-mio-gpio_201:1/controls/IN11 1
/devices/wb-mio-gpio_201:1/controls/IN12 0
/devices/wb-mio-gpio_201:1/controls/IN13 0
/devices/wb-mio-gpio_201:1/controls/IN14 0
/devices/wb-mio-gpio_201:1/controls/IN15 0
/devices/wb-mio-gpio_201:1/controls/IN16 0
/devices/wb-mio-gpio_201:2/controls/IN1 1
/devices/wb-mio-gpio_201:2/controls/IN2 1
/devices/wb-mio-gpio_201:2/controls/IN3 1
/devices/wb-mio-gpio_201:2/controls/IN4 1
/devices/wb-mio-gpio_201:2/controls/IN5 1
/devices/wb-mio-gpio_201:2/controls/IN6 1
/devices/wb-mio-gpio_201:2/controls/IN7 1
/devices/wb-mio-gpio_201:2/controls/IN8 1
/devices/wb-mio-gpio_201:2/controls/IN9 0
/devices/wb-mio-gpio_201:2/controls/IN10 0
/devices/wb-mio-gpio_201:2/controls/IN11 0
/devices/wb-mio-gpio_201:2/controls/IN12 0
/devices/wb-mio-gpio_201:2/controls/IN13 0
/devices/wb-mio-gpio_201:2/controls/IN14 0
/devices/wb-mio-gpio_201:2/controls/IN15 1
/devices/wb-mio-gpio_201:2/controls/IN16 1
/devices/wb-mio-gpio_201:3/controls/K1 0
/devices/wb-mio-gpio_201:3/controls/K2 0
/devices/wb-mio-gpio_201:3/controls/K3 0
/devices/wb-mio-gpio_201:3/controls/K4 0
/devices/wb-mio-gpio_201:3/controls/K5 0
/devices/wb-mio-gpio_201:3/controls/K6 0
/devices/wb-mio-gpio_201:3/controls/K7 0

Добрый день.
А как вы видите (отслеживаете) выполнение такого кода?

Ну и - для того чтобы убедится в работоспособности движка правил рекомендую попробовать вывести что-то в лог.

Добрый день!
Я еще упростил код, создал 2 правила:

  1. 2.js Оно просто реагирует на одно реле и велючает другое, это правило работает (ниже лог)
    201:3 WBIO-DO-R10A-8
defineRule({
whenChanged: "wb-mio-gpio_201:3/K7",
 then: function (newValue, devName, cellName) {
   dev["wb-mio-gpio_201:3/K8"] = newValue;
   log("test", newValue, devName, cellName);
}
});
  1. 3.js Второе правило должно видеть что вход 7 = 1/true и включать реле, и вот оно не работает, что я делаю не так?
defineRule({
  whenChanged: "wb-mio-gpio_201:1/IN7",
  then: function (newValue, devName, cellName) {
    if (newValue === true) {
      dev["wb-mio-gpio_201:3/K8"] = true;
      log("test", newValue, devName, cellName);
    }
  }
});

ноя 01 12:07:09 wirenboard- wb-rules[554996]: INFO: [engine] Stopping sync loop
ноя 01 12:07:09 wirenboard- systemd[1]: Stopping MQTT Rule engine for Wiren Board…
ноя 01 12:07:09 wirenboard- wb-rules[554996]: INFO: [engine] Stop main loop
ноя 01 12:07:09 wirenboard- systemd[1]: wb-rules.service: Succeeded.
ноя 01 12:07:09 wirenboard- systemd[1]: Stopped MQTT Rule engine for Wiren Board.
ноя 01 12:07:09 wirenboard- systemd[1]: wb-rules.service: Consumed 49.850s CPU time.
ноя 01 12:07:09 wirenboard- systemd[1]: Started MQTT Rule engine for Wiren Board.
ноя 01 12:07:09 wirenboard- wb-rules[560454]: 2025/11/01 12:07:09 ERROR: metrics: disable exposing PSI metrics because of failed init: open /sys/fs/cgroup/system.slice/wb-rules.service/cpu.pressure: no such file or directory
ноя 01 12:07:09 wirenboard- wb-rules[560454]: INFO: broker URL is default and mosquitto socket detected, trying to connect via it
ноя 01 12:07:09 wirenboard- wb-rules[560454]: INFO: driver is created
ноя 01 12:07:09 wirenboard- wb-rules[560454]: INFO: [wbgo_mqtt] rules-wirenboard–560454: MQTT connection established
ноя 01 12:07:09 wirenboard- wb-rules[560454]: INFO: driver loop is started
ноя 01 12:07:09 wirenboard- wb-rules[560454]: INFO: wait for driver to become ready
ноя 01 12:07:09 wirenboard- wb-rules[560454]: INFO: driver is ready
ноя 01 12:07:09 wirenboard- wb-rules[560454]: INFO: [rule info] using file /var/lib/wirenboard/wbrules-persistent.db for persistent DB
ноя 01 12:07:09 wirenboard- wb-rules[560454]: INFO: [wbgo_mqtt] wb-rules-engine-wirenboard–560454: MQTT connection established
ноя 01 12:07:09 wirenboard- wb-rules[560454]: INFO: [engine] Starting main loop
ноя 01 12:07:09 wirenboard- wb-rules[560454]: INFO: the engine is ready
ноя 01 12:07:09 wirenboard- wb-rules[560454]: INFO: [engine] Starting sync loop
ноя 01 12:07:10 wirenboard- wb-rules[560454]: WARNING: [rule warning] DAC: no config file
ноя 01 12:07:10 wirenboard- wb-rules[560454]: INFO: all rule files are loaded
ноя 01 12:08:13 wirenboard- wb-rules[560454]: INFO: LiveRemoveFile: /etc/wb-rules/3.js
ноя 01 12:08:13 wirenboard- wb-rules[560454]: INFO: reloading file: /etc/wb-rules/3.js.disabled
ноя 01 12:08:15 wirenboard- wb-rules[560454]: INFO: LiveRemoveFile: /etc/wb-rules/2.js.disabled
ноя 01 12:08:15 wirenboard- wb-rules[560454]: INFO: reloading file: /etc/wb-rules/2.js
ноя 01 12:08:21 wirenboard- wb-rules[560454]: INFO: [rule info] test true wb-mio-gpio_201:3 K7
ноя 01 12:08:34 wirenboard- wb-rules[560454]: INFO: [rule info] test false wb-mio-gpio_201:3 K7
ноя 01 12:08:40 wirenboard- wb-rules[560454]: INFO: [rule info] test true wb-mio-gpio_201:3 K7
ноя 01 12:08:43 wirenboard- wb-rules[560454]: INFO: [rule info] test false wb-mio-gpio_201:3 K7
ноя 01 12:11:52 wirenboard- wb-rules[560454]: INFO: LiveRemoveFile: /etc/wb-rules/2.js
ноя 01 12:11:52 wirenboard- wb-rules[560454]: INFO: reloading file: /etc/wb-rules/2.js.disabled
ноя 01 12:11:55 wirenboard- wb-rules[560454]: INFO: LiveRemoveFile: /etc/wb-rules/3.js.disabled
ноя 01 12:11:55 wirenboard- wb-rules[560454]: INFO: reloading file: /etc/wb-rules/3.js
ноя 01 12:12:00 wirenboard- wb-rules[560454]: INFO: [engine] Stopping sync loop
ноя 01 12:12:00 wirenboard- systemd[1]: Stopping MQTT Rule engine for Wiren Board…
ноя 01 12:12:00 wirenboard- wb-rules[560454]: INFO: [engine] Stop main loop
ноя 01 12:12:00 wirenboard- systemd[1]: wb-rules.service: Succeeded.
ноя 01 12:12:00 wirenboard- systemd[1]: Stopped MQTT Rule engine for Wiren Board.
ноя 01 12:12:00 wirenboard- systemd[1]: wb-rules.service: Consumed 28.675s CPU time.
ноя 01 12:12:00 wirenboard- systemd[1]: Started MQTT Rule engine for Wiren Board.
ноя 01 12:12:00 wirenboard- wb-rules[564055]: 2025/11/01 12:12:00 ERROR: metrics: disable exposing PSI metrics because of failed init: open /sys/fs/cgroup/system.slice/wb-rules.service/cpu.pressure: no such file or directory
ноя 01 12:12:00 wirenboard- wb-rules[564055]: INFO: broker URL is default and mosquitto socket detected, trying to connect via it
ноя 01 12:12:00 wirenboard- wb-rules[564055]: INFO: driver is created
ноя 01 12:12:00 wirenboard- wb-rules[564055]: INFO: [wbgo_mqtt] rules-wirenboard–564055: MQTT connection established
ноя 01 12:12:00 wirenboard- wb-rules[564055]: INFO: driver loop is started
ноя 01 12:12:00 wirenboard- wb-rules[564055]: INFO: wait for driver to become ready
ноя 01 12:12:00 wirenboard- wb-rules[564055]: INFO: driver is ready
ноя 01 12:12:00 wirenboard- wb-rules[564055]: INFO: [rule info] using file /var/lib/wirenboard/wbrules-persistent.db for persistent DB
ноя 01 12:12:00 wirenboard- wb-rules[564055]: INFO: [wbgo_mqtt] wb-rules-engine-wirenboard–564055: MQTT connection established
ноя 01 12:12:01 wirenboard- wb-rules[564055]: INFO: [engine] Starting main loop
ноя 01 12:12:01 wirenboard- wb-rules[564055]: INFO: the engine is ready
ноя 01 12:12:01 wirenboard- wb-rules[564055]: INFO: [engine] Starting sync loop
ноя 01 12:12:01 wirenboard- wb-rules[564055]: WARNING: [rule warning] DAC: no config file
ноя 01 12:12:01 wirenboard- wb-rules[564055]: INFO: all rule files are loaded


Я рекомендую до if вывести значение и тип newValue в лог. Для того чтобы ценить корректность использования жесткого равенства.
Ну или записать

 if (newValue) {

Добавил строку с логом, сначала ничего не происходило, после этого я поставил галку “опрашивать устройство” ниже лог

defineRule({
  whenChanged: "wb-mio-gpio_201:1/IN7",
  then: function (newValue, devName, cellName) {
    log("IN7", "value =", newValue, "type =", typeof newValue);
    if (newValue === true) {
      dev["wb-mio-gpio_201:3/K8"] = true;
      log("test", newValue, devName, cellName);
    }
  }
});

Вот это не совсем понимаю.
Что за “галка” и где?
Существуют ли все упомянутые в скрипте топики?

Изначально я никак не настраивал , так как в документации к модулю ничего кроме подключения нет, но подключен он через Преобразователь интерфейсов WB-MIO


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

В момент когда я меняю настройки устройва и нажимаю сохранить значение NULL наверное это так и должно быть, дальше все просто тихо.
Вот эти сообщения в логе не могут быть причиной
wb-rules.service: Consumed 54.622s CPU time.

ноя 01 14:39:11 wirenboard-ALSURXIO systemd[1]: Started MQTT Rule engine for Wiren Board.

14:39:11 ERROR: metrics: disable exposing PSI metrics because of failed init: open /sys/fs/cgroup/system.slice/wb-rules.service/cpu.pressure: no such file or directory

WARNING: [rule warning] DAC: no config file

Да. Топики пересоздаются. Удаляются и снова публикуются.

Вы действительно за время подписки, показанное на скриншоте перезапускали сервис 8 раз? Если да - то поведение ожидаемо.

Выводится при остановке и запуске сервиса.

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

Опишите пожалуйста что делаете, какой реакции (логи, изменения состояния) ожидаете, чем получаемая отличается?

Я пытаюсь сделать так, чтобы в зависимости от состояния входов wb-mio-gpio_201:1/IN1,IN2,IN3,…INn ( WBIO-DI-HVD-16) , включались/отключались реле wb-mio-gpio_201:3/K1,К2,К3…Kn ( WBIO-DO-R10A-8), конкретно в этом правиле

defineRule({
  whenChanged: "wb-mio-gpio_201:1/IN7",
  then: function (newValue, devName, cellName) {
    if (newValue === true) {
      dev["wb-mio-gpio_201:3/K8"] = true;
      log("test", newValue, devName, cellName);
    }
  }

Мне нужно чтобы реле 8 было включено если вход 7 в состоянии = true, но ничего не происходит при это в веб интерфейсе состояние входов отображается корректно

Покажите пожалуйста результат подписки на топик “wb-mio-gpio_201:1/IN7” и на топик “wb-mio-gpio_201:3/K8”
Также перед строкой ``` if (newValue === true) {

Добрый день!
Я поправил код так чтобы был опрос входа 7
var pollIntervalId = null;

defineRule({
  whenChanged: "wb-mio-gpio_201:1/IN7",
  then: function (newValue, devName, cellName) {
    log("IN7", "value =", newValue, "type =", typeof newValue);
    if (newValue === 1) {
      dev["wb-mio-gpio_201:3/K8"] = true;
      log("test", newValue, devName, cellName);
    }
  }
});

function pollIN7() {
  var currentValue = dev["wb-mio-gpio_201:1/IN7"];
  log("status IN7", "current value =", currentValue);

}

pollIntervalId = setInterval(pollIN7, 15000);

Теперь в логе видно что что-то происходит

Nov 05 09:39:49 wirenboard- wb-rules[3845246]: INFO: all rule files are loaded

Nov 05 09:40:04 wirenboard- wb-rules[3845246]: INFO: [rule info] status IN7 current value = true

Nov 05 09:40:19 wirenboard- wb-rules[3845246]: INFO: [rule info] status IN7 current value = true

Nov 05 09:40:34 wirenboard- wb-rules[3845246]: INFO: [rule info] status IN7 current value = true

Nov 05 09:40:49 wirenboard- wb-rules[3845246]: INFO: [rule info] status IN7 current value = true

Nov 05 09:41:04 wirenboard- wb-rules[3845246]: INFO: [rule info] status IN7 current value = true

Nov 05 09:41:19 wirenboard- wb-rules[3845246]: INFO: [rule info] status IN7 current value = true

Nov 05 09:41:34 wirenboard- wb-rules[3845246]: INFO: [rule info] status IN7 current value = true

Nov 05 09:41:49 wirenboard- wb-rules[3845246]: INFO: [rule info] status IN7 current value = true

Nov 05 09:42:04 wirenboard- wb-rules[3845246]: INFO: [rule info] status IN7 current value = true

Nov 05 09:42:19 wirenboard- wb-rules[3845246]: INFO: [rule info] status IN7 current value = true

Nov 05 09:42:34 wirenboard- wb-rules[3845246]: INFO: [rule info] status IN7 current value = true

Nov 05 09:42:49 wirenboard- wb-rules[3845246]: INFO: [rule info] status IN7 current value = true

Nov 05 09:43:04 wirenboard- wb-rules[3845246]: INFO: [rule info] status IN7 current value = true

Nov 05 09:43:19 wirenboard- wb-rules[3845246]: INFO: [rule info] status IN7 current value = true

Nov 05 09:43:34 wirenboard- wb-rules[3845246]: INFO: [rule info] status IN7 current value = true

Nov 05 09:43:49 wirenboard- wb-rules[3845246]: INFO: [rule info] status IN7 current value = true

Подписка по "wb-mio-gpio_201:1/IN7”

mosquitto_sub -t ‘/devices/wb-mio-gpio_201:1/controls/IN7’ -v

/devices/wb-mio-gpio_201:1/controls/IN7 1

Подписка по “wb-mio-gpio_201:3/K8”

mosquitto_sub -t ‘/devices/wb-mio-gpio_201:3/controls/K8’

0

Но правило почему то не работает это не может быть из-за того что оба этих модуля подключены через Преобразователь интерфейсов WB-MIO?

Правило сработает, когда “wb-mio-gpio_201:1/IN7” изменится, а у вас оно не меняется.

Спасибо, разобрался в чем моя ошибка, все заработало