Проблематика вопроса: зачастую клиенты фиксируют данные приходящие от Систем мониторинга транспорта в каких-либо собственных информационных системах. Например, это может логистическая система, или собственная 1С.
Решение: интеграция с информационной системой компании при помощи API получения показаний по одометру и топливу. API поможет решить следующие задачи:
Общий принцип работы:
Документация : доступна в интерфейсе Swagger : https://developers.scout-gps.ru/swagger/ui/index#/
Для того, чтобы воспользоваться API требуется выполнить аутентификацию. POST-метод api/auth/token предназначен для получения токена авторизации по данным Вашей учетной записи на сервере СКАУТ-365.
Для получения токена необходимо сделать POST запрос по адресу: https://api.scout-gps.ru/api/auth/token следующего вида:
grant_type=password&username=demo&password=demo&locale=ru&client_id=facac5c1-f966-4ed3-ada2-00cea620cb78
В блоке username необходимо указать логин учетной записи на СКАУТ-365, в блоке password — логин учетной записи. Для примера выше следует заменить поля demo на свои учетные записи. Остальные параметры следует оставить без изменений.
Для авторизации через Swagger необходимо вызвать диалоговое окно авторизации. Сделать это можно нажав пункт меню Expand Operations в любом из доступных методов API (Рисунок 1).
Рисунок 1 — Главная страница Swagger
В правой части раскрывшейся области требуется нажать на иконку с восклицательным знаком (Рисунок 2).
Рисунок 2 — Вызов окна аутентификации
Нажатие на эту иконку вызовет окно аутентификации (Рисунок 3).
Рисунок 3 — Диалоговое окно авторизации
В поля User и Password требуется ввести логин и пароль учётной записи пользователя ПО СКАУТ-Платформа. В выпадающем списке Type необходимо выбрать Basic auth, а в полях ClientId и Secret ввести строку scout-online .
Для того, чтобы получить данные по показаниям одометра или уровню топлива, используя API, в запросе требуется передать уникальный идентификатор объекта мониторинга (Рисунок 4):
Рисунок 4 — Уникальный идентификатор передаваемый в запрос
Чтобы определить этот уникальный идентификатор после запроса на авторизацию требуется воспользоваться методами Units или Terminals (Рисунок 5):
Рисунок 5 — Методы Units и Terminals
С описанием запроса, которые требуется направить сервису, чтобы получить список объектов мониторинга, доступных учётной записи, можно раскрыв описание метода Units в Swagger (Рисунок 6). Для отправки запроса требуется нажать кнопку "Try it out!" ( ).
Рисунок 6 — Метод Units
Метод /statistics/odometer возвращает данные по пробегу за запрошенный интервал. В зависимости от запроса ответ может быть детализирован с точностью до суток внутри заданного интервала.
По каждому интервалу, выводимому в ответе, сервис выводит либо данные пробега по одометру, либо данные пробега по навигации.
Решает он это следующим образом:
С дополнительными особенностями, которые накладываются на обработку данных, получаемых при помощи API можно ознакомиться в статье Особенности обработки статистики по показаниям одометра в API Одометр и топливо.
Метод доступен по адресу: https://api.scout-gps.ru/statistics/odometer
Запрос имеет следующие параметры:
Параметр | Обязательный ли? | Тип | Формат данных | Допустимые значения | Комментарий |
unitID | да | int | Целое число | ID транспортного средства | |
beginDateTime | да |
date-time |
Должно соответствовать одной из масок
|
[1000/01/01 00:00:00, 9999/12/31 23:59:59] |
Начало периода. Если в запросе не указано HH:MM:SS, то сервис считает их равными 00:00:00. |
endDateTime | да |
date-time |
Должно соответствовать одной из масок
|
[1000/01/01 00:00:00, 9999/12/31 23:59:59] |
Конец запроса. Если в запросе не указано HH:MM:SS, то сервис считает их равными 00:00:00. Для запроса с endDateTime > beginDateTime возвращает 400 статус |
olsonID | нет | string |
Таймзона. Чувствителен к регистру. Если в запросе параметр не передан/значение параметра не валидно — сервис рассматривает даты в таймзоне "Europe/Moscow" |
||
interval | нет | string |
|
Дополнительная детализация — тип интервалов, на которые разбивается период beginDateTime..endDateTime для расчета промежуточных показаний одометра.
Как происходит деление периода на интервалы? Границей суток считается время 00:00:00. Таким образом, для периода beginDateTime = 2017/12/05 19:56:01 endDateTime=2017/12/07 10:31:02 будет выделено три интервала: 1) 2017/12/05 19:56:01 ... 2017/12/05 23:59:59 2) 2017/12/06 00:00:00 ... 2017/12/06 23:59:59 3) 2017/12/07 00:00:00 ... 2017/12/07 10:31:02 В ответе сервиса уровень топлива будет указан для границ каждого из трех интервалов. Если параметр не указан, либо указано невалидное значение - сервис вернет данные точно за период beginDateTime..endDateTime (без детализации). Если и в endDateTime и в beginDateTime указана одна и та же дата - сервис вернет данные точно за период beginDateTime..endDateTime (без детализации). |
Пример строки запроса:
curl -X GET --header 'Accept: application/json' --header 'Authorization: Bearer токен авторизации' 'httрs: //арi.sсоut-gps.ru/statistics/odometer?unitID=123456&beginDateTime=2017%2F01%2F01 &endDateTime=2017%2F01%2F01&olsonId=Europe%2FMoscow&interval=day'
С ответами от сервиса можно ознакомиться по ссылке: Ответы на запросы к API Одометр и топливо.
Этот метод возвращает по заданному транспортному средству уровень топлива в зависимости от следующих параметров:
Метод доступен по адресу: https://api.scout-gps.ru/statistics/fuel
Параметры запроса описаны в таблице:
Параметр | Обязательный ли? | Тип | Формат данных | Допустимые значения | Комментарий |
unitID | да | int | Целое число | ID транспортного средства | |
beginDateTime | да |
date-time |
Должно соответствовать одной из масок
|
[1000/01/01 00:00:00, 9999/12/31 23:59:59] |
Начало периода. Если в запросе не указано HH:MM:SS, то сервис считает их равными 00:00:00. |
endDateTime | да |
date-time |
Должно соответствовать одной из масок
|
[1000/01/01 00:00:00, 9999/12/31 23:59:59] |
Конец запроса. Если в запросе не указано HH:MM:SS, то сервис считает их равными 00:00:00. Для запроса с endDateTime > beginDateTime возвращает 400 статус |
olsonID | нет | string |
Таймзона. Чувствителен к регистру. Если в запросе параметр не передан/значение параметра не валидно — сервис рассматривает даты в таймзоне "Europe/Moscow" |
||
interval | нет | string |
|
Дополнительная детализация — тип интервалов, на которые разбивается период beginDateTime..endDateTime для расчета промежуточных показаний одометра.
Как происходит деление периода на интервалы? Границей суток считается время 00:00:00. Таким образом, для периода beginDateTime = 2017/12/05 19:56:01 endDateTime=2017/12/07 10:31:02 будет выделено три интервала: 1) 2017/12/05 19:56:01 ... 2017/12/05 23:59:59 2) 2017/12/06 00:00:00 ... 2017/12/06 23:59:59 3) 2017/12/07 00:00:00 ... 2017/12/07 10:31:02 В ответе сервиса уровень топлива будет указан для границ каждого из трех интервалов. Если параметр не указан, либо указано невалидное значение - сервис вернет данные точно за период beginDateTime..endDateTime (без детализации). Если и в endDateTime и в beginDateTime указана одна и та же дата - сервис вернет данные точно за период beginDateTime..endDateTime (без детализации). |
Пример строки запроса:
curl -X GET --header 'Accept: application/json' --header 'Authorization: Bearer токен авторизации' 'httрs: //api.scout-gps.ru/statistics/fuel?unitID=123456&beginDateTime=2017%2F01%2F01&endDateTime=2017%2F01%2F01&olsonId=Europe%2FMoscow&interval
С ответами от сервиса можно ознакомиться по ссылке: Ответы на запросы к API Одометр и топливо.
Номер материала: 2648
Отправлено: Wed, Dec 19, 2018
Последнее обновление: Mon, Sep 14, 2020
Отправлено: Анисимов Максим Михайлович [m.anisimov@scout-gps.ru]
Online URL: https://kb.scout-gps.ru/article/api-получения-показаний-по-одометру-и-уровню-топлива-2648.html