Создание правила

Доброго дня.
Подскажите, пожалуйста, что неправильно делаю ?
Создал правило, не работает :
defineRule(“Sezon”, {
whenChanged: “wb-modbus-0-0/Режим (0-зима,1-лето)”,
then: function (newValue, devName, cellName) {
dev[“wb-modbus-1-0”][“Переключение зима-0, лето-1”] = newValue;
}
});

нужно, что бы по изменению в устройстве 0-0, менялся регистр в устройстве 1-0

Добрый день.
Что за топик “wb-modbus-0-0/Режим (0-зима,1-лето)”?
подпишитесь на него, что в нем и что меняется при его изменении?

топик в устройстве“wb-modbus-0-0" это discrete input , значения 0 или 1, либо как правильнее (?) false / true.
При изменении этого топика надо аналогичное значение записАть в Coil регистр в другом устройстве “wb-modbus-1-0”

Правило вполне нормально описано, покажите сами топики, вывод mosquitto_sub. То есть тот который читается и в котрый пишется. Ну и добавьте в правило log.info(newValue);- надо понять срабатывает ли оно при изменении

Добрый день. Лог добавил, ничего не менял. Заработало, НО (!) теперь работает в обе стороны почему-то… Мне надо что бы только от устройства …modbus-0-0 изменение влияло на …1-0 , а получилось что в первом переключаю режим и он во втором меняется, что наоборот - меняю во втором - изменяется в первом.

А в каком правиле обрабатывается изменение “второго”? Покажите код создающий виртуальные устройства, у меня не воспроизводится подобное поведение.

Извините, может быть сейчас разберусь, возможно айпишники перепутаны.

Разобрался, но пока не починил. Я сделал виджет в панели, вот он


Потом открыл редактирование в JSON, скопировал оттуда все, создал второй виджет, вставил скрипт, поменял в нем адрес устройства с modbus-0-0 на modbus-1-0
Теперь получается, что каким-то образом подписки и там и там “прикрепились” к одной установке , отсюда у меня и путаница. Как можно “резетнуть” виджеты или я что-то не так делаю ?

Само отображение в интерфейсе - можно просто нажать “корзинку” сверху, виртуальное устройство почистится и снова пересоздастся при перезапуске сервиса.
А если файлы были скопированы - то возможно сейчас есть два правила, в одном из которых изменение происходит наоборот.
Вообще неплохой способ - не указывать адреса и имена наприямую в правилах, лучше их задавать переменной в начале скрипта, например: Быстрый старт работы с KNX на контроллере Wiren Board — Wiren Board

Одну проблему победил - во всех топиках вначале добавил номер установки (П1В1 или П2В2), виджеты поправил - теперь как надо отображаются, не дублируются.
Внес соответствующее изменение имени в правило, сохранил его, не работает, значение в П2В2 не меняется.

Выведите в лог изменяемое значение тоже, до самого изменения и после тоже.

Вот для проверки еще советую упростить имена топиков, хотя бы изменяемого, например назвать P2V2ChangeSeason

добавил лог, уже ближе, но не пойму синтаксис, как исправить ?

Выложите этот скрипт текстом, не скриншотом, выделив с помощью “```”
Мне кажется дело в имени mqtt

defineRule(“SwSezon”, {
whenChanged: “wb-modbus-0-0/П1В1.Режим (0-зима,1-лето)”,
then: function (newValue, devName, cellName) {
dev[“wb-modbus-1-0”][“П2В2.Переключение зима-0, лето-1”] = newValue;
var seazon = dev[“wb-modbus-1-0”][“П2В2.Переключение зима-0, лето-1”]
log.info(newValue);
log.info(seazon);

}
});

Так как код не выделен - исправил кавычки и форматирование сам.
У меня не воспроизводится, проверял на таком примере:

//04_14_test_01.js
defineVirtualDevice("wb-modbus-0-0", {
  title: "wb-modbus-0-0",
  cells: {
      "П1В1.Режим (0-зима,1-лето)": {
      type: "switch",
      value: false,
      readonly: false
    },
  }
});

defineVirtualDevice("wb-modbus-1-0", {
  title: "wb-modbus-1-0",
  cells: {
      "П2В2.Переключение зима-0, лето-1": {
      type: "switch",
      value: false,
      readonly: false
    },
  }
});




defineRule("SwSezon", {
whenChanged: "wb-modbus-0-0/П1В1.Режим (0-зима,1-лето)",
then: function (newValue, devName, cellName) {
  dev["wb-modbus-1-0"]["П2В2.Переключение зима-0, лето-1"] = newValue;
  seazon = dev["wb-modbus-1-0"]["П2В2.Переключение зима-0, лето-1"]
  log.info(newValue);
  log.info(seazon);

}
});

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

Ошибок в скрипте не вижу, отрабатывает как и должно.
А кавички нужны чтобы движок форума не подменял символы в коде, для того чтобы точно быть уверенным что будет вместе с форматированием и верными симводами.
Делается так:
```
КОД

` ```
И выглядит:

КОД

Так из за чего у меня не отрабатывает я по логу понял , “П1В1.Режим (0-зима,1-лето)” - значения 0/1,
а colil регистр “П2В2.Переключение зима-0, лето-1” значения false/true.
Пробовал добавлять в правило if x1 == 1 then y1 = true
if x1 == 0 then y1 = false
Не получается с синтаксисом разобраться, ошибка, как правильно записать ?

Код покажите…
И тип значеия, откуда оно, вывдедите в лог typeof()