X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2FAutomaticTransactionGenerator.ts;h=d928a623d27c3567b28c1b392cd49520caefa436;hb=34eeb1fb097b9eda12531ff9024d2f9c0e627a28;hp=aa2012dfac33eae26a49dc86b688bda0e6d26c28;hpb=aaf2bf9c2ec7712394d7ab9da12449262d894e60;p=e-mobility-charging-stations-simulator.git diff --git a/src/charging-station/AutomaticTransactionGenerator.ts b/src/charging-station/AutomaticTransactionGenerator.ts index aa2012df..d928a623 100644 --- a/src/charging-station/AutomaticTransactionGenerator.ts +++ b/src/charging-station/AutomaticTransactionGenerator.ts @@ -2,7 +2,7 @@ import { AsyncResource } from 'node:async_hooks'; -import { AuthorizedTagsCache, type ChargingStation, ChargingStationUtils } from './internal'; +import { type ChargingStation, ChargingStationUtils, IdTagsCache } from './internal'; import { BaseError } from '../exception'; // import { PerformanceStatistics } from '../performance'; import { PerformanceStatistics } from '../performance/PerformanceStatistics'; @@ -33,7 +33,6 @@ export class AutomaticTransactionGenerator extends AsyncResource { public readonly configuration: AutomaticTransactionGeneratorConfiguration; public started: boolean; private readonly chargingStation: ChargingStation; - private idTagIndex: number; private constructor( automaticTransactionGeneratorConfiguration: AutomaticTransactionGeneratorConfiguration, @@ -43,7 +42,6 @@ export class AutomaticTransactionGenerator extends AsyncResource { this.started = false; this.configuration = automaticTransactionGeneratorConfiguration; this.chargingStation = chargingStation; - this.idTagIndex = 0; this.connectorsStatus = new Map(); this.initializeConnectorsStatus(); } @@ -134,17 +132,37 @@ export class AutomaticTransactionGenerator extends AsyncResource { this.connectorsStatus.clear(); this.initializeConnectorsStatus(); } - for (const connectorId of this.chargingStation.connectors.keys()) { - if (connectorId > 0) { - this.startConnector(connectorId); + if (this.chargingStation.hasEvses) { + for (const [evseId, evseStatus] of this.chargingStation.evses) { + if (evseId > 0) { + for (const connectorId of evseStatus.connectors.keys()) { + this.startConnector(connectorId); + } + } + } + } else { + for (const connectorId of this.chargingStation.connectors.keys()) { + if (connectorId > 0) { + this.startConnector(connectorId); + } } } } private stopConnectors(): void { - for (const connectorId of this.chargingStation.connectors.keys()) { - if (connectorId > 0) { - this.stopConnector(connectorId); + if (this.chargingStation.hasEvses) { + for (const [evseId, evseStatus] of this.chargingStation.evses) { + if (evseId > 0) { + for (const connectorId of evseStatus.connectors.keys()) { + this.stopConnector(connectorId); + } + } + } + } else { + for (const connectorId of this.chargingStation.connectors.keys()) { + if (connectorId > 0) { + this.stopConnector(connectorId); + } } } } @@ -233,16 +251,16 @@ export class AutomaticTransactionGenerator extends AsyncResource { Utils.getRandomInteger(this.configuration.maxDuration, this.configuration.minDuration) * 1000; logger.info( - `${this.logPrefix(connectorId)} transaction ${this.chargingStation + `${this.logPrefix(connectorId)} transaction started with id ${this.chargingStation .getConnectorStatus(connectorId) - ?.transactionId?.toString()} started and will stop in ${Utils.formatDurationMilliSeconds( + ?.transactionId?.toString()} and will stop in ${Utils.formatDurationMilliSeconds( waitTrxEnd )}` ); await Utils.sleep(waitTrxEnd); // Stop transaction logger.info( - `${this.logPrefix(connectorId)} stop transaction ${this.chargingStation + `${this.logPrefix(connectorId)} stop transaction with id ${this.chargingStation .getConnectorStatus(connectorId) ?.transactionId?.toString()}` ); @@ -297,22 +315,45 @@ export class AutomaticTransactionGenerator extends AsyncResource { } private initializeConnectorsStatus(): void { - for (const connectorId of this.chargingStation.connectors.keys()) { - if (connectorId > 0) { - this.connectorsStatus.set(connectorId, { - start: false, - authorizeRequests: 0, - acceptedAuthorizeRequests: 0, - rejectedAuthorizeRequests: 0, - startTransactionRequests: 0, - acceptedStartTransactionRequests: 0, - rejectedStartTransactionRequests: 0, - stopTransactionRequests: 0, - acceptedStopTransactionRequests: 0, - rejectedStopTransactionRequests: 0, - skippedConsecutiveTransactions: 0, - skippedTransactions: 0, - }); + if (this.chargingStation.hasEvses) { + for (const [evseId, evseStatus] of this.chargingStation.evses) { + if (evseId > 0) { + for (const connectorId of evseStatus.connectors.keys()) { + this.connectorsStatus.set(connectorId, { + start: false, + authorizeRequests: 0, + acceptedAuthorizeRequests: 0, + rejectedAuthorizeRequests: 0, + startTransactionRequests: 0, + acceptedStartTransactionRequests: 0, + rejectedStartTransactionRequests: 0, + stopTransactionRequests: 0, + acceptedStopTransactionRequests: 0, + rejectedStopTransactionRequests: 0, + skippedConsecutiveTransactions: 0, + skippedTransactions: 0, + }); + } + } + } + } else { + for (const connectorId of this.chargingStation.connectors.keys()) { + if (connectorId > 0) { + this.connectorsStatus.set(connectorId, { + start: false, + authorizeRequests: 0, + acceptedAuthorizeRequests: 0, + rejectedAuthorizeRequests: 0, + startTransactionRequests: 0, + acceptedStartTransactionRequests: 0, + rejectedStartTransactionRequests: 0, + stopTransactionRequests: 0, + acceptedStopTransactionRequests: 0, + rejectedStopTransactionRequests: 0, + skippedConsecutiveTransactions: 0, + skippedTransactions: 0, + }); + } } } } @@ -323,8 +364,8 @@ export class AutomaticTransactionGenerator extends AsyncResource { const measureId = 'StartTransaction with ATG'; const beginId = PerformanceStatistics.beginMeasure(measureId); let startResponse: StartTransactionResponse; - if (this.chargingStation.hasAuthorizedTags()) { - const idTag = AuthorizedTagsCache.getInstance().getIdTag( + if (this.chargingStation.hasIdTags()) { + const idTag = IdTagsCache.getInstance().getIdTag( this.configuration?.idTagDistribution, this.chargingStation, connectorId @@ -404,7 +445,7 @@ export class AutomaticTransactionGenerator extends AsyncResource { const transactionId = this.chargingStation.getConnectorStatus(connectorId)?.transactionId; logger.warn( `${this.logPrefix(connectorId)} stopping a not started transaction${ - !Utils.isNullOrUndefined(transactionId) ? ` ${transactionId?.toString()}` : '' + !Utils.isNullOrUndefined(transactionId) ? ` with id ${transactionId?.toString()}` : '' }` ); } @@ -419,7 +460,7 @@ export class AutomaticTransactionGenerator extends AsyncResource { private logPrefix = (connectorId?: number): string => { return Utils.logPrefix( ` ${this.chargingStation.stationInfo.chargingStationId} | ATG${ - connectorId !== undefined ? ` on connector #${connectorId.toString()}` : '' + !Utils.isNullOrUndefined(connectorId) ? ` on connector #${connectorId.toString()}` : '' }:` ); };