Интеграция с системой мониторинга транспорта Wialon

Wialon – система для GPS/ГЛОНАСС мониторинга транспорта.

У компаний, использующих платформу Wialon, возникает потребность в извлечении из платформы данных для дальнейшего анализа. Каждодневная выгрузка данных в файл по каждому из объектов и загрузка их в Loginom довольно длительная и рутинная задача. При помощи заранее настроенных REST-запросов и парсинга ответа, аналитик может проводить загрузку данных без больших временных затрат. Подробнее об API Wialon по ссылке.

В данном демопримере описан алгоритм получения данных из Wialon: получение токена, авторизация в сценарии, загрузка данных и их обработка при помощи парсинга json.

Примечание: Демопример имеет ограничение демонстрации всех возможностей при запуске на демостенде (Запустить демо). Рекомендуем установить пример локально.

Запустить демо

Установить локально

Начальная подготовка

Получение токена

Для работы с Wialon Hosting требуется получить токен.

Для этого необходимо перейти по ссылке и указать пользователя и пароль. У пользователя должны быть права для работы с внешними программами. Для получения прав необходимо обратиться в поддержку Wialon Hosting.

После ввода данных, появляется окно «Авторизация успешна» и в адресной строке токен:

http://hosting.wialon.com/login.html?lang=ru&access_token=e**********************************************************************F&user_name=admin&svc_error=0.

Токен необходимо сохранить для дальнейшего использования в сценарии.

Важно: Необходимо сохранять приватность токена. Его публикация дает любому человеку доступ к данным.

Описание алгоритма

1. Начальные данные

Установка значений переменных

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

Переменные пользователя:

Имя Метка Значение
 token Токен e*********************************************************************F
 mask_object Маска наименования объекта Iveco*
 time_from Начало интервала 01.07.2022, 00:00
 time_to Окончание интервала 19.07.2022, 00:00
 count_message Количество сообщений 100

2. Идентификация

Авторизация

С помощью этой подмодели пользователь авторизуется в системе прямо из сценария. Без авторизации невозможно получить данные.

  1. На вход подмодели Авторизация подается токен, который с помощью узла Сборка URL собирается в URL-адрес:

    https://hosting.wialon.com/login.html?lang=ru&wialon_sdk_url=https%3A%2F%2Fhst%2Dapi%2Ewialon%2Ecom&access_token=e*********************************************************************F&user_name=test_loginom_mgr&svc_error=0.

  2. На странице Подключения настроено подключение REST-сервис:

    • URL сервиса: https://hosting.wialon.com/login.html?lang=ru&wialon_sdk_url=https%3A%2F%2Fhst%2Dapi%2Ewialon%2Ecom&access_token=e*********************************************************************F&user_name=test_loginom_mgr&svc_error=0
    • Метод: GET
    • Типа авторизации: Не требуется

    На основе этого подключения в сценарии создан производный узел REST-сервис, на вход которого передается URL, собранный в узле Сборка URL. Настройки узла REST-сервис:

    • переключатель слева от параметра URL-сервиса установлен в положение использования переменных;
    • остальные настройки по умолчанию.
  3. REST-запрос для авторизации отправляет запрос к веб-сервису для авторизации и возвращает ответ в формате json.

  4. С помощью узла Соединение ответа и статуса запроса объединяется строка авторизации и данные о наличии или отсутствии ошибок при выполнении запроса.
  5. Узел Таблица в переменные преобразовывает данные из табличных значений в переменные.
Получение идентификатора сессии

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

right(RegExMatchedExp("eid"":""[a-zA-Z0-9]+", Response), Count(RegExMatchedExp("eid"":""[a-zA-Z0-9]+", Response)) - 6).

Идентификатор сессии – это переменная сессии, посредством которой происходит идентификация клиента:

Имя Метка Значение
 sid Идентификатор сессии 5******************************d

3. Получение идентификаторов объектов

Получение идентификаторов объектов
  1. На вход подмодели Запрос получения ID объектов подается идентификатор сессии и маска автомобиля. Эти параметры объединяются узлом Соединение ID сессии и маски наименования объекта.

  2. С помощью узла Сборка URL объединенные данные собираются в URL-адрес:

    https://hst-api.wialon.com/wialon/ajax.html?sid=5******************************d&svc=core/search_items&params={"spec":{"itemsType":"avl_unit","propName":"sys_name","propValueMask":"Iveco*","sortType":"sys_name","propType":"sys_name,rel_user_creator_name","or_logic":0},"force":1,"flags":1,"from":0,"to":0}.

  3. Узел REST-сервис, созданный на основе ранее настроенного подключения, принимает на вход URL-адрес. Настройки узла:

    • переключатель слева от параметра URL-сервиса установлен в положение использования переменных;
    • остальные настройки по умолчанию.
  4. Узел REST-запрос для получения ID объектов отправляет запрос к веб-сервису и возвращает ответ в формате json.

  5. В узле Таблица в переменные данные о наличии или отсутствии ошибок при выполнении запроса преобразовываются в переменную.
  6. Ответ в json-формате содержит данные об автомобилях, которые подвергаются обработке с помощью подмодели Парсинг JSON.

Информация об объектах:

 Наименование автомобиля  Идентификатор транспорта  Идентификатор класса  Уровень доступа к объекту
Iveco 6** *** **2 2 8** *** *** **7,**
Iveco 1 6** *** **0 2 8** *** *** **7,**
Iveco Daily 1* *** **1 2 5** *** *** **9,**
Iveco Daily1 6** *** **2 2 8** *** *** **7,**

4. Данные о геолокации объектов

Данные о геолокации объектов

Алгоритм получения сообщения от объектов:

  1. На вход подмодели Данные о геолокации объектов подается идентификатор сессии, таблица об автомобилях и переменные, представленные временным интервалом и количеством сообщений.
  2. Идентификатор сессии и информация об автомобилях объединяются в одну таблицу в узле Соединение ID сессии и информации об автомобилях.
  3. Входные переменные подаются на узел Преобразование Даты/времени в UNIX-формат, где данные типа  Дата/время преобразовываются в строковый UNIX-формат (только такой формат времени поддерживается запросами wialon).
  4. В узле Сборка URL и подсчет количества автомобилей идентификаторы сессии и автомобилей собираются в URL-адреса, а также производится подсчет количества автомобилей, соответствующих маске. Выходные данные передаются на вход подмодели Запрос и парсинг.
  5. На входе подмодели Запрос и парсинг создана переменная ID, которая отвечает за номер запроса.
  6. Алгоритм работы подмодели Запрос получения геоданных от объектов такой же, как у рассмотренной ранее подмодели Запрос получения ID объектов. Результат запроса подвергается обработке с помощью подмодели Парсинг JSON.
  7. В подмодели Идентификация запроса проверяется равенство ID с Количеством автомобилей, это сравнение происходит по Циклу до тех пор, пока переменные не будут равными (выполнится запрос по всем автомобилям).
  8. В выходном наборе данных даты UNIX-формата преобразуются в тип  Дата/время.

Сообщения от объектов:

 Наименование автомобиля по id  Номер автомобиля по id  Время регистрации сообщения ...  Долгота  Широта  Высота над уровнем моря
Iveco 6** *** **2 ...
Iveco 1 6** *** **0 17.07.2022, 00:17 ... 39,73 54,62 134,20
... ... ... ... ... ... ...
Iveco Daily 1* *** **1 01.07.2022, 05:02 ... 37,55 55,75 0
... ... ... ... ... ... ...
Iveco Daily1 6** *** **2

Скачайте и откройте файл в Loginom. При необходимости Loginom CE можно скачать бесплатно

Скачать демопример

Минимальные требования к системе:

  • Операционная система: Windows 10 и выше
  • CPU x64: 2 core 1
  • Оперативная память: 4 GB
  • Жесткий диск: 10 GB

1 Поддерживается работа на x64 процессорах Intel Core, AMD FX и более новых, содержащих инструкции SSE4.2 (POPCNT, LZCNT).