X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2FAutomaticTransactionGenerator.ts;h=a09ee7a1019b82759b1ed134d2bd5733b4601e20;hb=950b13496d20897da1f8f796077f5066333bb452;hp=eb7876e2b34d16a8efa91bccc72be25dfade3fef;hpb=6d9876e7b9b024879f1463aa7407c6874c5ca06b;p=e-mobility-charging-stations-simulator.git diff --git a/src/charging-station/AutomaticTransactionGenerator.ts b/src/charging-station/AutomaticTransactionGenerator.ts index eb7876e2..a09ee7a1 100644 --- a/src/charging-station/AutomaticTransactionGenerator.ts +++ b/src/charging-station/AutomaticTransactionGenerator.ts @@ -8,12 +8,12 @@ import type { import { RequestCommand } from '../types/ocpp/Requests'; import { AuthorizationStatus, - AuthorizeRequest, - AuthorizeResponse, - StartTransactionRequest, - StartTransactionResponse, + type AuthorizeRequest, + type AuthorizeResponse, + type StartTransactionRequest, + type StartTransactionResponse, StopTransactionReason, - StopTransactionResponse, + type StopTransactionResponse, } from '../types/ocpp/Transaction'; import Constants from '../utils/Constants'; import logger from '../utils/Logger'; @@ -35,11 +35,11 @@ export default class AutomaticTransactionGenerator { automaticTransactionGeneratorConfiguration: AutomaticTransactionGeneratorConfiguration, chargingStation: ChargingStation ) { + this.started = false; this.configuration = automaticTransactionGeneratorConfiguration; this.chargingStation = chargingStation; this.connectorsStatus = new Map(); this.stopConnectors(); - this.started = false; } public static getInstance( @@ -186,11 +186,7 @@ export default class AutomaticTransactionGenerator { this.connectorsStatus.get(connectorId).skippedConsecutiveTransactions = 0; // Start transaction const startResponse = await this.startTransaction(connectorId); - this.connectorsStatus.get(connectorId).startTransactionRequests++; - if (startResponse?.idTagInfo?.status !== AuthorizationStatus.ACCEPTED) { - logger.warn(this.logPrefix(connectorId) + ' start transaction rejected'); - this.connectorsStatus.get(connectorId).rejectedStartTransactionRequests++; - } else { + if (startResponse?.idTagInfo?.status === AuthorizationStatus.ACCEPTED) { // Wait until end of transaction const waitTrxEnd = Utils.getRandomInteger(this.configuration.maxDuration, this.configuration.minDuration) * @@ -202,7 +198,6 @@ export default class AutomaticTransactionGenerator { ' started and will stop in ' + Utils.formatDurationMilliSeconds(waitTrxEnd) ); - this.connectorsStatus.get(connectorId).acceptedStartTransactionRequests++; await Utils.sleep(waitTrxEnd); // Stop transaction logger.info( @@ -226,7 +221,6 @@ export default class AutomaticTransactionGenerator { } this.connectorsStatus.get(connectorId).lastRunDate = new Date(); } - // await this.stopTransaction(connectorId); this.connectorsStatus.get(connectorId).stoppedDate = new Date(); logger.info( this.logPrefix(connectorId) + @@ -284,7 +278,7 @@ export default class AutomaticTransactionGenerator { private async startTransaction( connectorId: number - ): Promise { + ): Promise { const measureId = 'StartTransaction with ATG'; const beginId = PerformanceStatistics.beginMeasure(measureId); let startResponse: StartTransactionResponse; @@ -315,12 +309,13 @@ export default class AutomaticTransactionGenerator { connectorId, idTag, }); + this.handleStartTransactionResponse(connectorId, startResponse); PerformanceStatistics.endMeasure(measureId, beginId); return startResponse; } this.connectorsStatus.get(connectorId).rejectedAuthorizeRequests++; PerformanceStatistics.endMeasure(measureId, beginId); - return authorizeResponse; + return startResponse; } logger.info(startTransactionLogMsg); // Start transaction @@ -331,6 +326,7 @@ export default class AutomaticTransactionGenerator { connectorId, idTag, }); + this.handleStartTransactionResponse(connectorId, startResponse); PerformanceStatistics.endMeasure(measureId, beginId); return startResponse; } @@ -339,6 +335,7 @@ export default class AutomaticTransactionGenerator { StartTransactionRequest, StartTransactionResponse >(this.chargingStation, RequestCommand.START_TRANSACTION, { connectorId }); + this.handleStartTransactionResponse(connectorId, startResponse); PerformanceStatistics.endMeasure(measureId, beginId); return startResponse; } @@ -353,7 +350,7 @@ export default class AutomaticTransactionGenerator { if (this.chargingStation.getConnectorStatus(connectorId)?.transactionStarted === true) { stopResponse = await this.chargingStation.stopTransactionOnConnector(connectorId, reason); this.connectorsStatus.get(connectorId).stopTransactionRequests++; - if (stopResponse.idTagInfo?.status === AuthorizationStatus.ACCEPTED) { + if (stopResponse?.idTagInfo?.status === AuthorizationStatus.ACCEPTED) { this.connectorsStatus.get(connectorId).acceptedStopTransactionRequests++; } else { this.connectorsStatus.get(connectorId).rejectedStopTransactionRequests++; @@ -381,4 +378,17 @@ export default class AutomaticTransactionGenerator { }:` ); } + + private handleStartTransactionResponse( + connectorId: number, + startResponse: StartTransactionResponse + ): void { + this.connectorsStatus.get(connectorId).startTransactionRequests++; + if (startResponse?.idTagInfo?.status === AuthorizationStatus.ACCEPTED) { + this.connectorsStatus.get(connectorId).acceptedStartTransactionRequests++; + } else { + logger.warn(this.logPrefix(connectorId) + ' start transaction rejected'); + this.connectorsStatus.get(connectorId).rejectedStartTransactionRequests++; + } + } }