Контракты онлайн-данных с датчиками. СПИК

Контракт сервиса получения онлайн-данных с датчиками

Возвращает

Метод

SpicOnlineDataWithSensorsSubscriptionResponse

Subscribe(SpicOnlineDataWithSensorsSubscriptionRequest request) 
Подписка на получение онлайн-данных с датчиками

SpicOnlineDataWithSensorsOperationState

Unsubscribe(SpicOnlineDataWithSensorsSessionId onlineDataSessionId) 
Отписка от получения онлайн-данных с датчиками

SpicOnlineDataWithSensorsResponse

GetOnlineData(SpicOnlineDataWithSensorsSessionIdonlineDataSessionId) 
Получение онлайн-данных с датчиками

 

Подписка на получение онлайн-данных с датчиками. SpicOnlineDataWithSensorsSubscriptionResponse Subscribe(SpicOnlineDataWithSensorsSubscriptionRequest request)

Принимает:

Request – набор Id объектов мониторинга и набор типов датчиков (ushort[]), которые нужно получать вместе с онлайн-данными (один набор датчиков на все ТС).

Возвращает:

Идентификатор подписки.

Отписка от получения онлайн-данных. SpicOnlineDataWithSensorsOperationState Unsubscribe(SpicOnlineDataWithSensorsSessionId onlineDataSessionId)

Принимает:

onlineDataSessionId – идентификатор сессии получения онлайн-данных.

Возвращает:

Результат операции.

Получение онлайн-данных. SpicOnlineDataWithSensorsResponse GetOnlineData(SpicOnlineDataWithSensorsSessionId onlineDataSessionId)

Принимает:

onlineDataSessionId – идентификатор сессии получения онлайн-данных.

Возвращает:

Онлайн-данные, полученные по идентификатору подписки; содержит коллекцию Sensors. Для каждого датчика указывается его тип (ushort) (такой же, как в запросе), номер (ushort) и значение в строковом виде.

Обратите внимание!

Если в запросе передать несуществующий тип датчика, то ошибки не будет, в ответе передаются только значения настоящих датчиков, имеющихся у данного ТС.

Таблица типов датчиков для передачи в запросе

Датчик

Номер

Analog

10000

Discrete

20000

Speed

30000

OpenCover

30001

Power

30002

Fuel

30004

FuelCounting

30005

температура

30006

EngineSpeed

30007

BarrelRotation

30008

FuelFlow

30009

AlertButton

30010

CleaningEquipmentSensor

30011

PassengerSensor

30012

TruckSensor

30013

AdditionalFuelSensor

30014

Altitude

30015

Ignition

30016

ActiveWork

30017

DrivingSafety

30018

Digital

30019

Accidents

30020

MainPower

30022

BackupPower

30023

DriverId

30024

FuelerId

30025

FuelerSot

30026

FuelerDut

30027

FuelerSect

30028

Angle

30029

Odometer

30030

SateliteCount

30031

TotalFuelConsumption

30032

EngineHours

30033

AxleLoad

30034

ParkingLights

30035

DippedBeam

30036

MainBeam

30037

SeatBelt

30038

CheckEngine

30039

EngineTemperature

30040

Stop

30041

BreakSystem

30042

BatteryCharging

30043

SafetySystem

30044

Pressure

30045

EngineCoolantTemperature

30046

TotalMileage

30047

GsmLevel

30048

Accuracy

30049

BatteryLevel

30050

ExternalPower

30051

Movement

30052

EmergencyLighting

30053

FillingLeftModuleOpening

30054

SwitchingComPump

30055

FillingRightModuleOpening

30056

Примеры реализации:

Пример реализации на C#

public class OnlineDataWithSensorsExample

{

    //заглушка сервиса подписок на получение онлайн данных с датчиками

    private readonly SpicSoapOnlineDataWithSensorsServiceClient _dataServiceClient;

    public OnlineDataWithSensorsExample()

    {

        _dataServiceClient = new SpicSoapOnlineDataWithSensorsServiceClient();

  1. Endpoint.Behaviors.Add(new AuthorizationBehavior());

    }

    /// <summary>

    /// Метод получения онлайн-данных

    /// </summary>

    /// <remarks>Необходимо пройти авторизацию перед вызовом этого метода</remarks>

    /// <param name="unitIds">Идентификаторы объектов, по которым хотим получить онлайн-данные</param>

   /// <param name="sensorTypes">Идентификаторы типов датчиков, по которым хотим получить онлайн-данные</param>

    public SpicOnlineDataWithSensorsCollection GetOnlineDataWithSensors(int[] unitIds, ushort[] sensorTypes)

    {

        var subscription = new SpicOnlineDataWithSensorsSubscriptionRequest { UnitIds = unitIds, SensorTypes = sensorTypes };

        var response = _dataServiceClient.Subscribe(subscription);

        var onlineDataWithSensors = _dataServiceClient.GetOnlineData(new SpicOnlineDataWithSensorsSessionId { Id = response.SessionId.Value.Id });

        return onlineDataWithSensors.OnlineDataWithSensorsCollection;

    }

}

 

Пример реализации на JS

var session = subscribeOnServer(unitIds, sensorTypes);

var onlineDataWithSensors = getOnlineDataOnServerWithSensors(session.Id);

return onlineDataWithSensors;

function subscribeOnServer(unitIds, sensorTypes) {

    return provider.POSTAuthorized(subscribeUrl,

        {

            UnitIds: unitIds,

                            SensorTypes: sensorTypes

        },

        getAuthorizationToken()).response.SessionId;

}

function getOnlineDataOnServerWithSensors(subscriptionId) {

    return provider.POSTAuthorized(getOnlineDataUrl,

        {

            Id: subscriptionId

        },

        getAuthorizationToken()).response.OnlineDataWithSensorsCollection;

}