Skip to main content
Skip table of contents

Функции геозон в IoT Logic

Функции геозон позволяют использовать границы на карте как условия для работы ваших сценариев. С их помощью вы настраиваете автоматические сценарии, которые срабатывают при входе, выходе или нахождении объекта в определенной области. Вместо того чтобы вручную прописывать и сравнивать координаты, вы просто ссылаетесь на готовую зону по её ID, а система сама отслеживает положение устройства в реальном времени.

Функции геозон доступны только в логических выражений IF/THEN узлах. В узлах Вычисление Атрибута или других типах узлов они не поддерживаются.

Перед тем как ссылаться на геозоны в выражениях IoT Logic, вы должны создать их в ГМ Телематика. Чтобы создать или управлять геозонами, перейдите в раздел Геозоны.

Доступные функции

Система анализирует каждый пакет данных и проверяет положение устройства. Все функции возвращают логическое значение: true(да) или false(нет).

Функция

Когда срабатывает (true)

inGeofence(id)

Устройство в данный момент находится внутри геозоны (длительное состояние)

enterGeofence(id)

Объект пересек границу и вошел в геозону (разовое событие в момент входа)

leaveGeofence(id)

Объект пересек границу и вышел из геозоны (разовое событие в момент выхода)

Параметр id — это уникальный числовой идентификатор геозоны в вашей учетной записи. Средство выбора геозон вставляет его автоматически (см. Как добавить условие геозоны).

Особенности синтаксиса (JEXL)

Краткий синтаксис — это формат, который средство выбора геозон вставляет автоматически и используется для проверки текущего пакета данных.

CODE
inGeofence(2427585 /*Новая зона*/)
enterGeofence(51577 /* Москва */)
leaveGeofence(85269 /* Геозона 3 */)

Длинный синтаксис — оборачивает вызов функции геозоны внутри value(). Используйте эту форму, если нужно обратиться к истории (прошлым пакетам данных). В этом случае вызов функции внутри value() обязательно пишется в кавычках.

CODE
value("inGeofence(35229 /* Delivery zone #4 */)", 1, valid)

Параметры следуют той же схеме, что и value() функция, используемая для атрибутов устройства: второй параметр — это исторический индекс (0 для текущего значения, 1 для предыдущего и так далее), а третий — фильтр достоверности.

Для получения сведений о value() функции см. Выражения и синтаксис логики IF/THEN.

Как добавить условие геозоны

Функция геозоны находится в узле IF/THEN логика. Для удобства использования список всех геозон отображается на специальной иконке, сгруппированных по названию и ID.

  1. Откройте Узел IF/THEN Логика, дважды кликнув по нему

  2. В поле Выражения (JEXL) нажмите на иконку выбора геозоны, чтобы открыть список геозон

    image-20260507-132718.png
  3. В поиске введите название зоны. Каждая зона отображается в списке трижды (по одной записи на каждую функцию)

    • inGeofence — используйте, когда нужно проверить, находится ли объект в данный момент внутри выбранной зоны

    • enterGeofence — используйте, когда нужно определить, что объект пересек границу и вошел в геозону

    • leaveGeofence — используйте, когда нужно определить, что объект пересек границу и вышел из геозоны

  4. Выберите нужный вариант и система сама вставит готовый код в место, где стоит курсор. При необходимости объедините с другими условиями используя логические операторы (см. примеры выражений ниже)

  5. Нажмите Применить, чтобы сохранить изменения.

Средство выбора геозон выводит только те геозоны, которые существуют в вашей учетной записи ГМ Телематика на момент открытия узла. Если вы добавите новую геозону после открытия узла, закройте его и откройте снова, чтобы обновить список.

Примеры выражений

Условие с одной геозоной
Маршрутизируйте данные в зависимости от того, находится ли устройство в данный момент внутри зоны доставки:

CODE
inGeofence(35229 /* Delivery zone #4 */)
  • путь THEN: Данные от устройств, находящихся внутри зоны, поступают сюда. Используйте эту ветку, чтобы запускать обработку, специфичную для зоны, например настраивать пороги скорости или запускать атрибут таймера простоя.

  • путь ELSE: Данные от устройств, находящихся вне зоны, поступают сюда для стандартной обработки

Определение входа
Выполните действие, когда транспортное средство въезжает на охраняемый объект:

CODE
enterGeofence(85269 /* Construction site 1 */)
  • путь THEN: Подключите к узлу Вебхук, чтобы уведомить охрану объекта, или к узлу Действие устройства, чтобы записать событие въезда.

  • путь ELSE: Продолжайте обычную обработку данных для устройств, не въезжающих на объект.

Определение выхода
Определите, когда транспортное средство покидает разрешенную сервисную зону в рабочее время:

CODE
leaveGeofence(51577 /* Austin Warehouse */) && value('business_hours', 0, 'valid') == true
  • путь THEN: Отправьте уведомление через узел Вебхук в систему диспетчеризации.

  • путь ELSE: Продолжайте обычную обработку.

Объединение нескольких геозон
Проверьте, находится ли устройство внутри какой-либо из нескольких ограниченных зон:

CODE
inGeofence(35229 /* Delivery zone #4 */) || inGeofence(85269 /* Construction site 1 */)
  • путь THEN: Примените правила или уведомления, специфичные для зоны.

  • путь ELSE: Обрабатывайте данные от устройств, находящихся вне всех перечисленных зон.

Геозона, объединенная с параметром устройства
Определите превышение скорости в определенной городской зоне:

CODE
inGeofence(84762 /* destination1 */) && value('speed', 0, 'valid') > 50
  • путь THEN: Запишите нарушение скорости в пределах этой зоны или отправьте целевое предупреждение.

  • путь ELSE: Продолжайте стандартную обработку для данных, соответствующих условиям, или для данных вне зоны.

Пример длинного синтаксиса
Получите доступ к состоянию геозоны предыдущей позиции, чтобы определить переход снаружи внутрь:

CODE
inGeofence(35229 /* Delivery zone #4 */) && !value("inGeofence(35229 /* Delivery zone #4 */)", 1, valid)

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

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

Где найти ID геозоны?

Средство выбора геозон отображает в списке название каждой геозоны и ее числовой ID. Вы также можете найти ID в интерфейсе геозон ГМ Телематика. Когда вы выбираете геозону в средстве выбора, ID автоматически вставляется в выражение.

Можно ли использовать функции геозон в узле Вычисление атрибута?

Нет. Функции геозон доступны только в логических выражений IF/THEN узлах. Они предназначены для оценки логических условий, что и является специальным назначением логических выражений IF/THEN узла. Узел узлах Вычисление Атрибута использует другой контекст выражений для вычисления значений атрибутов.

Что произойдет, если удалена упомянутая геозона?

Если геозона, на которую ссылается выражение, удалена из вашей учетной записи ГМ Телематика, функцию не сможет работать корректно. Результат считается false, и данные проходят через соединение ELSE. Обновите или удалите выражение, чтобы избежать нежелательной маршрутизации.

Вычисляет ли inGeofence текущую GPS-позицию устройства?

Да. inGeofence() проверяет позицию, указанную в текущем пакете данных, относительно границ геозоны. Каждый пакет оценивается независимо, поэтому результат отражает позицию, зарегистрированную устройством в момент получения этого пакета.

В чем разница между inGeofence и enterGeofence?

inGeofence() возвращает true для каждого пакета, полученного, пока устройство находится внутри геозоны. enterGeofence() возвращает true только для того пакета, который фиксирует момент, когда устройство пересекло границу геозоны и вошло в нее. Используйте inGeofence когда нужно применять логику ко всем данным изнутри зоны; используйте enterGeofence когда нужно реагировать именно на событие пересечения границы.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.