Условие низкого или высокого уровня на входе в правилах

Добрый день! Подскажите, пожалуйста, можно ли в правилах в качестве условия вместо оператора whenChanged использовать условие, когда состояние входа только в низком или только в высоком уровне? Если возможно, не могли бы подсказать, как написать такое правило? Спасибо!

Добрый день.
Естественно можно как проверить состояние контрола так и сравнить его с каким-то значением.
Пример

if (dev["foo/bar"]){
  //Выполнится если true
}

Да, пример для false:

if (!dev["foo/bar"]){
  //Выполнится если false
}
1 Like

Не совсем понятно как оператор if использовать в блоке defineRule? Мне нужно, чтобы правило срабатывало каждый раз, когда на входе низкий уровень.

Не понимаю. Какое событие планируете обрабатывать?

У меня есть нормально замкнутая кнопка. Нужно чтобы при ее нажатие срабатывало правило. Сейчас в правиле использую условие whenChanged. В принципе при нажатии кнопки все срабатывает. Но весь смысл в том, что систему делали нормально замкнутой, чтобы видеть разрыв цепи. А вот с этим уже начинаются проблемы при использовании условия whenChanged, т.к. при разрыве правило не срабатывает. В общем складывается впечатление, что условие whenChanged выполняется только при кратковременном изменении состоянии.

Получилось отслеживать уровень входа используя trackMqtt:

trackMqtt("/devices/wb-gpio/controls/EXT1_IN13", function (message) {
  if (!dev["wb-gpio/EXT1_IN13"]) {
    dev["nurse_call/state"] = 1;
  }

Совершенно непонятно что не так делали с whenChanged. У меня не получилось вопроизвести отсутствие вызова при изменении топика.