Отдел продаж
8 800 250 60 77

Контракты статистик данных. СПИК


Контракт данных SpicAddonStatisticsResult

// Результат добавления статистики к сессии построения статистики.
SpicAddonStatisticsResult
{
    // Статус операции.
    SpicStatisticsOperationResult Status

    // Сообщение об ошибке.
    string ErrorText
}

Контракт данных SpicConcreteStatisticsResult

// Результат построения конкретной статистики,
// которая должна отдаваться из менеджера построения статистики.
// Является частью  запроса.
SpicConcreteStatisticsResult
{
    // Информация о ходе построения конкретной статистики.
    SpicStatisticsChunkInfo ChunkInfo

    // Конкретная статистика. Если не получилось построить - null.
    IStatistics Statistics
}

Контракт данных SpicStatisticsChunkInfo

// Информация о построении конкретной статистики.
SpicStatisticsChunkInfo
{
    // Период данной порции статистики.
    SpicDateTimeRange Period

    // Порядковый номер.
    int ChunkNumber

    // Является ли данная порция статистики последней.
    bool IsFinalChunk

    // Состояние задачи.
    SpicStatisticsOperationResult Status

    // Описание ошибки.
    string ErrorText
}

Контракт данных SpicStatisticsSession

// Идентификатор сессии построения статистики В СПИК.
SpicStatisticsSession
{
    // Токен сессии.
    Guid StatisticsSessionId
}

Контракт данных SpicStatisticsSessionRequest

// Запрос на открытие сессии для построения статистики.
SpicStatisticsSessionRequest
{
    // Период построения статистики.
    SpicDateTimeRange Period
       
    // Объект, по которому хотим строить статистику.
    SpicObjectIdentity TargetObject
}

Контракт данных SpicStatisticsSessionResponse

// Результат открытия сессия для построения статистики.
SpicStatisticsSessionResponse
{
    // Сессия.
    SpicStatisticsSession Session

    // Состояние ответа.
    SpicStatisticsOperationResult OperationResult
}

Контракт данных SpicStatisticsOperationResult

// Состояние выполнения операции при построении статистик
SpicStatisticsOperationResult
{ 
    string Value 
}

Параметр Value может принимать следующие значения:

  • Ok - Готово
  • Processing – Еще строится
  • Error – Ошибка
  • None – неизвестно.

Контракт данных SpicDiscreteSensorsStatistics

// Набор статистик по дискретным датчикам
SpicDiscreteSensorsStatistics
{
    // Статистики
    SpicDiscreteSensorStatistics[] Sensors
}

Контракт данных SpicDiscreteSensorsStatisticsResult

// Результат запроса статистики
SpicDiscreteSensorsStatisticsResult
{
    // Информация о состоянии построения порции статистик
    SpicStatisticsChunkInfo ChunkInfo

    // Статистика. Если не получилось построить - null.
    SpicDiscreteSensorsStatistics Statistics
}

Контракт данных SpicDiscreteSensorStatistics

// Статистика по одному сенсору. Каждому Points соответствует определенный дискретный датчик из карточки объекта. Например, если в карточке объекта первым дискретным датчиком указан Зажигание, то в ответе от СПИК он будет соответствовать первой выдаче Points.
SpicDiscreteSensorStatistics
{
    // Набор точек
    SpicDiscreteSensorValuePoint[] Points
}

Контракт данных SpicDiscreteSensorValuePoint

// Точка статистики по дискретному датчику
SpicDiscreteSensorValuePoint
{
    // Момент получения значения
    DateTime Timestamp

    // Значение
    bool Value
}

Контракт данных SpicAnalogSensorValuePoint

// Точка статистики по аналоговому датчику
SpicAnalogSensorValuePoint
{
    // Момент получения значения
    DateTime Timestamp

    // Значение
    double Value
}

Контракт данных SpicFuelFlowStatistics

// Статистика по расходу топлива
SpicFuelFlowStatistics
{
    // Набор статистик по датчикам расхода топлива
    SpicFuelFlowStatisticsSensor[] Sensors

    // Суммарная статистика
    SpicFuelFlowStatisticsSensor Summary
}

Контракт данных SpicFuelFlowStatisticsResult

// Результат запроса статистик
SpicFuelFlowStatisticsResult
{
    // Информация о состоянии построения порции статистик
    SpicStatisticsChunkInfo ChunkInfo
       
    // Статистика. Если не получилось построить - null.
    SpicFuelFlowStatistics Statistics
}

Контракт данных SpicFuelFlowStatisticsSensor

// Статистика по датчику расхода топлива
SpicFuelFlowStatisticsSensor
{
    // Номер датчика
    int SensorNumber

    // Имя датчика
    string SensorTitle

    // Потребление за время движения, в литрах
    double? MovementConsumptionL

    // Потребление топлива за время активной работы двигателя, в литрах
    double? EngineActiveWorkConsumptionL

    // Потребление топлива за время холостой работы двигателя, в литрах
    double? EngineIdleConsumptionL

    // Общее потребление топлива, в литрах
    double? TotalConsumptionVolumeL

    // Общее потребление топлива, в килограммах
    double? TotalConsumptionWeightKg

    // Точки статистики
    SpicAnalogSensorValuePoint[] Points
}

Контракт данных SpicFdStatisticsFuelEventType

// Тип события заправок/сливов топлива
SpicFdStatisticsFuelEventType
{
    string Value
}

Параметр Value может принимать следующие значения:

  • Fueling - Заправка
  • Defueling - Слив
  • None – неизвестно.

Контракт данных SpicFuelingDefuelingStatistics

SpicFuelingDefuelingStatistics
{
    // Начальный объем в литрах.
    double? BeginFuelVolumeL

    // Конечный объем в литрах.
    double? EndFuelVolumeL

    // Минимальный объем в литрах.
    double? MinFuelVolumeL

    // Максимальный объем в литрах.
    double? MaxFuelVolumeL

    // Объем заправок в литрах.
    double? FuelingTotalVolumeL

    // Объемом сливов в литрах.
    double? DefuelingTotalVolumeL

    // Общий расход топлива в литрах.
    double? TotalFuelConsumptionL

// Количество заправок.

    int FuelingCount

    // Количество сливов.
    int DefuelingCount

    // Топливные события.
    SpicFuelingDefuelingStatisticsEvent[] Events
}

Контракт данных SpicFuelingDefuelingStatisticsEvent

SpicFuelingDefuelingStatisticsEvent
{
    // Период происхождения события.
    SpicDateTimeRange Period

    // Период происхождения исходного события (для разделённых событий).
    SpicDateTimeRange OriginalPeriod

    // Время совершения события.
    DateTime Timestamp

    // Тип события.
    SpicFdStatisticsFuelEventType EventType

    // Начальный уровень топлива в литрах.
    double BeginFuelVolumeL

    // Конечный уровень топлива в литрах.
    double EndFuelVolumeL

    // Начальный уровень топлива в литрах для исходного события (для разделённых событий).
    double? OriginalBeginFuelVolumeL

    // Конечный уровень топлива в литрах для исходного события (для разделённых событий).
    double? OriginalEndFuelVolumeL

    // Место происхождения события.
    SpicLocation Location
}

Контракт данных SpicFuelingDefuelingStatisticsResult

// Результат запроса статистик по заправкам и сливам топлива
SpicFuelingDefuelingStatisticsResult
{
    // Информация о состоянии построения порции статистик
    SpicStatisticsChunkInfo ChunkInfo
       
    // Статистика. Если не получилось построить - null.
    SpicFuelingDefuelingStatistics Statistics
}

Контракт данных SpicMotorModesStatistics

// Статистика по режимам работы двигателя
SpicMotorModesStatistics
{
    // Периоды режимов работы
    SpicMotorPeriod[] Periods

    // Время работы двигателя
    TimeSpan EngineOnHours

    // Суммарное время с выключенным двигателем
    TimeSpan EngineOffHours

    // Время активной работы двигателя
    TimeSpan EngineActiveWorkHours

    // Время работы на холостом ходу
    TimeSpan EngineIdleHours
}

Контракт данных SpicMotorModesStatisticsResult

SpicMotorModesStatisticsResult
{
    // Информация о состоянии построения порции статистик
    SpicStatisticsChunkInfo ChunkInfo
       
    // Статистика. Если не получилось построить - null.
    SpicMotorModesStatistics Statistics
}

Контракт данных SpicMotorPeriod

// Период работы двигателя
SpicMotorPeriod
{
    // Тип периода
    // Например, Активная работа, перевозка на трале
    SpicMotorPeriodType TypeId

    // Временные рамки периода
    SpicDateTimeRange Period

    // Состояние двигателя true - двигатель включен, false - иначе
    bool IsIgnitionOn

    // Состояние датчика активной работы, true - датчик активен, false - иначе
    bool IsActiveWork
}

Контракт данных SpicMotorPeriodType

// Тип периода трека.
SpicMotorPeriodType
{
    string Value
}

Параметр Value может принимать следующие значения:

  • Unknown – Не удалось определить
  • Movement - Движение
  • TralMovement – Движение на трале
  • ActiveWorkParking – Активная работа на стоянке
  • ActiveWorkMovement – Активная работа в движении
  • Parking - Стоянка
  • IdleParking  - Стоянка на холостом ходу.
  • Break - Разрыв
  • NoData – Нет данных

Контракт данных SpicNavigationValidationStatistics

// Статистика данных по навигации прошедших предварительную проверку.
SpicNavigationValidationStatistics
{
    // Количество валидных точек
    int ValidPointsCount

    // Количество невалидных точек
    int InvalidPointsCount

    // Точки навигации
    SpicNavigationPoint[] Points
}

Контракт данных SpicNavigationValidationStatisticsResult

// Результат построения статистики по валидации навигационных данных
SpicNavigationValidationStatisticsResult
{
    // Информация о состоянии построения порции статистик
    SpicStatisticsChunkInfo ChunkInfo

    // Статистика. Если не получилось построить - null.
    SpicNavigationValidationStatistics Statistics
}

Контракт данных NavigationFiltrationStatisticsRequest

// Запрос построения статистики по фильтрации навигационных данных
NavigationFiltrationStatisticsRequest
{
    // Сессия статистик
    SpicStatisticsSession Session

    // Настройки построения статистики
    SpicNavigationFiltrationStatisticsSettings Settings
}

Контракт данных SpicLocation

// Координаты
SpicLocation
{
    // Широта
    double Latitude

    // Долгота
    double Longitude
}

Контракт данных SpicNavigation

//Навигация
SpicNavigation
{
    // Координаты.
    SpicLocation Location

    // Высота в метрах
    double? AltitudeMeters

    // Курс (0 == North, 90 == East)
    short? Angle

    // Количество спутников
    byte? SatellitesCount

    // Скорость (Км/ч)
    double? Speed

    // Тип используемой навигационной системы (систем)
    string NavigationSystemType

    // Корректность навигационных данных (GPS Fix от терминала)
    bool? HardwareValidation
}

Параметр NavigationSystemType может принимать следующие значения:

  • Unknown
  • Gps
  • Glonass
  • GpsGlonass
  • Galileo
  • Lbs

Контракт данных SpicNavigationFiltrationStatistics

// Статистика по фильтрации навигационных данных
SpicNavigationFiltrationStatistics
{
    // Точки навигации
    SpicNavigationPoint[] Points
}

Контракт данных SpicNavigationFiltrationStatisticsResult

// Результат построения статистики по фильтрации навигационных данных
SpicNavigationFiltrationStatisticsResult
{
    // Информация о состоянии построения порции статистик
    SpicStatisticsChunkInfo ChunkInfo
       
    // Статистика. Если не получилось построить - null.
    SpicNavigationFiltrationStatistics Statistics
}

Контракт данных SpicNavigationFiltrationStatisticsSettings

// Настройки построения статистики по фильтрации навигационных данных
SpicNavigationFiltrationStatisticsSettings
{
    // Параметры фильтрации точек
    SpicNavigationValidationFilter NavigationValidationFilter

    // Параметры фильтрации отрезков пути
    SpicTrackPeriodsFilter TrackPeriodsFilter
}

Контракт данных SpicNavigationPoint

// Точка навигации
SpicNavigationPoint
{
    // Момент получения данных
    DateTime Timestamp

    // Координаты
    SpicNavigation Navigation

    // Валидность навигационной точки
    bool? IsNavigationValid
}

Контракт данных SpicNavigationValidationFilter

// Параметры фильтрации навигационных данных
SpicNavigationValidationFilter
{
    // Исключить валидные точки
    bool ExcludeValidPoints

    // Исключить невалидные точки
    bool ExcludeInvalidPoints

    // Исключить точки, которые не получилось провалидировать
    bool ExcludeNotValidatedPoints
}

Контракт данных SpicTrackPeriodsFilter

// Параметры фильтрации отрезков пути
SpicTrackPeriodsFilter
{
    // Исключить отскоки
    bool ExcludeRecoilPoints

    // Исключить точки остановок
    bool ExcludeNotMovePoints

    // Включить точки стоянок
    bool IncludeParkingPoints
}

Контракт данных SpicTrackPeriod

//Период движения
SpicTrackPeriod
{
    // Тип периода.
    // Например, движение или стоянка.
    SpicTrackPeriodType Type

    // Временные рамки периода.
    // Периоды "стыкуются" без пропусков, т.е. время начала периода совпадает со временем
    // завершения предыдущего периода.
    SpicDateTimeRange Period
}

Контракт данных SpicTrackPeriodsStatistics

// Статистика по треку
SpicTrackPeriodsStatistics
{
    // Периоды движения
    SpicTrackPeriod[] Periods

    // Отскоки
    SpicTrackRecoil[] Recoils
}

Контракт данных SpicTrackPeriodStatisticsResult

// Результат построения статистики по треку
SpicTrackPeriodStatisticsResult
{
    // Информация о состоянии построения порции статистик
    SpicStatisticsChunkInfo ChunkInfo
       
    // Статистика. Если не получилось построить - null.
    SpicTrackPeriodsStatistics Statistics
}

Контракт данных SpicTrackPeriodType

// Тип периода трека.
SpicTrackPeriodType
{
    string Value
}

Параметр Value может принимать следующие значения:

  • Movement
  • Parking
  • Break
  • NoData
  • Unknown

Контракт данных SpicTrackRecoil

// Отскок
SpicTrackRecoil
{
    // Период времени отскока
    SpicDateTimeRange Period
}

Контракт данных SpicTrackPeriodMileage

SpicTrackPeriodMileage
{
    // Тип периода.
    // Например, движение или стоянка.
    SpicTrackPeriodType Type

    // Временные рамки периода.
    // Периоды "стыкуются" без пропусков, т.е. время начала периода совпадает со временем
    // завершения предыдущего периода.
    SpicDateTimeRange Period

    // Пробег в данном периоде.
    // Вычисляется алгоритмом определения расстояния с учетом кривизны земли.
    double? MileageKm

    // Пробег в рабочее время, км
    double? WorkTimeMileageKm

    // Средняя скорость, км/ч
    double? AverageSpeedKmh

    // Минимальная скорость, км/ч
    double? MinSpeedKmh

    // Максимальная скорость, км/ч
    double? MaxSpeedKmh
}

Контракт данных SpicTrackPeriodsMileageStatistics

// Статистики трека с пробегом по каждому периоду.
SpicTrackPeriodsMileageStatistics
{
    // Пробеги по периодам трэка.
    SpicTrackPeriodMileage[] PeriodsMileage

    // Общее время в движении.
    TimeSpan MovementDuration

    // Общее время на стоянках.
    TimeSpan ParkingDuration

    // Общее время в разрывах.
    TimeSpan BreakDuration

    // Общая продолжительность.
    TimeSpan TotalDuration

    // Пробег в движении, км.
    double? MovementMileageKm

    // Пробег в разрывах, км.
    double? BreakMileageKm

    // Общий пробег, км.
    double? TotalMileageKm

    // Пробег в рабочее время, км.
    double? WorkTimeMileageKm

    // Минимальная скорость, км/ч
    double? MinSpeedKmh

    // Максимальная скорость, км/ч
    double? MaxSpeedKmh
}

Контракт данных SpicTrackPeriodsMileageStatisticsResult

// Результат построения статистики по треку с пробегом по каждому периоду
SpicTrackPeriodsMileageStatisticsResult
{
    // Информация о состоянии построения порции статистик
    SpicStatisticsChunkInfo ChunkInfo

    // Статистика. Если не получилось построить - null.
    SpicTrackPeriodsMileageStatistics Statistics
}

Контракт данных SpicOdometerStatisticsResult

Внимание. В данный момент функционал контракта не доступен на сервере СКАУТ 365.

// Результат построения статистики по величине пробега, определённой по одометру
SpicOdometerStatisticsResult 
{  
    // Пробег, км
    double? MileageKm
      // Сообщение об ошибке. 
    string Error;
}

в json будет полученный ответ будет выглядеть так: 

{ MileageKm: 235.76, Error = null } или так { MileageKm: null, Error = “NoData” }

В ПО выбор датчика определяется следующим образом:
  1. Если есть физические одометры (логический датчик), то берётся первый из них;
  2. Если нет одометров, то берём виртуальный одометр (логический датчик);
  3. Если нет виртуальных одометров, то берём общий пробег по CAN (логический датчик TotalMileage);
  4. Если не получилось выбрать ни одного датчика – возвращаем ошибку NoSensor;
  5. Если получилось выбрать, то переходим к определению значения.
Значение датчика определяется так:
  1. Если за заданный период нет ни одного значения – отдаём ошибку NoData;
  2. Если за заданный период есть хотя бы одно значение – отдаём последнее из них.
Обратите внимание!

Из-за особенностей работы ПО (расчёта статистики с учётом нахлёста в 12 часов), запрашивать данные с использованием статистики SpicOdometerStatisticsResult можно только за сутки. В случае запроса статистики за более короткий промежуток, или в случае отсутствия данных, показания будут переданы с некорректным значением времени.

Например: При запросе с 09.03.2017 00:00 по 10.03.2017 00:00 данных не будет (терминал их ещё не выгрузил), но в базе найдётся значение например за 08.03.2017 17:00 равное 32000 км, оно и будет выдано, но со временем 09.03.2017 00:00.

Чтобы избежать потенциальных проблем и не получить такое значение, рекомендуем делать проверку, получая статистики по периодам движения и стоянок и формируя запрос по статистике Одометра только по уже выгруженным на сервер данным. 

<<Назад                                                       К оглавлению                                                                     Далее>>

Уважаемые партнеры ГК СКАУТ.
Для доступа к Базе Знаний пожалуйста авторизируйтесь на ресурсе СКАУТ-Университет.
В качестве логина используйте свой электронный ящик, а в качестве пароля используйте пароль для доступа к ресурсам СКАУТ-Сайт и СКАУТ-Форум. Если вы не знаете или забыли свой пароль, то вы можете восстановить пароль здесь.
Также в Базе Знаний есть специальная статья, описывающая операцию по восстановлению пароля.