Как совместить обязательное условие с несколькими допустимыми вариантами?
Чтобы совместить обязательное требование с несколькими допустимыми вариантами, используйте AND с вложенным OR. Например, присутствие человека должно быть подтверждено всегда, а состояние датчика может соответствовать одному из двух допустимых значений. Действие разрешается только при выполнении обязательной части и хотя бы одной альтернативы.
Логическая структура
Внешний AND задаёт обязательные требования. Внутренний OR объединяет взаимозаменяемые варианты. Такая структура означает: присутствие истинно AND (состояние A истинно OR состояние B истинно).
Условия читают состояния в момент проверки после срабатывания триггера. Они не наблюдают за системой непрерывно и не запускают автоматизацию самостоятельно.
- Внешний AND содержит обязательную проверку.
- Внутренний OR содержит допустимые варианты.
- Один вариант OR достаточен, но обязательный AND нужен всегда.
Пример построения
Сначала определите условие, без которого действие недопустимо, например присутствие. Затем перечислите состояния датчика, каждое отдельной ветвью OR. Это упрощает чтение и позволяет понять, какая часть логики не прошла.
Если состояние может быть unknown или unavailable, решите заранее, считается ли оно недопустимым, и не маскируйте его случайным преобразованием.
- Проверьте присутствие отдельно.
- Проверьте каждый допустимый статус датчика.
- Объедините статусные варианты в OR.
Проверка результата
Используйте трассировку обычного события, чтобы увидеть результат внешнего AND и внутреннего OR. Ручной запуск может обходить триггер и условия, поэтому он не показывает, как сценарий поведёт себя в реальной цепочке.
- Убедитесь, что обязательная ветвь истинна.
- Найдите хотя бы одну истинную альтернативу.
- Проверьте выполнение действия после обеих проверок.
Проверьте себя
- Обязательное условие находится во внешнем AND.
- Допустимые варианты собраны во вложенном OR.
- Реальный запуск подтверждает нужную комбинацию.
Частый вопрос
Что будет, если присутствие истинно, но оба состояния датчика ложны?
Вложенный OR будет ложным, поэтому общий AND запретит действие.