Wialon предоставляет широкий спектр возможностей в рамках стандартного функционала, однако существуют задачи, которые можно решить только неочевидными методами. Например, с помощью динамических групп, которые будут рассмотрены в этой статье. Этот метод позволяет сортировать объекты по группам, отслеживать цепочку условий с помощью уведомлений, находить объекты, которые не выполнили определенное условие, и так далее.
Логика работы динамических групп
Логика работы данного метода основывается на следующих возможностях системы:
- уведомления могут отслеживать не только конкретные объекты, а группы объектов;
- уведомления позволяют изменять состав групп объектов.
Совместив эти возможности, можно добиться неочевидного поведения:
- Если настроить уведомление на отслеживание пустой группы, то уведомление будет включено, но не будет срабатывать, так как объектов в группе нет.
- Если добавить объекты в эту группу, то даже без изменения настроек уведомления оно автоматически начнет отслеживать добавленные объекты.
- Если исключить объекты из группы, то уведомление автоматически перестанет их отслеживать.
С помощью динамических групп можно создавать своеобразные логические схемы. Рассмотрим подробнее некоторые из них.
Сортировка по группам
Самым простым подходом при использовании динамических групп является сортировка объектов по группам. Таким образом можно, например, разделить все машины автопарка на движущиеся и простаивающие, свободные и занятые, находящиеся на территории предприятия и за его пределами и так далее. После сортировки полученные группы можно использовать в Отчетах или Заданиях, а также отображать на вкладке Мониторинг.
Для сортировки по одному условию A потребуются следующие элементы и настройки:
- Группа Альфа, содержащая объекты, для которых еще не выполнено условие A.
- Группа Бета, содержащая объекты, для которых уже выполнено условие A.
- Уведомление 1, которое настроено на отслеживание группы Альфа и контролирует условие A. Если это условие будет выполнено, то объекты будут исключены из группы Альфа и добавлены в группу Бета.
- Уведомление 2, которое настроено на отслеживание группы Бета и контролирует условие, противоположное условию A. Если это условие будет выполнено, то объекты будут исключены из группы Бета и снова добавлены в группу Альфа.
Схематично данный подход можно изобразить следующим образом:
Рассмотрим несколько примеров.
Пример 1. Отчет по объектам вне страны
Предположим, что компания клиента имеет диспетчеров, которым нужно разделять машины на две группы. В одну должны входить те, что в данный момент находятся внутри страны, а во вторую — те, что находятся за пределами страны. Такое разделение нужно, чтобы в любой момент иметь возможность запросить отчет по каждой группе.
Для решения этой задачи сначала необходимо создать геозону, которая соответствует границам страны, а также 2 группы объектов, которые можно назвать Внутри страны и Вне страны. Далее необходимо вручную добавить объекты в соответствующие группы, исходя из их нынешнего местоположения.
Далее необходимо настроить первое уведомление под названием Отъезд, которое будет отслеживать группу Внутри страны. Оно будет контролировать нахождение объектов вне геозоны. В качестве действия необходимо выбрать способ Изменить состав групп объектов, а именно исключить объекты из группы Внутри страны и добавить в группу Вне страны.
Второе уведомление будет иметь название Возвращение и отслеживать группу Вне страны. Оно будет контролировать нахождение объектов внутри геозоны. В качестве действия необходимо выбрать способ Изменить состав групп объектов, а именно исключить объекты из группы Вне страны и добавить в группу Внутри страны. Как несложно заметить, настройка второго уведомления противоположна первому.
Теперь объекты будут динамически перемещаться в нужные группы. Диспетчеры смогут в любой момент выполнить отчет по группе Внутри страны или Вне страны в зависимости от их потребностей.
Пример 2. Распределение доступов через группы
Предположим, что запрос клиента аналогичен примеру 1, однако дополнительно необходимо сделать так, чтобы определенный диспетчер имел доступ только к тем объектам, которые в данный момент находятся вне страны. За основу будет взято решение из предыдущего примера, а ниже будут рассмотрены только недостающие настройки.
Подойти к этому решению можно двумя способами. С одной стороны, можно настроить уведомление так, чтобы оно не только перемещало объекты между группами, но и изменяло доступ в отношении этих объектов. С другой стороны, можно предоставлять доступы к объектам через группы. Далее описан только последний способ.
Сперва необходимо удостовериться, что диспетчер не имеет прав в отношении рассматриваемых объектов. Далее необходимо предоставить диспетчеру права только на определенную группу объектов (в данном примере — это группа Вне страны).
Теперь при выезде из геозоны и срабатывании уведомления объекты будут добавлены в группу Вне страны, поэтому диспетчер сможет их видеть. При въезде в геозону будет происходить противоположная ситуация: уведомление будет исключать объекты из групп Вне страны, поэтому диспетчер не будет их видеть.
Контроль нескольких условий в уведомлении
В Wialon существует 20 типов уведомлений, которые позволяют автоматически выполнять разные действия при выполнении выбранного условия. При этом действий может быть несколько (например, можно одновременно показать онлайн-уведомление во всплывающем окне и изменить иконку объекта), а контролируемое условие формально может быть только одно.
Однако, в 8 типах уведомлений кроме основного условия можно включить дополнительные.
Тип уведомления | Дополнительные условия | |||
---|---|---|---|---|
Значение датчика | Геозона | Скорость | Отсутствие водителя | |
Скорость | ✓ | ✓ | ||
Геозона | ✓ | ✓ | ||
Взаиморасположение объектов | ✓ | ✓ | ||
Адрес | ✓ | ✓ | ||
Простой | ✓ | ✓ | ||
Потеря связи | ✓ | |||
Заправка | ✓ | |||
Слив | ✓ |
Получается, что не все типы уведомлений могут одновременно контролировать несколько условий. И если клиенту нужно совмещать нестандартные условия, то необходимо использовать динамические группы. С помощью такого подхода можно, например, получить уведомление о сливе топлива только во время движения.
Для контроля двух условий A и B потребуются следующие элементы и настройки:
- Группа Альфа, содержащая объекты, для которых еще не выполнено условие A.
- Группа Бета, содержащая объекты, для которых уже выполнено условие A.
- Уведомление 1, которое настроено на отслеживание группы Альфа и контролирует условие A. Если это условие будет выполнено, то объекты будут исключены из группы Альфа и добавлены в группу Бета.
- Уведомление 2, которое настроено на отслеживание группы Бета и контролирует условие, противоположное условию A. Если это условие будет выполнено, то объекты будут исключены из группы Бета и снова добавлены в группу Альфа.
- Ключевое уведомление 3, которое настроено на отслеживание группы Бета и контролирует условие B. Если это условие будет выполнено, то уведомление выполнит финальное действие (например, уведомит клиента по email).
Схематично данный подход можно изобразить следующим образом:
При необходимости контролировать больше условий количество групп и уведомлений можно увеличивать, например:
Пример 3. Контроль объектов вне особых зон
Предположим, что менеджер хочет получать информацию о нарушениях температурного режима авторефрижераторов, покинувших базу.
Для решения этой задачи сначала необходимо создать геозону, которая соответствует базе, а также две группы объектов, которые можно назвать На базе и На выезде. Далее необходимо создать два уведомления для сортировки объектов по созданным группам. Делается это по аналогии с решением из примера 1. Ниже будет показана настройка только последнего уведомления.
Для контроля температуры потребуется еще одно уведомление под названием Ненормальная температура, которое будет отслеживать группу На выезде. В качестве действия это уведомлением будет, например, отправлять менеджеру электронные письма.
В результате объекты будут динамически перемещаться в нужные группы, а контроль температуры будет происходить только вне базы.
Контроль условий с учетом времени
Комбинируя описанные выше подходы, можно создать разнообразные логические схемы и варианты контроля. Из всех возможных вариантов использования выделяются несколько, которые связаны с учетом времени. Рассмотрим их настройку на примерах.
Пример 4. Срабатывание уведомления один раз в день
Предположим, что клиент хочет получать SMS о первом нажатии тревожной кнопки для всех машин из автопарка в течение рабочего дня.
Чтобы решить эту задачу для одного объекта, необходимо установить значение 1 в поле Максимальное количество срабатываний, а затем указать для этого параметра ограничение по времени с 00:00 по 23:59. Если объектов немного, то можно обойтись одним уведомлением для каждого из них. Однако если объектов много, то придется прибегнуть к динамическим группам, что и будет рассмотрено далее.
Схематично решение этой задачи можно изобразить следующим образом:
Соответственно, для решения потребуются:
- Группа под названием Тревоги не было (группа Альфа на схеме выше), которая содержит все объекты, водители которых еще не нажимали сегодня тревожную кнопку. В полночь в ней должны находиться все объекты автопарка, поэтому нужно их туда поместить изначально.
- Группа Тревога случилась (группа Бета), которая содержит объекты, водители которых нажимали сегодня тревожную кнопку. В полночь эта группа должна быть пустой.
Уведомление Тревога! (уведомление 1), которое настроено на отслеживание группы Тревоги не было и контролирует нажатие тревожной кнопки. Если это условие будет выполнено, то объекты будут исключены из группы Тревоги не было и добавлены в группу Тревога случилась, а также уведомление отправит SMS клиенту.
Уведомление К исходной настройке (уведомление 2) в данном случае будет возвращать все объекта из группы Тревога случилась в группу Тревоги не было ближе к полуночи. Для этого оно должно быть настроено на отслеживание группы Тревога случилась, иметь ограничение по времени (например, с 20:00 по 23:59) и контролировать какое-то условие, которое точно выполнится для всех объектов в конце рабочего дня. Одним из таких условий может быть наличие скорости менее 300 км/ч (при этом уведомление должно срабатывать Для всех сообщений).
Теперь объекты, водители которых нажали тревожную кнопку, будут при первой сработке перемещаться в группу Тревога случилась, для которой контроль тревожной кнопки уже не осуществляется. Следовательно, клиент будет получать SMS только о первой тревоге для каждого объекта. Вечером все объекты будут возвращены в исходную группу.
Пример 5. Отчет по объектам, которые не начали движение к определенному времени
Предположим, что владелец автопарка хочет каждый день получать список машин, которые не начали движение до 8 утра.
Схематично решение этой задачи можно изобразить следующим образом:
Соответственно, для решения потребуются:
- Группа под названием Не начали работу до 8 (группа Альфа на схеме выше), в ней будут содержаться все объекты, которые еще не начали движение. Будем считать, что в полночь в ней должны находиться все объекты автопарка, поэтому нужно их туда поместить изначально.
- Группа Начали до 8 (группа Бета), которая содержит объекты, которые уже начали движение. В полночь эта группа должна быть пустой.
Уведомление Успели начать до 8 (уведомление 1), которое настроено на отслеживание группы Не начали работу до 8 и контролирует появление скорости (то есть начало работы). Если это условие будет выполнено, то объекты будут исключены из группы Не начали работу до 8 и добавлены в группу Начали до 8. Также работу данного уведомления нужно ограничить по времени с 00:00 до 07:59.
Задание Список опоздавших, которое в 08:00 будет отправлять отчет владельцу автопарка об объектах из группы Не начали работу до 8. Групповой отчет может содержать, например, таблицу Последние данные.
- Уведомление К исходной настройке (уведомление 2) в данном случае будет возвращать все объекта из группы Начали до 8 в группу Не начали работу до 8 ближе к полуночи. Делается это по аналогии с одноименным уведомлением из примера 4 выше.
Теперь объекты, которые не начали движение до 08:00, останутся в группе Не начали работу до 8, а затем задание отправит о них отчет владельцу автопарка. Если же какой-то объект начнет движение до 8 утра, то он будет перемещен в группу Начали до 8, поэтому не попадет в отчет о нарушителях. Вечером все объекты будут возвращены в исходную группу.
Пример 6. Контроль длительных состояний (более суток)
Предположим, что менеджеру нужно получить электронное письмо, если объект находится на территории завода более 3 суток (72 часов).
Обычно длительность контролируемого тревожного состояния (в данном случае — это нахождение в геозоне) настраивается через поле Мин. продолжительность тревожного состояния на последней странице настройки уведомления. Максимальное значение для этого поля составляет 24 часа (1440 минут, 86400 секунд). То есть отследить тревожное состояние длительностью 72 часа нельзя без использования динамических групп.
Схематично решение этой задачи можно изобразить следующим образом:
Соответственно, для решения потребуются:
- Геозона, которая соответствует территории завода.
- Группа под названием Вне или внутри <24 часов (группа Альфа на схеме выше), которая изначально содержит все объекты.
- Группа Внутри >24 часов (группа Бета), в которой будут содержаться объекты, которые находятся внутри геозоны 24 часа или более.
- Группа Внутри >48 часов (группа Гамма), в которой будут содержаться объекты, которые находятся внутри геозоны 48 часов или более.
Уведомление Въезд на 1 день (уведомление 1), которое настроено на отслеживание группы Вне или внутри <24 часов и контролирует нахождение в геозоне более 24 часов. Если это условие будет выполнено, то объекты будут исключены из группы Вне или внутри <24 часов и добавлены в группу Внутри >24 часов. Уведомление должно срабатывать При изменении состояния, а Мин. продолжительность тревожного состояния должна быть равна 24 часам (1440 минутам, 86400 секундам).
Уведомление Въезд на 2 дня (уведомление 2), которое настроено на отслеживание группы Внутри >24 часов и контролирует нахождение в геозоне более 48 часов. Если это условие будет выполнено, то объекты будут исключены из группы Внутри >24 часов и добавлены в группу Внутри >48 часов. Уведомление должно срабатывать Для всех сообщений, а Мин. продолжительность тревожного состояния должна быть равна 24 часам (1440 минутам, 86400 секундам).
Уведомление К исходной настройке (уведомление 3) будет возвращать все объекта из групп Внутри >24 часов и Внутри >48 часов в группу Вне или внутри <24 часов, если объект покинул геозону. Уведомление должно срабатывать При изменении состояния.
Уведомление Въезд на 3 дня (уведомление 4), которое настроено на отслеживание группы Внутри >48 часов и контролирует нахождение в геозоне более 72 часов. Если это условие будет выполнено, то объекты будут исключены из группы Внутри >48 часов и добавлены в группу Вне или внутри <24 часов, а также менеджеру отправится электронное письмо. Уведомление должно срабатывать Для всех сообщений, а Мин. продолжительность тревожного состояния должна быть равна 24 часам (1440 минутам, 86400 секундам).
Теперь объекты, которые находились в геозоне в течение одних суток, переместятся из группы Вне или внутри <24 часов в группу Внутри >24 часов, спустя одни сутки они переместятся в группу Внутри >48 часов, а спустя еще одни сутки уведомление отправит электронное письмо менеджеру и переместит объект в исходную группу. Если же в любой момент объекты покинут геозону, то они вернутся в исходную группу Вне или внутри <24 часов.