Получение данных из Wialon Hosting через HTTP запросы (Remote API)

Обмен - Интеграция с WEB

Статья будет полезна для быстрого старта работы с Wialon Hosting. Здесь я опишу основные принципы работы с системой Wialon через Remote API.

 

1. Старт работы с Wialon hosting

 

Для работы с Wialon hosting прежде всего потребуется получение Токена.

Для этого переходим по адресу:  http://hosting.wialon.com/login.html?client_id=wialon&access_type=0xffff&activation_time=0&duration=%E2%80%94%202592000&lang=ru&flags=0x1

 

Указываем Пользователя и пароль. У этого пользователя должны быть права для работы с внешними программами. Если прав нет нужно обратиться в поддержку Wialon hosting.

После ввода данных , появляется окно «Авторизация успешна» и в адресной строке появится наш Токен : http://hosting.wialon.com/login.html?lang=ru&access_token=ea8fc6f1fd68c344d7e77773b01d7e6893CBDA276C4017B6A5CB2C7C1BCAA70B6F84AFF&user_name=admin&svc_error=0. Токен сохраняем в удобном для Вас месте.

 

2. Получение SID 

 

Любой запрос к серверу Wialon должен содержать SID - уникальный идентификатор сессии. Чтобы его получить нужно выполнить следующий запрос:

              

               СерверАГ = "hst-api.wialon.com";        
               имяВыходногоФайла = ПолучитьимяВременногоФайла();
               ssl = Новый ЗащищенноеСоединениеOpenSSL();
               Заголовки = Новый Соответствие();
               Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded");
               HTTPСоединение = Новый HTTPСоединение(СерверАГ,,,,,,ssl );

                              
               Результат=HTTPСоединение.Получить("wialon/ajax.html?svc=token/login&params={""token"":"" ea8fc6f1fd68c344d7e77773b01d7e6893CBDA276C4017B6A5CB2C7C1BCAA70B6F84AFF ""}", имяВыходногоФайла);

             Сервер wialon вернет Вам SID. SID обнуляется ,если на сервер за 5 минут не поступило ни одного запроса с этим SID. 

 

 

3. Получение списка техники :

         СерверАГ = "hst-api.wialon.com";

        имяВыходногоФайла = ПолучитьимяВременногоФайла();

        ssl = Новый ЗащищенноеСоединениеOpenSSL();

        Заголовки = Новый Соответствие();

        Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded");

        HTTPСоединение = Новый HTTPСоединение(СерверАГ,,,,,,ssl );



        HTTPСоединение.Получить("wialon/ajax.html?svc=core/search_items&params={""spec"":{""itemsType"":""avl_unit"",""propName"":""sys_name"",""propValueMask"":""*"",""sortType"":""sys_name""},""force"":1,""flags"":""0x00000001"",""from"":0,""to"":0}&sid=1fd68c344324е678601d7e6893CB");

 

Запрос вернет список техники с ID.

 

 

 

4. Получение пробега и данных по расходу топлива за период.

 

Для получения каких-либо данных, в системе Wialon есть отчеты (отдельной функции для получения данных по ресурсам нет).  Чтобы сформировать отчет через  запрос нужно знать ID отчета .

 

Получение ID отчета :


 

HTTPСоединение.Получить("wialon/ajax.html?svc=core/search_items&params={""spec"":{""itemsType"":""avl_resource"",""propName"":""reporttemplates"",""propValueMask"":""*"",""sortType"":""reporttemplates""},""force"":1,""flags"":""0x00002001"",""from"":0,""to"":0}&sid=1fd68c344324е678601d7e6893CB");

Результат запроса:

 

{"searchSpec":{"itemsType":"avl_resource","propName":"reporttemplates","propValueMask":"*","sortType":"reporttemplates","propType":"","or_logic":"0"},

"dataFlags":8193,

"totalItemsCount":1,

"indexFrom":0,

"indexTo":0,

"items":[

{"nm":"admin",

"cls":3,

"id":14971447, - это ID отчета

"mu":0,

"rep":

{

"17":{"id":17,"n":"ОТЧЕТ по ГЕОЗОНАМ","ct":"avl_unit_group","c":30356},

"18":{"id":18,"n":"Сводный отчет ГазПром","ct":"avl_unit","c":61003}, - Это ID шаблона

"19":{"id":19,"n":"Отчет по котельной","ct":"avl_unit","c":23997},

 

Для каждого пользователя системы у отчета будет свой ID и свой ID шаблона. В данном случае мне нужен отчет «Сводный отчет ГазПром» с ID шаблона 18 и ID ресурса отчетов, для моего пользователя, ID 14971447.

 

Получение данных по датчикам (выполнение отчета):

 

reportObjectId:12370291 – это ID автомобиля, который мы узнали из запроса по списоку техники

 

               Дт1 = Дата(2017,9,5,8,0,0);  - Дата начала

               Дт2 = Дата(2017,9,5,20,0,0); - Дата окончания

 

Даты в системе Wialon  хранятся в формате UNIX-time с часовым поясом – GMT0. У запроса  «report/exec_report» есть параметр с часовым поясом “tzOffset”, но в моих запросах он , почему –то , не отрабатывает, поэтому я сам корректирую часовой пояс:   

 

               пДТ1 = Формат(Дт1 - Дата(1970,1,1,1,0,0) - 3600 * 4, "ЧГ=0") ; - 3600 * 4 (корректировка на 4 часа);
               пДТ2 = Формат(Дт2 - Дата(1970,1,1,1,0,0)- 3600 * 4, "ЧГ=0");
              
               HTTPСоединение.Получить("wialon/ajax.html?svc=report/exec_report&params={""reportResourceId"":14971447,""reportTemplateId"":18,""reportObjectId"":12370291,""reportObjectSecId"":0,""interval"":{""from"":"+пДТ1+",""to"":"+пДТ2+",""flags"":0} }&sid=1fd68c344324е678601d7e6893CB”);

 

После получения данных рекомендуется закрывать сесию :

HTTPСоединение.Получить("wialon/ajax.html?svc=core/logout&params={}&sid=1fd68c344324е678601d7e6893CB);

 

 

 

_______________________________________________

Это общий синтаксис работы с сервером Wialon , описание всех функций  с примерами есть  в документации к нему:  https://sdk.wialon.com/wiki/ru/sidebar/remoteapi/apiref/reqformat/reqformat.

 

К статье прикладываю обработку по работе с ПО «Автограф» и “Wialon Hosting” через HTTP запросы. Обработка работает на конфигурации 1С:УАТ и служит заготовкой для интеграции . Обработка не универсальная , и чтобы она заработала, нужно будет прописать в модуле обработки  ID отчетов и токен.  

 

Скачать файлы

Наименование Файл Версия Размер
Получение данных из Wialon Hosting через HTTP запросы (Remote API).:
.epf 21,37Kb
12.09.17
6
.epf 21,37Kb 6 Скачать

См. также

Комментарии
1. fzt fzt (fzt) 09.10.17 10:38 Сейчас в теме
Каково время жизни токена?
2. max pik (maxopik2) 46 10.10.17 12:04 Сейчас в теме
(1) Токен живет месяц. Потом его нужно получать заново либо через API , либо руками, как написано в статье
3. Анатолий (aka Любитель XML) 13.10.17 17:56 Сейчас в теме
(0) а есть пример как выгрузить в систему заявку с несколькими маршрутами?
4. max pik (maxopik2) 46 16.10.17 10:21 Сейчас в теме
Примера нет, не было такой потребности
Оставьте свое сообщение