IF/THEN Логика
Технический обзор и возможности
Узел логики IF/THEN создаёт интеллектуальные точки ветвления, которые направляют входящие данные по разным путям в зависимости от логических условий. Он получает данные от других узлов, проверяет их на соответствие заданным условиям и направляет результат по разным путям в зависимости от того, успешно ли пройдена проверка. Этот узел позволяет строить рабочие процессы по схеме IF → ТОГДА/ИНАЧЕ, где разные действия автоматически выполняются в зависимости от условий данных в реальном времени.
Узлы логики IF/THEN настраиваются отдельно для каждого потока в интерфейсе аккаунта ГдеМои. Каждый узел содержит только одну логическую формулу и использует язык выражений IoT Logic ГМ Телематика.
Информацию о конкретных вариантах синтаксиса, связанных с логическими выражениями, см. в разделе Выражения и синтаксис логики IF/THEN.

Как работают узлы логики IF/THEN
Когда данные впервые поступают в узел логики IF/THEN, система создаёт пользовательский булев атрибут, определённый пользователем, который хранит результаты вычисления. Каждый последующий пакет данных проверяется по вашему логическому выражению, обновляя значение этого атрибута и направляя данные соответствующим образом:
Истинный результат: данные проходят через соединение Тогда(зелёное), а булев атрибут получает значение true
Ложный результат: данные проходят через соединение Иначе (красное), а булев атрибут получает значение false
Такая проверка выполняется независимо для каждого пакета данных, что позволяет разным записям от одного и того же устройства следовать по разным путям в зависимости от условий в реальном времени.
Интеграция в архитектуру потока
Булевы атрибуты, создаваемые узлами логики IF/THEN, используются не только для маршрутизации потока, но и интегрируются с более широкими возможностями мониторинга ГдеМои. Поскольку это пользовательские атрибуты, их можно:
Отслеживать в реальном времени: просматривать результаты вычислений в Анализе данных для диагностики условий и проверки логики
Добавлять как пользовательские датчики: интегрировать их в основной интерфейс ГдеМои для постоянного мониторинга
В качестве пользовательских датчиков эти атрибуты дают две ключевые возможности:
Срабатывание уведомлений: вы можете создавать пользовательские правила на основе значения датчика, чтобы получать уведомления в случае отклонений. Подробнее о создании правил см. в разделе Правила и уведомления.
Мониторинг объектов: вы можете добавить атрибут в виджет Список объектов, чтобы отслеживать его значение вместе с другими показаниями устройства. Подробнее о том, как создать пользовательский датчик из атрибута IoT Logic, см. в разделе Отображение новых вычисляемых атрибутов на платформе ГдеМои.
Возможности узла
Узел логики IF/THEN предоставляет:
Условную маршрутизацию данных: создание ветвящихся рабочих процессов, которые автоматически направляют данные в зависимости от того, возвращает ли логическое выражение значение true или false.
Проверку в реальном времени: проверку входящих данных устройства на соответствие бизнес-правилам и рабочим порогам по мере поступления данных.
Поддержку сложных условий: объединение нескольких параметров с помощью логических операторов (AND, OR и т. д.) для более сложного принятия решений.
Создание атрибутов: создание булевых атрибутов, которые фиксируют результаты проверки для использования в других узлах, системах мониторинга ГдеМои и сторонних сервисах.
Гибкие выходные пути: направление данных через соединения THEN (true) и ELSE (false) для запуска различных последующих действий.
Шаги настройки
Укажите имя узла
Введите понятное имя для этого узла логики IF/THEN.
Используйте имя, которое ясно отражает назначение проверки, например: Проверка предупреждения о высокой температуре или Обнаружение превышения скорости.
Это имя будет отображаться на диаграмме потока для удобной идентификации.
Укажите имя выражения
Введите имя булева атрибута, который будет хранить результат проверки.
Этот атрибут появится в Анализе данных и станет доступен для использования в последующих узлах.
Используйте понятные имена, например: high_temperature_alert или speed_violation_detected.
Если имя не указано, система автоматически сгенерирует названия вида logic_1, logic_2.
Создайте условное выражение
Постройте логическое выражение в поле выражения.
Используйте логические операторы в соответствии с синтаксисом языка выражений ГМ Телематика, чтобы ссылаться на параметры устройства и вычисляемые атрибуты.
Для корректной работы узла выражение должно возвращать булево значение (true/false).
Используйте функцию автозаполнения, чтобы выбирать доступные атрибуты из подключённых источников данных.
Сохраните конфигурацию узла
Нажмите Применить изменения, чтобы завершить создание узла.
Подключите выходные пути
После настройки узла необходимо установить соединения для результатов проверки.
Соединение THEN (зелёное): подключается к узлам, которые должны обрабатывать данные, когда выражение возвращает true.
Соединение ELSE (красное): подключается к узлам, которые должны обрабатывать данные, когда выражение возвращает false или null.
Соединение THEN является обязательным, а соединение ELSE — необязательным.
Если логические выражения не могут быть вычислены из-за значений null, недопустимых типов данных или синтаксических ошибок, результат считается false, и данные направляются по ветке ELSE.
Подробную информацию о синтаксисе выражений, операторах и поведении потока данных см. в разделе Выражения и синтаксис логики IF/THEN.
Выходные соединения и поток данных
Узел логики IF/THEN создаёт два отдельных выходных пути в зависимости от результатов вычисления выражения.

Соединение Тогда (зелёное)
Активируется, когда: логическое выражение возвращает true.
Требование к соединению: обязательное — каждый узел логики IF/THEN должен иметь как минимум один выход THEN.
Множественные соединения: может быть подключено к нескольким последующим узлам для параллельной обработки.
Типичные варианты использования: запуск уведомлений, специальная обработка, условные вычисления или передача данных в определённые конечные точки.
Соединение ELSE (красное)
Активируется, когда: логическое выражение возвращает false, null или при вычислении возникают ошибки.
Требование к соединению: необязательное — используется только в том случае, если вам нужно обрабатывать отрицательные результаты.
Обработка ошибок: обрабатывает случаи, когда выражения не могут быть вычислены из-за отсутствующих данных или синтаксических ошибок.
Типичные варианты использования: журналирование неуспешных проверок, направление данных по альтернативным путям обработки или продолжение обычной работы.
Требование к конечному узлу
При подключении к конечным узлам (Передача Данных, Вебхук), которые не поддерживают исходящие соединения, создайте параллельные соединения, чтобы данные получали и конечный узел, и узел Передачи Данных:

Почему для обеих веток нужны узлы Передачи Данных:
Гарантируется сохранение данных и их видимость в системе
Обеспечивается возможность проверки потока
Обе ветки могут использовать один и тот же узел Передачи Данных
Ошибка проверки: потоки без узлов Передачи Данных на всех ветках не будут сохранены, и появится ошибка.
Часто задаваемые вопросы
Можно ли использовать в выражениях логики IF/THEN атрибуты, созданные другими узлами?
Да. Узлы логики IF/THEN могут ссылаться на любые атрибуты, доступные из подключённых источников данных, включая исходные параметры устройства и атрибуты, вычисленные предыдущими узлами Вычисление Атрибута. Функция автозаполнения помогает выбрать из всех доступных атрибутов.
Что произойдёт, если моё выражение содержит синтаксические ошибки?
Если выражение содержит синтаксические ошибки или не может быть вычислено, узел логики IF/THEN считает результат равным false и направляет данные через соединение ELSE. Проверьте синтаксис выражения и убедитесь, что все используемые атрибуты существуют в вашем потоке данных.
Можно ли подключить несколько узлов к одному выходу узла логики IF/THEN?
Да. И соединения THEN, и соединения ELSE поддерживают несколько исходящих соединений, что позволяет запускать несколько разных действий на основе одного и того же логического условия. Это даёт возможность организовать параллельную обработку для сложных бизнес-процессов.
Как отслеживать результаты работы узла логики IF/THEN?
Результаты работы узла логики IF/THEN отображаются как булевы атрибуты в таблице Анализа данных. Выберите ваши устройства и найдите имя атрибута, которое вы указали в поле имени выражения. Значения будут отображаться как true или false в зависимости от результатов вычисления.
Можно ли последовательно соединять несколько узлов логики IF/THEN?
Да. Вы можете соединять узлы логики IF/THEN последовательно, чтобы создавать сложные деревья решений. Каждый узел логики IF/THEN может ссылаться на булевы атрибуты, созданные предыдущими узлами логики IF/THEN, что позволяет строить многоэтапные процессы проверки.

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