# Проблемы с контролами в виртуальных устройствах и виджетах

**URL:** <https://support.wirenboard.com/t/topic/42860>\
**Category:** Без категории\
**Created:** [September 15, 2026, 2:39pm UTC](https://support.wirenboard.com/t/topic/42860 "2026-09-15T14:39:13Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![Savick](https://avatars.discourse-cdn.com/v2/letter/s/779978/32.png) [@Savick](https://support.wirenboard.com/u/Savick)\
**Post date:** [September 15, 2026, 2:39pm UTC](https://support.wirenboard.com/t/topic/42860/1 "2026-09-15T14:39:13Z")

</div>

В продолжении темы при работе с BOLID C2000-ПП

У нас есть “устройство” (читаем пишем состояния разделов охраны) название bolid

Создаем виртуальное устройство название room101 в котором два контрола: текст и переключатель. Вешаем событие на изменение состояния whenChanged: [“bolid/zone1”] и меняем текст в room101 в соответствии со значением - это все работает. Далее вешаем событие на переключатель whenChanged: [“room101/control”] и пишем в bolid/zone1 некие значения поставить/снять соответственно 24/109 - и тут тоже работает. НО если снять или поставить помещение на охрану с пульта охраны или карой или с клавиатуры системы … то переключатель не меняет свое положение это вроде и логично … тогда отслеживаем нужное состояние в whenChanged: [“bolid/zone1”] и пытаемся записать в [“room101/control”] соответственно true/false. но при записи срабатывает событие [“room101/control”] и производит запись в регистр. Вроде бы и ничего НО … дело в том что система когда пишешь в регистр поставить на охрану возвращает в него разные статусы с некой последовательностью и периодичностью в том числе и предыдущий статус и мы ловим снять с охраны … переключатель пишет в устройство снять с охраны - болид ок снимаю предыдущий поставить … и все … зацикливается. К чему все это … как изменить отображение контрола не вызывая срабатывания события. Это касается и других .. например range.

---

<div class="post-metadata">

**Author:** ![Alexander\_Kuznetsov](https://support.wirenboard.com/user_avatar/support.wirenboard.com/alexander_kuznetsov/32/45967_2.png) [@Alexander\_Kuznetsov](https://support.wirenboard.com/u/Alexander_Kuznetsov)\
**Post date:** [September 16, 2026, 8:43am UTC](https://support.wirenboard.com/t/topic/42860/5 "2026-09-16T08:43:18Z")

</div>

Добрый день.

Пришлите, пожалуйста, текст правила (скрипт wb-rules) для `room101`/`bolid` целиком — так сможем точно увидеть текущую структуру правил и предложить решение без зацикливания.

---

<div class="post-metadata">

**Author:** ![Savick](https://avatars.discourse-cdn.com/v2/letter/s/779978/32.png) [@Savick](https://support.wirenboard.com/u/Savick)\
**Post date:** [September 16, 2026, 9:41am UTC](https://support.wirenboard.com/t/topic/42860/6 "2026-09-16T09:41:44Z")

</div>

Отправлено с устройства Galaxy

-------- Исходное сообщение --------  
От: Alexander Kuznetsov [info@wirenboard.com](mailto:info@wirenboard.com)  
Дата: 16.09.2026 11:45 (GMT+03:00)  
Кому: [savick@mail.ru](mailto:savick@mail.ru)  
Тема: [Wiren Board Support] Проблемы с контролами в виртуальных устройствах и виджетах

Кто-то ответил на ваш пост.

> ![](https://support.wirenboard.com/user_avatar/support.wirenboard.com/alexander_kuznetsov/45/45967_2.png "Alexander\_Kuznetsov") | [Alexander\_Kuznetsov](https://support.wirenboard.com/u/alexander_kuznetsov) Wiren Board Team  
> September 16 |
> 
> - | - |

Добрый день.

Пришлите, пожалуйста, текст правила (скрипт wb-rules) для `room101`/`bolid` целиком — так сможем точно увидеть текущую структуру правил и предложить решение без зацикливания.

> **(attachments)**
>
> [ruleBolid.docx](https://support.wirenboard.com/uploads/short-url/fwlUFIkbBDcCZWiBm6LRNL2YABI.docx) (15.1 KB)

---

<div class="post-metadata">

**Author:** ![Alexander\_Kuznetsov](https://support.wirenboard.com/user_avatar/support.wirenboard.com/alexander_kuznetsov/32/45967_2.png) [@Alexander\_Kuznetsov](https://support.wirenboard.com/u/Alexander_Kuznetsov)\
**Post date:** [September 16, 2026, 10:43am UTC](https://support.wirenboard.com/t/topic/42860/7 "2026-09-16T10:43:35Z")

</div>

Вот такая зациекленность: правило `ruleStatus` при статусах 6191/27951 пишет в `control`, а это триггерит `ruleArm`, которое шлёт команду обратно в `bolid` — зацикливание.

Добавим флаг `syncing` — выставляется перед программной записью в `control` и проверяется в `ruleArm`, чтобы не отправлять команду обратно, если изменение вызвано синхронизацией статуса, а не пользователем.

```javascript
function BolidRoom(devname, roomtitle, fzone) {

  var ruleArm = devname + "_setArm";
  var ruleStatus = devname + "_setStatus";
  var syncing = false; // <-- добавили

  var controls = { /* без изменений */ };
  var stat = { /* без изменений */ };

  defineVirtualDevice(devname, controls);

  defineRule(ruleArm, {
    whenChanged: [devname + "/control"],
    then: function(newValue, devName, cellName) {
      if (syncing) return; // <-- игнорируем эхо статуса
      dev[fzone] = newValue ? 24 : 109;
    }
  });

  defineRule(ruleStatus, {
    whenChanged: [fzone],
    then: function(newValue, devName, cellName) {
      dev[devname + "/status"] = newValue;
      getControl(devname + "/alarm").setTitle({ru: stat[newValue]});
      dev[devname + "/alarm"] = (newValue == 815);

      syncing = true; // <-- помечаем
      if(newValue == 6191){ dev[devname + "/control"] = true; };
      if(newValue == 27951){ dev[devname + "/control"] = false; };
      syncing = false; // <-- снимаем
    }
  });
};

```

---

<div class="post-metadata">

**Author:** ![Savick](https://avatars.discourse-cdn.com/v2/letter/s/779978/32.png) [@Savick](https://support.wirenboard.com/u/Savick)\
**Post date:** [September 17, 2026, 5:17am UTC](https://support.wirenboard.com/t/topic/42860/8 "2026-09-17T05:17:13Z")

</div>

Это не работает. Ничего не изменилось. Также зацикливается

---

<div class="post-metadata">

**Author:** ![Alexander\_Kuznetsov](https://support.wirenboard.com/user_avatar/support.wirenboard.com/alexander_kuznetsov/32/45967_2.png) [@Alexander\_Kuznetsov](https://support.wirenboard.com/u/Alexander_Kuznetsov)\
**Post date:** [September 17, 2026, 6:00am UTC](https://support.wirenboard.com/t/topic/42860/9 "2026-09-17T06:00:39Z")

</div>

Коллега, по регламенту техническая поддержка не занимается написанием скриптов и их откладкой. А с учетом того, что у вас специализированное оборудование, интересная организация данных в его регистрах, да и сам объект не у меня перед глазами, отладку можно смело отнести к категории высокой сложности. Буквально вчера я оформил советы, как писать/отлаживать скрипты, используя наш ИИ: [Примеры правил - Wiren Board](https://wiki.wirenboard.com/wiki/Rule_Examples#%D0%9A%D0%B0%D0%BA_%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C_%D1%80%D0%B0%D0%B1%D0%BE%D1%87%D0%B8%D0%B9_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82_%D0%BE%D1%82_%D0%98%D0%98-%D0%B1%D0%BE%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B4%D0%B5%D1%80%D0%B6%D0%BA%D0%B8)

Проведите откладку по месту с его помощью.

---

<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:** [September 17, 2026, 11:14am UTC](https://support.wirenboard.com/t/topic/42860/10 "2026-09-17T11:14:50Z")

</div>

> [@Savick](#):
>
> К чему все это … как изменить отображение контрола не вызывая срабатывания события.

Типично - при изменении состояния (значения) проверяют - отличается ли текущее от нового. Если не отличается - просто не записывают новое.

---

<div class="post-metadata">

**Author:** ![Savick](https://avatars.discourse-cdn.com/v2/letter/s/779978/32.png) [@Savick](https://support.wirenboard.com/u/Savick)\
**Post date:** [September 18, 2026, 8:26am UTC](https://support.wirenboard.com/t/topic/42860/11 "2026-09-18T08:26:07Z")

</div>

Типично - это событие click - отрабатывает когда взаимодействуют с элементом. А установка свойств (true/folse; enable/disable) изменяет отображение элемента без вызова действия. (Вот типично)

---

<div class="post-metadata">

**Author:** ![Savick](https://avatars.discourse-cdn.com/v2/letter/s/779978/32.png) [@Savick](https://support.wirenboard.com/u/Savick)\
**Post date:** [September 18, 2026, 8:27am UTC](https://support.wirenboard.com/t/topic/42860/12 "2026-09-18T08:27:17Z")

</div>

> [@Savick](#):
>
> folse

false

---

<div class="post-metadata">

**Author:** ![Alexander\_Kuznetsov](https://support.wirenboard.com/user_avatar/support.wirenboard.com/alexander_kuznetsov/32/45967_2.png) [@Alexander\_Kuznetsov](https://support.wirenboard.com/u/Alexander_Kuznetsov)\
**Post date:** [September 30, 2026, 10:07am UTC](https://support.wirenboard.com/t/topic/42860/13 "2026-09-30T10:07:45Z")

</div>

Добрый день! Вам удалось отладить сприкт при содействии с ИИ?

---

<div class="post-metadata">

**Author:** ![Savick](https://avatars.discourse-cdn.com/v2/letter/s/779978/32.png) [@Savick](https://support.wirenboard.com/u/Savick)\
**Post date:** [September 30, 2026, 12:55pm UTC](https://support.wirenboard.com/t/topic/42860/14 "2026-09-30T12:55:04Z")

</div>

Не совсем. Все равно свитч передергивается.

Отправлено с устройства Galaxy

-------- Исходное сообщение --------  
От: Alexander Kuznetsov [info@wirenboard.com](mailto:info@wirenboard.com)  
Дата: 30.09.2026 13:09 (GMT+03:00)  
Кому: [savick@mail.ru](mailto:savick@mail.ru)  
Тема: [Wiren Board Support] Проблемы с контролами в виртуальных устройствах и виджетах

Кто-то ответил на ваш пост.

> ![](https://support.wirenboard.com/user_avatar/support.wirenboard.com/alexander_kuznetsov/45/45967_2.png "Alexander\_Kuznetsov") | [Alexander\_Kuznetsov](https://support.wirenboard.com/u/alexander_kuznetsov) Wiren Board Team  
> September 30 |
> 
> - | - |

Добрый день! Вам удалось отладить сприкт при содействии с ИИ?

---

<div class="post-metadata">

**Author:** ![Alexander\_Kuznetsov](https://support.wirenboard.com/user_avatar/support.wirenboard.com/alexander_kuznetsov/32/45967_2.png) [@Alexander\_Kuznetsov](https://support.wirenboard.com/u/Alexander_Kuznetsov)\
**Post date:** [October 1, 2026, 5:04am UTC](https://support.wirenboard.com/t/topic/42860/15 "2026-10-01T05:04:32Z")

</div>

Поробуйте, все же, разделить этот регистр отдельно на два топика mqtt - состояние и управление.

---

<div class="post-metadata">

**Author:** ![Alexander\_Kuznetsov](https://support.wirenboard.com/user_avatar/support.wirenboard.com/alexander_kuznetsov/32/45967_2.png) [@Alexander\_Kuznetsov](https://support.wirenboard.com/u/Alexander_Kuznetsov)\
**Post date:** [October 16, 2026, 8:51am UTC](https://support.wirenboard.com/t/topic/42860/16 "2026-10-16T08:51:02Z")

</div>

Добрый день! У вас остались вопросы на эту тему?
