Интеграция с системой мониторинга транспорта 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. Идентификация
С помощью этой подмодели пользователь авторизуется в системе прямо из сценария. Без авторизации невозможно получить данные.
На вход подмодели Авторизация подается токен, который с помощью узла Сборка 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
.На странице Подключения настроено подключение 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-сервиса установлен в положение использования переменных;
- остальные настройки по умолчанию.
- URL сервиса:
REST-запрос для авторизации отправляет запрос к веб-сервису для авторизации и возвращает ответ в формате json.
- С помощью узла Соединение ответа и статуса запроса объединяется строка авторизации и данные о наличии или отсутствии ошибок при выполнении запроса.
- Узел Таблица в переменные преобразовывает данные из табличных значений в переменные.
Алгоритм работы подмодели Получение ID сессии такой же, как и у Авторизации. Ответ содержит данные об идентификаторе сессии, который извлекается узлом Извлечение ID сессии, с помощью следующей функции:
right(RegExMatchedExp("eid"":""[a-zA-Z0-9]+", Response), Count(RegExMatchedExp("eid"":""[a-zA-Z0-9]+", Response)) - 6)
.
Идентификатор сессии – это переменная сессии, посредством которой происходит идентификация клиента:
Имя | Метка | Значение |
---|---|---|
sid | Идентификатор сессии | 5******************************d |
3. Получение идентификаторов объектов
На вход подмодели Запрос получения ID объектов подается идентификатор сессии и маска автомобиля. Эти параметры объединяются узлом Соединение ID сессии и маски наименования объекта.
С помощью узла Сборка URL объединенные данные собираются в URL-адрес:
https://hst-api.wialon.com/wialon/ajax.html?sid=5******************************d&svc=core/search_items¶ms={"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}
.Узел REST-сервис, созданный на основе ранее настроенного подключения, принимает на вход URL-адрес. Настройки узла:
- переключатель слева от параметра URL-сервиса установлен в положение использования переменных;
- остальные настройки по умолчанию.
Узел REST-запрос для получения ID объектов отправляет запрос к веб-сервису и возвращает ответ в формате json.
- В узле Таблица в переменные данные о наличии или отсутствии ошибок при выполнении запроса преобразовываются в переменную.
- Ответ в 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. Данные о геолокации объектов
Алгоритм получения сообщения от объектов:
- На вход подмодели Данные о геолокации объектов подается идентификатор сессии, таблица об автомобилях и переменные, представленные временным интервалом и количеством сообщений.
- Идентификатор сессии и информация об автомобилях объединяются в одну таблицу в узле Соединение ID сессии и информации об автомобилях.
- Входные переменные подаются на узел Преобразование Даты/времени в UNIX-формат, где данные типа Дата/время преобразовываются в строковый UNIX-формат (только такой формат времени поддерживается запросами wialon).
- В узле Сборка URL и подсчет количества автомобилей идентификаторы сессии и автомобилей собираются в URL-адреса, а также производится подсчет количества автомобилей, соответствующих маске. Выходные данные передаются на вход подмодели Запрос и парсинг.
- На входе подмодели Запрос и парсинг создана переменная ID, которая отвечает за номер запроса.
- Алгоритм работы подмодели Запрос получения геоданных от объектов такой же, как у рассмотренной ранее подмодели Запрос получения ID объектов. Результат запроса подвергается обработке с помощью подмодели Парсинг JSON.
- В подмодели Идентификация запроса проверяется равенство ID с Количеством автомобилей, это сравнение происходит по Циклу до тех пор, пока переменные не будут равными (выполнится запрос по всем автомобилям).
- В выходном наборе данных даты 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).