Snippets

OICP 2.1 Push Charge Detail Record | C#

Created by Gregor Schermuly last modified Julius Poessnecker
1
2
3
4
5
6
7
The service description can be found in the OICP 2.1.

Section:
3.1.5 eRoamingChargeDetailRecord

To download the latest OICP Version, please visit our website:
https://www.hubject.com/downloads/
/// <summary>
/// Create an OICP v2.0 SendChargeDetailRecord request.
/// </summary>
/// <param name="EVSEId">An EVSE identification.</param>
/// <param name="SessionId">The OICP session identification from the Authorize Start request.</param>
/// <param name="PartnerProductId"></param>
/// <param name="SessionStart">The timestamp of the session start.</param>
/// <param name="SessionEnd">The timestamp of the session end.</param>
/// <param name="Identification">An ev customer identification.</param>
/// <param name="PartnerSessionId">An optional partner session identification.</param>
/// <param name="ChargingStart">Optional timestamp of the charging start.</param>
/// <param name="ChargingEnd">Optional timestamp of the charging stop.</param>
/// <param name="MeterValueStart">An optional initial value of the energy meter.</param>
/// <param name="MeterValueEnd">An optional final value of the energy meter.</param>
/// <param name="MeterValuesInBetween">An optional enumeration of meter values during the charging session.</param>
/// <param name="ConsumedEnergy">The optional amount of consumed energy.</param>
/// <param name="MeteringSignature">An optional signature for the metering values.</param>
/// <param name="HubOperatorId">An optional identification of the hub operator.</param>
/// <param name="HubProviderId">An optional identification of the hub provider.</param>
/// <param name="QueryTimeout">An optional timeout for this query.</param>
public async Task<HTTPResponse<eRoamingAcknowledgement>>

    SendChargeDetailRecord(EVSE_Id                      EVSEId,
                           ChargingSession_Id           SessionId,
                           ChargingProduct_Id           PartnerProductId,
                           DateTime                     SessionStart,
                           DateTime                     SessionEnd,
                           AuthorizationIdentification  Identification,
                           eMA_Id                       eMAId                 = null,
                           ChargingSession_Id           PartnerSessionId      = null,
                           DateTime?                    ChargingStart         = null,
                           DateTime?                    ChargingEnd           = null,
                           Double?                      MeterValueStart       = null,
                           Double?                      MeterValueEnd         = null,
                           IEnumerable<Double>          MeterValuesInBetween  = null,
                           Double?                      ConsumedEnergy        = null,
                           String                       MeteringSignature     = null,
                           EVSEOperator_Id              HubOperatorId         = null,
                           EVSP_Id                      HubProviderId         = null,
                           TimeSpan?                    QueryTimeout          = null)

{
    [...]
}
var EVSEOperatorId  = EVSEOperator_Id.Parse("DE*GEF")
var EVSEId          = EVSE_Id.        Parse("DE*GEF*E123456789*1");
var AuthToken       = Auth_Token.     Parse("08152305");

var HubjectCPO      = new CPOClient("api.playground.hubject.com");

Task.Factory.StartNew(async () => {

    var AuthStartResult = await HubjectCPO.
        AuthorizeStart(EVSEOperatorId,
                       AuthToken,
                       EVSEId);

    ConsoleX.WriteLines("AuthStart result:",
                        AuthStartResult.Content.AuthorizationStatus,
                        AuthStartResult.Content.StatusCode.Code,
                        AuthStartResult.Content.StatusCode.Description,
                        AuthStartResult.Content.StatusCode.AdditionalInfo);


    await Task.Delay(1000);


    var AuthStopResult = await HubjectCPO.
        AuthorizeStop(EVSEOperatorId,
                      AuthStartResult.Content.SessionId,
                      AuthToken,
                      EVSEId);

    ConsoleX.WriteLines("AuthStop result:",
                        AuthStopResult.Content.AuthorizationStatus,
                        AuthStopResult.Content.StatusCode.Code,
                        AuthStopResult.Content.StatusCode.Description,
                        AuthStopResult.Content.StatusCode.AdditionalInfo);


    await Task.Delay(1000);


    var SendCDRResult = await HubjectCPO.
        SendChargeDetailRecord(EVSEId:                EVSEId,
                               SessionId:             AuthStartResult.Content.SessionId,
                               PartnerProductId:      ChargingProduct_Id.Parse("AC1"),
                               SessionStart:          DateTime.Now,
                               SessionEnd:            DateTime.Now - TimeSpan.FromHours(3),
                               Identification:        AuthorizationIdentification.FromAuthToken(AuthToken)),
                               PartnerSessionId:      ChargingSession_Id.Parse("0815"),
                               ChargingStart:         DateTime.Now,
                               ChargingEnd:           DateTime.Now - TimeSpan.FromHours(3),
                               MeterValueStart:       123.456,
                               MeterValueEnd:         234.567,
                               MeterValuesInBetween:  Enumeration.Create(123.456, 189.768, 223.312, 234.560, 234.567),
                               ConsumedEnergy:        111.111,
                               QueryTimeout:          TimeSpan.FromSeconds(120));

    ConsoleX.WriteLines("SendCDR result:",
                        SendCDRResult.Content.Result,
                        SendCDRResult.Content.StatusCode.Code,
                        SendCDRResult.Content.StatusCode.Description,
                        SendCDRResult.Content.StatusCode.AdditionalInfo);

}).

// Wait for the task to complete...
Wait();

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.