> For the complete documentation index, see [llms.txt](https://navixy.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://navixy.com/docs/user/ru/guide/account/iot-logic/nodes/logic-node.md).

# IF/THEN Логика

Настройте маршрут потоков данных IoT Logic по условиям с помощью узла IF/THEN Логика. Оценивайте значения телеметрии, запускайте действия для совпадающих записей и пропускайте остальные.

## Технический обзор и возможности

{% columns %}
{% column %}
Узел **IF/THEN Логика** создает интеллектуальные точки ветвления, которые направляют входящие данные по разным путям на основе логических условий. Он получает данные от других узлов, проверяет их по заданным вами условиям и направляет результаты по разным путям в зависимости от того, прошла ли проверка успешно или завершилась неудачей. Узел позволяет создавать рабочие процессы IF->THEN/ELSE, в которых различные действия выполняются автоматически на основе условий данных в реальном времени.
{% endcolumn %}

{% column %}

<figure><img src="https://2388694493-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F446mKak1zDrGv70ahuYZ%2Fuploads%2Fgit-blob-82bc1f63ee59856cd086bcafb471df3874d45cb5%2Fiot-logic-logic-node-tile.png?alt=media" alt="IF/THEN Logic node tile"><figcaption></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

{% hint style="info" %}
Узел **IF/THEN Логика** узлы настраиваются отдельно для каждого потока в интерфейсе платформы Navixy. Каждый узел содержит только одну логическую формулу, основанную на [Язык выражений Navixy IoT Logic](/docs/iot-logic-api/technologies/navixy-iot-logic-expression-language.md).\
Сведения о конкретных вариантах синтаксиса логических выражений см. в разделе [выражения и синтаксис IF/THEN Логика](/docs/user/ru/guide/account/iot-logic/nodes/logic-node/logic-node-expressions-and-syntax.md).
{% endhint %}

<figure><img src="https://2388694493-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F446mKak1zDrGv70ahuYZ%2Fuploads%2Fgit-blob-4501f0ee515603cadec633c0b982378708c29190%2Fiot-logic-logic-node-in-flow.png?alt=media" alt="IF/THEN Logic node positioning in the flow architecture (with inbound and outbound connections)"><figcaption></figcaption></figure>

### Принцип работы узлов IF/THEN Логика

Когда данные впервые поступают в **IF/THEN Логика** узел, IoT Logic создает определяемый пользователем булевый атрибут, в котором хранятся результаты вычисления. Каждый последующий пакет данных проверяется по вашему логическому выражению, обновляя значение этого атрибута и направляя данные соответствующим образом:

* **Результаты true**: Данные проходят через соединение THEN (зеленое), при этом булевому атрибуту присваивается значение `true`.
* **Результаты false**: Данные проходят через соединение ELSE (красное), при этом булевому атрибуту присваивается значение `ложь`. Это обычный, но не единственный случай: при отсутствии значения некоторые операторы направляют данные в ELSE, оставляя атрибуту значение `null` вместо `ложь`. См. [Отсутствующие значения и маршрутизация null](/docs/user/ru/guide/account/iot-logic/nodes/logic-node/logic-node-expressions-and-syntax.md#missing-values-and-null-routing).

Эта проверка выполняется независимо для каждого пакета данных, позволяя разным записям с одного устройства следовать разными путями в зависимости от условий в реальном времени.

### Интеграция с архитектурой потока

Булевы атрибуты, созданные **IF/THEN Логика** узлами, не ограничиваются маршрутизацией потока и интегрируются с расширенными возможностями мониторинга Navixy. Поскольку это пользовательские атрибуты, их можно:

* **Отслеживать в реальном времени**: Просматривайте результаты вычисления в [Анализ данных](/docs/user/ru/guide/account/iot-logic/data-stream-analyzer.md) для устранения проблем с условиями и проверки логики
* **Добавлять в качестве пользовательских датчиков**: Интегрируйте с основным интерфейсом Navixy для постоянного мониторинга

В качестве пользовательских датчиков эти атрибуты обеспечивают две ключевые возможности:

* **Запуск контроля событий**: Вы можете создавать пользовательские правила на основе значения датчика, чтобы получать уведомления в случае отклонений. Подробнее о создании правил см. в разделе [Правила и уведомления](/docs/user/ru/guide/events-and-notifications.md).
* **Мониторинг объектов**: Вы можете добавить атрибут в виджет [Список объектов](/docs/user/ru/guide/tracking/objects-list.md) для мониторинга его значения наряду с другими показаниями устройства. Подробнее о создании пользовательского датчика из атрибута IoT Logic см. в разделе [Отображение новых вычисленных атрибутов на платформе Navixy](/docs/user/ru/guide/account/iot-logic/nodes/initiate-attribute-node/displaying-new-calculated-attributes-on-the-navixy-platform.md).

{% hint style="info" %}
Узел **IF/THEN Логика** узлу требуется подключение как минимум к одному предшествующему узлу (**Источник данных** или другим узлам обработки) для получения входных данных для проверки.
{% endhint %}

### Возможности узла

Узел **IF/THEN Логика** узел предоставляет:

* **Условная маршрутизация данных**: Создавайте рабочие процессы с ветвлением, которые автоматически направляют данные на основе логических выражений, возвращающих результаты true или false.
* **Проверка в реальном времени**: Проверяйте входящие данные устройства по бизнес-правилам и рабочим пороговым значениям по мере поступления данных.
* **Поддержка сложных условий**: Комбинируйте несколько параметров с помощью логических операторов (AND, OR и т. д.) для принятия сложных решений.
* **Условия на основе зон**: Ссылайтесь непосредственно на именованные зоны Navixy в выражениях с помощью функций `inGeofence()`, `enterGeofence()`, и `leaveGeofence()` без ручного сравнения координат. `geofenceName()` возвращает название зоны, в которой находится устройство, поэтому одно условие может охватывать множество областей. См. раздел [Функции зон](/docs/user/ru/guide/account/iot-logic/nodes/geofence-functions.md).
* **Создание атрибутов**: Создавайте булевы атрибуты, которые записывают результаты проверки для использования в других узлах, системах мониторинга Navixy и сторонних сервисах.
* **Гибкие пути вывода**: Направляйте данные через соединения THEN (true) и ELSE (false или иногда null при отсутствии значения), чтобы запускать различные последующие действия.

## Параметры конфигурации

{% columns %}
{% column valign="middle" %}
Узел **IF/THEN Логика** узел позволяет определять условные выражения, которые вычисляют входящие данные и создают пути ветвления в вашем потоке на основе результатов.
{% endcolumn %}

{% column %}

<figure><img src="https://2388694493-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F446mKak1zDrGv70ahuYZ%2Fuploads%2Fgit-blob-b6c0a06da08316f5e17ead42e1e5b2083b59603a%2FLogic_node_edit.png?alt=media" alt=""><figcaption></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

Рассмотрим, какие элементы использует этот узел и что можно настроить при работе с ним.

### Шаги настройки

{% stepper %}
{% step %}

#### Укажите имя узла

Введите описательное имя для этого **IF/THEN Логика** Узле.

* Используйте имя, которое четко определяет цель проверки (например, *Проверка предупреждения о температуре*, *Обнаружение превышения скорости*).
* Это имя будет отображаться на схеме потока для удобной идентификации.
  {% endstep %}

{% step %}

#### Определите имя выражения

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

* Этот атрибут появится в [Анализ данных](/docs/user/ru/guide/account/iot-logic/data-stream-analyzer.md) и станет доступен для использования в последующих узлах.
* Используйте описательные имена, например *high\_temperature\_alert* или speed\_violation\_detected.
* Система автоматически создаст такие имена, как *logic\_1*, *logic\_2* если имя не указано.
  {% endstep %}

{% step %}

#### Создайте условное выражение

Составьте логическое выражение в поле выражения.

* Используйте [логические операторы в соответствии с синтаксисом языка выражений Navixy](/docs/user/ru/guide/account/iot-logic/nodes/logic-node/logic-node-expressions-and-syntax.md) для ссылки на параметры устройства и вычисленные атрибуты.
* Для корректной работы узла выражение должно возвращать булево значение (true/false). Отсутствующее значение может обрабатываться иначе. См. раздел [Отсутствующие значения и маршрутизация null](/docs/user/ru/guide/account/iot-logic/nodes/logic-node/logic-node-expressions-and-syntax.md#missing-values-and-null-routing).
* Используйте [функцию автодополнения](/docs/user/ru/guide/account/iot-logic/nodes/initiate-attribute-node/managing-attributes.md#autofill-attribute-names) для выбора доступных атрибутов из подключенных источников данных.
* Чтобы использовать зону Navixy в качестве условия, примените [средство выбора зоны](/docs/user/ru/guide/account/iot-logic/nodes/geofence-functions.md#how-to-add-a-geofence-condition) в поле выражения.
  {% endstep %}

{% step %}

#### Сохраните конфигурацию узла

Нажмите **Применить изменения** для завершения создания узла.
{% endstep %}

{% step %}

#### Подключите пути вывода

После настройки узла необходимо установить соединения для результатов проверки.

* **Соединение THEN** (зеленое): Подключается к узлам, которые должны обрабатывать данные, когда выражение возвращает true.
* **Соединение ELSE** (красное): Подключается к узлам, которые должны обрабатывать данные, когда выражение не возвращает true. Сюда входит результат false или отсутствующее значение, которое узел не смог вычислить.
* Соединение THEN является обязательным, а соединение ELSE — необязательным.
  {% endstep %}
  {% endstepper %}

{% hint style="warning" %}
Отсутствующие данные часто направляются по пути ELSE, но не всегда. Сравнение `!=` отсутствующего значения и литерала, не равного null, возвращает `true` и вместо этого направляется в THEN; то же происходит с `!~`, и `!^` и `!$` когда значение поступает из `value()`. Синтаксические ошибки также направляются в ELSE, но атрибут сохраняется как `null`, а не `ложь`. См. [Отсутствующие значения и маршрутизация null](/docs/user/ru/guide/account/iot-logic/nodes/logic-node/logic-node-expressions-and-syntax.md#missing-values-and-null-routing) полный набор шаблонов, безопасных для null, и таблицы операторов.
{% endhint %}

Подробную информацию о синтаксисе выражений, операторах и поведении потока данных см. в разделе [выражения и синтаксис IF/THEN Логика](/docs/user/ru/guide/account/iot-logic/nodes/logic-node/logic-node-expressions-and-syntax.md).

## Выходные соединения и поток данных

Узел **IF/THEN Логика** узел создает два отдельных пути вывода на основе результатов вычисления выражения.

<figure><img src="https://2388694493-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F446mKak1zDrGv70ahuYZ%2Fuploads%2Fgit-blob-4501f0ee515603cadec633c0b982378708c29190%2Fiot-logic-logic-node-in-flow.png?alt=media" alt="IF/THEN Logic node showing THEN and ELSE connections with green and red color coding"><figcaption></figcaption></figure>

### Соединение THEN (<mark style="color:зеленое;">зеленое</mark>)

* **Активируется, когда**: Логическое выражение возвращает `true`.
* **Требование к подключению**: Обязательно. Каждый узел IF/THEN Логика должен иметь как минимум один выход THEN.
* **Несколько подключений**: Может подключаться к нескольким последующим узлам для параллельной обработки.
* **Типичные варианты использования**: Запуск контроля событий, специальной обработки, условных вычислений или направления данных в определенные конечные точки.

### Соединение ELSE (<mark style="color:красное;">красное</mark>)

* **Активируется, когда**: Логическое выражение возвращает `ложь`, возвращает `null`, или не может быть вычислено.
* **Исключения, на которые следует обратить внимание**: Большинство сравнений с отсутствующим значением направляются сюда. Сравнение `!=` отсутствующего значения и литерала, не равного null, вместо этого направляется в THEN; то же происходит с `!~`, и `!^` и `!$` при отсутствующем `value()` результате.
* **Сохраняемое значение не всегда равно `ложь`**: Направление в ELSE не гарантирует, что булевый атрибут будет сохранен как `ложь`. Реляционные сравнения (`<`, `<=`, `>`, `>=`) и простая ссылка на отсутствующее значение попадают в ELSE, при этом атрибут остается `null`. См. [Отсутствующие значения и маршрутизация null](/docs/user/ru/guide/account/iot-logic/nodes/logic-node/logic-node-expressions-and-syntax.md#missing-values-and-null-routing).
* **Требование к подключению**: Необязательно. Используйте, только если необходимо обработать отрицательные результаты.
* **Обработка ошибок**: Обрабатывает случаи, когда выражения невозможно вычислить из-за синтаксических ошибок или недопустимых типов данных. Маршрутизация отсутствующих данных зависит от оператора. См. раздел [Отсутствующие значения и маршрутизация null](/docs/user/ru/guide/account/iot-logic/nodes/logic-node/logic-node-expressions-and-syntax.md#missing-values-and-null-routing).
* **Типичные варианты использования**: Регистрация неудачных проверок, направление данных по альтернативным путям обработки или продолжение обычной работы.

### **Требование к конечному узлу**

При подключении к конечным узлам ([Действие](/docs/user/ru/guide/account/iot-logic/nodes/action-node.md), [узлу Вебхук](/docs/user/ru/guide/account/iot-logic/nodes/webhook-node.md)), которые не поддерживают исходящие соединения, создайте параллельные подключения, чтобы и конечный узел, и Узел передачи данных получали данные:

<figure><img src="https://2388694493-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F446mKak1zDrGv70ahuYZ%2Fuploads%2Fgit-blob-4501f0ee515603cadec633c0b982378708c29190%2Fiot-logic-logic-node-in-flow.png?alt=media" alt=""><figcaption></figcaption></figure>

**Почему обеим ветвям нужны Узлы передачи данных:**

* Обеспечивает сохранность данных и видимость в системе
* Позволяет проверять поток
* Обе ветви могут использовать один и тот же узел Узел передачи данных

{% hint style="danger" %}
**Ошибка проверки:** Потоки без Узлов передачи данных во всех ветвях не будут сохранены из-за ошибки.
{% endhint %}

## Часто задаваемые вопросы

#### Можно ли использовать атрибуты, созданные другими узлами, в выражениях IF/THEN Логика?

Да. **IF/THEN Логика** узлы могут ссылаться на любые атрибуты, доступные из подключенных источников данных, включая исходные параметры устройства и атрибуты, вычисленные предшествующими узлами **Вычисление атрибута** . Функция автодополнения помогает выбрать из всех доступных атрибутов.

#### Что произойдет, если мое выражение содержит синтаксические ошибки?

Если выражение содержит синтаксические ошибки или не может быть вычислено, **IF/THEN Логика** узел направляет данные через соединение ELSE и сохраняет атрибут как `null`, а не `ложь`. Проверьте синтаксис выражения и убедитесь, что все указанные атрибуты существуют в потоке данных.

#### Можно ли подключить несколько узлов к одному выходу узла IF/THEN Логика?

Да. Соединения THEN и ELSE поддерживают несколько исходящих подключений, что позволяет запускать несколько различных действий на основе одного и того же логического условия. Это обеспечивает параллельную обработку для сложных бизнес-процессов.

#### Как отслеживать результаты узла IF/THEN Логика?

Результаты узла IF/THEN Логика отображаются как булевы атрибуты в [Анализ данных](/docs/user/ru/guide/account/iot-logic/data-stream-analyzer.md) таблице. Выберите устройства и найдите имя атрибута, указанное в поле имени выражения. Значения обычно отображаются как `true` или `ложь`, но отсутствующее значение может вместо этого оставить атрибут как `null` в зависимости от оператора. См. раздел [Отсутствующие значения и маршрутизация null](/docs/user/ru/guide/account/iot-logic/nodes/logic-node/logic-node-expressions-and-syntax.md#missing-values-and-null-routing).

#### Почему мое условие сработало, хотя у атрибута еще нет значения?

Скорее всего, условие использует `!=` с литералом, не равным null, или `!~`, для значения, которое никогда не поступало. Оба оператора рассматривают «отсутствие значения» как значение, отличное от сравниваемого литерала, поэтому возвращают `true` и направляют данные в THEN. Безопасное значение по умолчанию дало бы противоположный результат. Операторы `!^` и `!$` ведут себя так же при отсутствующем `value()` результате и возвращают `null` когда на атрибут ссылаются по имени. Добавьте проверку наличия (`value('attr', 0, 'all') != null && ...`) или явную проверку `== null` если условие должно срабатывать только после того, как атрибут получит фактическое значение. См. раздел [Отсутствующие значения и маршрутизация null](/docs/user/ru/guide/account/iot-logic/nodes/logic-node/logic-node-expressions-and-syntax.md#missing-values-and-null-routing) для полного анализа каждого оператора.

#### Можно ли объединить несколько узлов IF/THEN Логика в цепочку?

Да. Вы можете подключать **IF/THEN Логика** узлы последовательно для создания сложных деревьев решений. Каждый **IF/THEN Логика** узел может ссылаться на булевы атрибуты, созданные предыдущими **IF/THEN Логика** узлами, что позволяет реализовать сложные многоэтапные рабочие процессы проверки.

<figure><img src="https://2388694493-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F446mKak1zDrGv70ahuYZ%2Fuploads%2Fgit-blob-ee4829400641ec381aa3dec65b7dbb1d01d6ebc1%2Fiot-logic-logic-node-chained.png?alt=media" alt="Example flow showing multiple IF/THEN Logic nodes connected in sequence for complex decision trees"><figcaption></figcaption></figure>

#### Почему ветви IF/THEN Логика должны подключаться к Узлам передачи данных?

Каждая ветвь IF/THEN Логика должна завершаться в Узле передачи данных для проверки потока данных и видимости в системе. При использовании конечных узлов (Действие, Вебхук), которые не поддерживают исходящие соединения, создайте параллельное подключение от узла IF/THEN Логика непосредственно к Узлу передачи данных. При необходимости обе ветви могут использовать один и тот же Узел передачи данных.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://navixy.com/docs/user/ru/guide/account/iot-logic/nodes/logic-node.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
