# Выполнение правила при условии

**URL:** <https://support.wirenboard.com/t/vypolnenie-pravila-pri-uslovii/4810>\
**Category:** Rule Engine\
**Created:** [April 10, 2020, 1:48pm UTC](https://support.wirenboard.com/t/vypolnenie-pravila-pri-uslovii/4810 "2020-04-10T13:48:21Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![changer](https://avatars.discourse-cdn.com/v2/letter/c/f04885/32.png) [@changer](https://support.wirenboard.com/u/changer)\
**Post date:** [April 10, 2020, 1:48pm UTC](https://support.wirenboard.com/t/vypolnenie-pravila-pri-uslovii/4810/1 "2020-04-10T13:48:21Z")

</div>

defineVirtualDevice(‘ventilation\_switcher’, {  
title: ‘Ventilation’,  
cells: {  
enabled: {  
type: ‘switch’,  
value: false  
},  
on: {  
type: ‘switch’,  
value: false  
}  
}  
});

if (dev.ventilation\_switcher.enabled) {  
defineRule(‘vent\_onoff’, {  
whenChanged: ‘ventilation\_switcher/on’,  
then: function (newValue, devName, cellName) {  
log(‘Vent: timer 1 start’);  
}  
});  
}

Правильно ли я понимаю что если свитч enabled выключен, включение/выключение свича on не должно вызывать никаких действий? У меня правило vent\_onoff срабатывает всегда.

---

<div class="post-metadata">

**Author:** ![poglazov](https://avatars.discourse-cdn.com/v2/letter/p/d26b3c/32.png) [@poglazov](https://support.wirenboard.com/u/poglazov)\
**Post date:** [April 11, 2020, 10:18am UTC](https://support.wirenboard.com/t/vypolnenie-pravila-pri-uslovii/4810/2 "2020-04-11T10:18:57Z")

</div>

Добрый день!

Кажется, это не связано именно с новой версией движка правил.  
Если вам нужно, чтобы правило не выполнялось при определённом состоянии переключателя enabled, вы просто внутрь самого правила впишите большой if вначале.  
Здесь вы создаёте (!) правило при каком-то состоянии - и всё, оно потом остаётся.

---

<div class="post-metadata">

**Author:** ![changer](https://avatars.discourse-cdn.com/v2/letter/c/f04885/32.png) [@changer](https://support.wirenboard.com/u/changer)\
**Post date:** [April 12, 2020, 10:28am UTC](https://support.wirenboard.com/t/vypolnenie-pravila-pri-uslovii/4810/3 "2020-04-12T10:28:57Z")

</div>

Как работают  
disableRule(myRule); // отключить проверку и выполнение правила  
enableRule(myRule); // разрешить выполнение правила  
после перезагрузки контроллера? Сохраняется ли статус?

---

<div class="post-metadata">

**Author:** ![changer](https://avatars.discourse-cdn.com/v2/letter/c/f04885/32.png) [@changer](https://support.wirenboard.com/u/changer)\
**Post date:** [May 11, 2020, 6:31pm UTC](https://support.wirenboard.com/t/vypolnenie-pravila-pri-uslovii/4810/4 "2020-05-11T18:31:42Z")

</div>

Так все таки работают enableRule/disableRule? Есть примеры использования?

---

<div class="post-metadata">

**Author:** ![EvgenyBoger](https://support.wirenboard.com/user_avatar/support.wirenboard.com/evgenyboger/32/188_2.png) [@EvgenyBoger](https://support.wirenboard.com/u/EvgenyBoger)\
**Post date:** [May 11, 2020, 8:58pm UTC](https://support.wirenboard.com/t/vypolnenie-pravila-pri-uslovii/4810/5 "2020-05-11T20:58:07Z")

</div>

> [@changer](#):
>
> Так все таки работают enableRule/disableRule? Есть примеры использования?

Но это же проверить даже быстрее, чем спрашивать здесь.

Работают. Примеры - тут [Движок правил wb-rules — Wiren Board](https://wirenboard.com/wiki/index.php?title=%D0%94%D0%B2%D0%B8%D0%B6%D0%BE%D0%BA_%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB_wb-rules_2.0) .

> [@changer](#):
>
> после перезагрузки контроллера? Сохраняется ли статус?

нет, не сохраняется.  
Желаемого поведения можно достичь через PersistentStorage.
