// Результат добавления статистики к сессии построения статистики. SpicAddonStatisticsResult { // Статус операции. SpicStatisticsOperationResult Status // Сообщение об ошибке. string ErrorText }
// Результат построения конкретной статистики, // которая должна отдаваться из менеджера построения статистики. // Является частью запроса. SpicConcreteStatisticsResult { // Информация о ходе построения конкретной статистики. SpicStatisticsChunkInfo ChunkInfo // Конкретная статистика. Если не получилось построить - null. IStatistics Statistics }
// Информация о построении конкретной статистики. SpicStatisticsChunkInfo { // Период данной порции статистики. SpicDateTimeRange Period // Порядковый номер. int ChunkNumber // Является ли данная порция статистики последней. bool IsFinalChunk // Состояние задачи. SpicStatisticsOperationResult Status // Описание ошибки. string ErrorText }
// Идентификатор сессии построения статистики В СПИК. SpicStatisticsSession { // Токен сессии. Guid StatisticsSessionId }
// Запрос на открытие сессии для построения статистики. SpicStatisticsSessionRequest { // Период построения статистики. SpicDateTimeRange Period // Объект, по которому хотим строить статистику. SpicObjectIdentity TargetObject }
// Результат открытия сессия для построения статистики. SpicStatisticsSessionResponse { // Сессия. SpicStatisticsSession Session // Состояние ответа. SpicStatisticsOperationResult OperationResult }
// Состояние выполнения операции при построении статистик SpicStatisticsOperationResult { string Value }
Параметр Value может принимать следующие значения:
// Набор статистик по дискретным датчикам SpicDiscreteSensorsStatistics { // Статистики SpicDiscreteSensorStatistics[] Sensors }
// Результат запроса статистики SpicDiscreteSensorsStatisticsResult { // Информация о состоянии построения порции статистик SpicStatisticsChunkInfo ChunkInfo // Статистика. Если не получилось построить - null. SpicDiscreteSensorsStatistics Statistics }
// Статистика по одному сенсору. Каждому Points соответствует определенный дискретный датчик из карточки объекта. Например, если в карточке объекта первым дискретным датчиком указан Зажигание, то в ответе от СПИК он будет соответствовать первой выдаче Points. SpicDiscreteSensorStatistics { // Набор точек SpicDiscreteSensorValuePoint[] Points }
// Точка статистики по дискретному датчику SpicDiscreteSensorValuePoint { // Момент получения значения DateTime Timestamp // Значение bool Value }
// Точка статистики по аналоговому датчику SpicAnalogSensorValuePoint { // Момент получения значения DateTime Timestamp // Значение double Value }
// Статистика по расходу топлива SpicFuelFlowStatistics { // Набор статистик по датчикам расхода топлива SpicFuelFlowStatisticsSensor[] Sensors // Суммарная статистика SpicFuelFlowStatisticsSensor Summary }
// Результат запроса статистик SpicFuelFlowStatisticsResult { // Информация о состоянии построения порции статистик SpicStatisticsChunkInfo ChunkInfo // Статистика. Если не получилось построить - null. SpicFuelFlowStatistics Statistics }
// Статистика по датчику расхода топлива SpicFuelFlowStatisticsSensor { // Номер датчика int SensorNumber // Имя датчика string SensorTitle // Потребление за время движения, в литрах double? MovementConsumptionL // Потребление топлива за время активной работы двигателя, в литрах double? EngineActiveWorkConsumptionL // Потребление топлива за время холостой работы двигателя, в литрах double? EngineIdleConsumptionL // Общее потребление топлива, в литрах double? TotalConsumptionVolumeL // Общее потребление топлива, в килограммах double? TotalConsumptionWeightKg // Точки статистики SpicAnalogSensorValuePoint[] Points }
// Тип события заправок/сливов топлива SpicFdStatisticsFuelEventType { string Value }
Параметр Value может принимать следующие значения:
SpicFuelingDefuelingStatistics { // Начальный объем в литрах. double? BeginFuelVolumeL // Конечный объем в литрах. double? EndFuelVolumeL // Минимальный объем в литрах. double? MinFuelVolumeL // Максимальный объем в литрах. double? MaxFuelVolumeL // Объем заправок в литрах. double? FuelingTotalVolumeL // Объемом сливов в литрах. double? DefuelingTotalVolumeL // Общий расход топлива в литрах. double? TotalFuelConsumptionL // Количество заправок. int FuelingCount // Количество сливов. int DefuelingCount // Топливные события. SpicFuelingDefuelingStatisticsEvent[] Events }
SpicFuelingDefuelingStatisticsEvent { // Период происхождения события. SpicDateTimeRange Period // Период происхождения исходного события (для разделённых событий). SpicDateTimeRange OriginalPeriod // Время совершения события. DateTime Timestamp // Тип события. SpicFdStatisticsFuelEventType EventType // Начальный уровень топлива в литрах. double BeginFuelVolumeL // Конечный уровень топлива в литрах. double EndFuelVolumeL // Начальный уровень топлива в литрах для исходного события (для разделённых событий). double? OriginalBeginFuelVolumeL // Конечный уровень топлива в литрах для исходного события (для разделённых событий). double? OriginalEndFuelVolumeL // Место происхождения события. SpicLocation Location }
// Результат запроса статистик по заправкам и сливам топлива SpicFuelingDefuelingStatisticsResult { // Информация о состоянии построения порции статистик SpicStatisticsChunkInfo ChunkInfo // Статистика. Если не получилось построить - null. SpicFuelingDefuelingStatistics Statistics }
// Статистика по режимам работы двигателя SpicMotorModesStatistics { // Периоды режимов работы SpicMotorPeriod[] Periods // Время работы двигателя TimeSpan EngineOnHours // Суммарное время с выключенным двигателем TimeSpan EngineOffHours // Время активной работы двигателя TimeSpan EngineActiveWorkHours // Время работы на холостом ходу TimeSpan EngineIdleHours }
SpicMotorModesStatisticsResult { // Информация о состоянии построения порции статистик SpicStatisticsChunkInfo ChunkInfo // Статистика. Если не получилось построить - null. SpicMotorModesStatistics Statistics }
// Период работы двигателя SpicMotorPeriod { // Тип периода // Например, Активная работа, перевозка на трале SpicMotorPeriodType TypeId // Временные рамки периода SpicDateTimeRange Period // Состояние двигателя true - двигатель включен, false - иначе bool IsIgnitionOn // Состояние датчика активной работы, true - датчик активен, false - иначе bool IsActiveWork }
// Тип периода трека. SpicMotorPeriodType { string Value }
Параметр Value может принимать следующие значения:
// Статистика данных по навигации прошедших предварительную проверку. SpicNavigationValidationStatistics { // Количество валидных точек int ValidPointsCount // Количество невалидных точек int InvalidPointsCount // Точки навигации SpicNavigationPoint[] Points }
// Результат построения статистики по валидации навигационных данных SpicNavigationValidationStatisticsResult { // Информация о состоянии построения порции статистик SpicStatisticsChunkInfo ChunkInfo // Статистика. Если не получилось построить - null. SpicNavigationValidationStatistics Statistics }
// Запрос построения статистики по фильтрации навигационных данных NavigationFiltrationStatisticsRequest { // Сессия статистик SpicStatisticsSession Session // Настройки построения статистики SpicNavigationFiltrationStatisticsSettings Settings }
// Координаты SpicLocation { // Широта double Latitude // Долгота double Longitude }
//Навигация SpicNavigation { // Координаты. SpicLocation Location // Высота в метрах double? AltitudeMeters // Курс (0 == North, 90 == East) short? Angle // Количество спутников byte? SatellitesCount // Скорость (Км/ч) double? Speed // Тип используемой навигационной системы (систем) string NavigationSystemType // Корректность навигационных данных (GPS Fix от терминала) bool? HardwareValidation }
Параметр NavigationSystemType может принимать следующие значения:
// Статистика по фильтрации навигационных данных SpicNavigationFiltrationStatistics { // Точки навигации SpicNavigationPoint[] Points }
// Результат построения статистики по фильтрации навигационных данных SpicNavigationFiltrationStatisticsResult { // Информация о состоянии построения порции статистик SpicStatisticsChunkInfo ChunkInfo // Статистика. Если не получилось построить - null. SpicNavigationFiltrationStatistics Statistics }
// Настройки построения статистики по фильтрации навигационных данных SpicNavigationFiltrationStatisticsSettings { // Параметры фильтрации точек SpicNavigationValidationFilter NavigationValidationFilter // Параметры фильтрации отрезков пути SpicTrackPeriodsFilter TrackPeriodsFilter }
// Точка навигации SpicNavigationPoint { // Момент получения данных DateTime Timestamp // Координаты SpicNavigation Navigation // Валидность навигационной точки bool? IsNavigationValid }
// Параметры фильтрации навигационных данных SpicNavigationValidationFilter { // Исключить валидные точки bool ExcludeValidPoints // Исключить невалидные точки bool ExcludeInvalidPoints // Исключить точки, которые не получилось провалидировать bool ExcludeNotValidatedPoints }
// Параметры фильтрации отрезков пути SpicTrackPeriodsFilter { // Исключить отскоки bool ExcludeRecoilPoints // Исключить точки остановок bool ExcludeNotMovePoints // Включить точки стоянок bool IncludeParkingPoints }
//Период движения SpicTrackPeriod { // Тип периода. // Например, движение или стоянка. SpicTrackPeriodType Type // Временные рамки периода. // Периоды "стыкуются" без пропусков, т.е. время начала периода совпадает со временем // завершения предыдущего периода. SpicDateTimeRange Period }
// Статистика по треку SpicTrackPeriodsStatistics { // Периоды движения SpicTrackPeriod[] Periods // Отскоки SpicTrackRecoil[] Recoils }
// Результат построения статистики по треку SpicTrackPeriodStatisticsResult { // Информация о состоянии построения порции статистик SpicStatisticsChunkInfo ChunkInfo // Статистика. Если не получилось построить - null. SpicTrackPeriodsStatistics Statistics }
// Тип периода трека. SpicTrackPeriodType { string Value }
Параметр Value может принимать следующие значения:
// Отскок SpicTrackRecoil { // Период времени отскока SpicDateTimeRange Period }
SpicTrackPeriodMileage { // Тип периода. // Например, движение или стоянка. SpicTrackPeriodType Type // Временные рамки периода. // Периоды "стыкуются" без пропусков, т.е. время начала периода совпадает со временем // завершения предыдущего периода. SpicDateTimeRange Period // Пробег в данном периоде. // Вычисляется алгоритмом определения расстояния с учетом кривизны земли. double? MileageKm // Пробег в рабочее время, км double? WorkTimeMileageKm // Средняя скорость, км/ч double? AverageSpeedKmh // Минимальная скорость, км/ч double? MinSpeedKmh // Максимальная скорость, км/ч double? MaxSpeedKmh }
// Статистики трека с пробегом по каждому периоду. SpicTrackPeriodsMileageStatistics { // Пробеги по периодам трэка. SpicTrackPeriodMileage[] PeriodsMileage // Общее время в движении. TimeSpan MovementDuration // Общее время на стоянках. TimeSpan ParkingDuration // Общее время в разрывах. TimeSpan BreakDuration // Общая продолжительность. TimeSpan TotalDuration // Пробег в движении, км. double? MovementMileageKm // Пробег в разрывах, км. double? BreakMileageKm // Общий пробег, км. double? TotalMileageKm // Пробег в рабочее время, км. double? WorkTimeMileageKm // Минимальная скорость, км/ч double? MinSpeedKmh // Максимальная скорость, км/ч double? MaxSpeedKmh }
// Результат построения статистики по треку с пробегом по каждому периоду SpicTrackPeriodsMileageStatisticsResult { // Информация о состоянии построения порции статистик SpicStatisticsChunkInfo ChunkInfo // Статистика. Если не получилось построить - null. SpicTrackPeriodsMileageStatistics Statistics }
// Результат построения статистики по величине пробега, определённой по одометру SpicOdometerStatisticsResult { // Пробег, км double? MileageKm // Сообщение об ошибке. string Error; }
в json будет полученный ответ будет выглядеть так:
{ MileageKm: 235.76, Error = null } или так { MileageKm: null, Error = “NoData” }
В ПО выбор датчика определяется следующим образом:
Значение датчика определяется так:
Из-за особенностей работы ПО (расчёта статистики с учётом нахлёста в 12 часов), запрашивать данные с использованием статистики SpicOdometerStatisticsResult можно только за сутки. В случае запроса статистики за более короткий промежуток, или в случае отсутствия данных, показания будут переданы с некорректным значением времени.
Например: При запросе с 09.03.2017 00:00 по 10.03.2017 00:00 данных не будет (терминал их ещё не выгрузил), но в базе найдётся значение например за 08.03.2017 17:00 равное 32000 км, оно и будет выдано, но со временем 09.03.2017 00:00.
Чтобы избежать потенциальных проблем и не получить такое значение, рекомендуем делать проверку, получая статистики по периодам движения и стоянок и формируя запрос по статистике Одометра только по уже выгруженным на сервер данным.
//Статистика по аналоговым датчикам 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 }
// Результат запроса статистик по аналоговым датчикам public class SpicAnalogSensorsStatisticsResult { // Информация о состоянии построения порции статистик public SpicStatisticsChunkInfo ChunkInfo // Статистика. Если не получилось построить - null. public SpicAnalogSensorsStatistics Statistics }
Номер материала: 492
Отправлено: Wed, Sep 12, 2018
Последнее обновление: Wed, Feb 26, 2020
Отправлено: Анисимов Максим Михайлович [m.anisimov@scout-gps.ru]
Online URL: https://kb.scout-gps.ru/article/Контракты-статистик-данных-СПИК-492.html