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

 

Контракт данных 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.

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

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

//Статистика по аналоговым датчикам

public class SpicAnalogSensorsStatistics
{
	//Статистики по отдельным датчикам	
	public SpicAnalogSensorStatistics[] Sensors
}

// Статистика по одному аналоговому датчику
public class SpicAnalogSensorStatistics
{
	//Коллекция значений
	public SpicAnalogSensorValuePoint[] Points

	//Номер датчика
        public ushort SensorNumber

	//Название датчика
	public string SensorName
}

// Запрос статистик по аналоговым датчикам
public class SpicAnalogSensorsStatisticsRequest
{
	//Сессия запроса статистик
        public SpicStatisticsSession Session
    
	//Настройки датчиков (необязательно)
        public SpicAnalogSensorsStatisticsSettings Settings
}

//Настройки запроса аналоговых датчиков
public class SpicAnalogSensorsStatisticsSettings
{
	//Коллекция номеров запрашиваемых датчиков (Если null или пустая коллекция - то будут запрошены все аналоговые датчики)
        public int[] SensorNumbers
}

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

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

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

 

Вернуться к списку контрактов