X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2FAutomaticTransactionGenerator.ts;h=b806d5cf0044dfbd8ea473c7c52267412d39ce49;hb=ccb1d6e97cc0248cd96a9505cf5e8f037d66984c;hp=a916000f1634d73d27d2c01e8b1a61d27165ab78;hpb=68c993d5b34c191022256f26d4e95e5f3b9974d4;p=e-mobility-charging-stations-simulator.git diff --git a/src/charging-station/AutomaticTransactionGenerator.ts b/src/charging-station/AutomaticTransactionGenerator.ts index a916000f..b806d5cf 100644 --- a/src/charging-station/AutomaticTransactionGenerator.ts +++ b/src/charging-station/AutomaticTransactionGenerator.ts @@ -2,17 +2,21 @@ import { AuthorizationStatus, + AuthorizeRequest, AuthorizeResponse, + StartTransactionRequest, StartTransactionResponse, StopTransactionReason, + StopTransactionRequest, StopTransactionResponse, } from '../types/ocpp/Transaction'; +import { MeterValuesRequest, RequestCommand } from '../types/ocpp/Requests'; import type ChargingStation from './ChargingStation'; import Constants from '../utils/Constants'; +import { MeterValuesResponse } from '../types/ocpp/Responses'; import { OCPP16ServiceUtils } from './ocpp/1.6/OCPP16ServiceUtils'; import PerformanceStatistics from '../performance/PerformanceStatistics'; -import { RequestCommand } from '../types/ocpp/Requests'; import { Status } from '../types/AutomaticTransactionGenerator'; import Utils from '../utils/Utils'; import logger from '../utils/Logger'; @@ -35,13 +39,13 @@ export default class AutomaticTransactionGenerator { } public static getInstance(chargingStation: ChargingStation): AutomaticTransactionGenerator { - if (!AutomaticTransactionGenerator.instances.has(chargingStation.id)) { + if (!AutomaticTransactionGenerator.instances.has(chargingStation.hashId)) { AutomaticTransactionGenerator.instances.set( - chargingStation.id, + chargingStation.hashId, new AutomaticTransactionGenerator(chargingStation) ); } - return AutomaticTransactionGenerator.instances.get(chargingStation.id); + return AutomaticTransactionGenerator.instances.get(chargingStation.hashId); } public start(): void { @@ -270,28 +274,28 @@ export default class AutomaticTransactionGenerator { let startResponse: StartTransactionResponse; if (this.chargingStation.hasAuthorizedTags()) { const idTag = this.chargingStation.getRandomIdTag(); - if (this.chargingStation.getAutomaticTransactionGeneratorRequireAuthorize()) { + if (this.getRequireAuthorize()) { this.chargingStation.getConnectorStatus(connectorId).authorizeIdTag = idTag; // Authorize idTag const authorizeResponse: AuthorizeResponse = - (await this.chargingStation.ocppRequestService.sendMessageHandler( - RequestCommand.AUTHORIZE, - { - idTag, - } - )) as AuthorizeResponse; + await this.chargingStation.ocppRequestService.requestHandler< + AuthorizeRequest, + AuthorizeResponse + >(this.chargingStation, RequestCommand.AUTHORIZE, { + idTag, + }); this.connectorsStatus.get(connectorId).authorizeRequests++; if (authorizeResponse?.idTagInfo?.status === AuthorizationStatus.ACCEPTED) { this.connectorsStatus.get(connectorId).acceptedAuthorizeRequests++; logger.info(this.logPrefix(connectorId) + ' start transaction for idTag ' + idTag); // Start transaction - startResponse = (await this.chargingStation.ocppRequestService.sendMessageHandler( - RequestCommand.START_TRANSACTION, - { - connectorId, - idTag, - } - )) as StartTransactionResponse; + startResponse = await this.chargingStation.ocppRequestService.requestHandler< + StartTransactionRequest, + StartTransactionResponse + >(this.chargingStation, RequestCommand.START_TRANSACTION, { + connectorId, + idTag, + }); PerformanceStatistics.endMeasure(measureId, beginId); return startResponse; } @@ -301,21 +305,21 @@ export default class AutomaticTransactionGenerator { } logger.info(this.logPrefix(connectorId) + ' start transaction for idTag ' + idTag); // Start transaction - startResponse = (await this.chargingStation.ocppRequestService.sendMessageHandler( - RequestCommand.START_TRANSACTION, - { - connectorId, - idTag, - } - )) as StartTransactionResponse; + startResponse = await this.chargingStation.ocppRequestService.requestHandler< + StartTransactionRequest, + StartTransactionResponse + >(this.chargingStation, RequestCommand.START_TRANSACTION, { + connectorId, + idTag, + }); PerformanceStatistics.endMeasure(measureId, beginId); return startResponse; } logger.info(this.logPrefix(connectorId) + ' start transaction without an idTag'); - startResponse = (await this.chargingStation.ocppRequestService.sendMessageHandler( - RequestCommand.START_TRANSACTION, - { connectorId } - )) as StartTransactionResponse; + startResponse = await this.chargingStation.ocppRequestService.requestHandler< + StartTransactionRequest, + StartTransactionResponse + >(this.chargingStation, RequestCommand.START_TRANSACTION, { connectorId }); PerformanceStatistics.endMeasure(measureId, beginId); return startResponse; } @@ -341,22 +345,24 @@ export default class AutomaticTransactionGenerator { connectorId, this.chargingStation.getEnergyActiveImportRegisterByTransactionId(transactionId) ); - await this.chargingStation.ocppRequestService.sendTransactionEndMeterValues( + await this.chargingStation.ocppRequestService.requestHandler< + MeterValuesRequest, + MeterValuesResponse + >(this.chargingStation, RequestCommand.METER_VALUES, { connectorId, transactionId, - transactionEndMeterValue - ); + meterValue: transactionEndMeterValue, + }); } - stopResponse = (await this.chargingStation.ocppRequestService.sendMessageHandler( - RequestCommand.STOP_TRANSACTION, - { - transactionId, - meterStop: - this.chargingStation.getEnergyActiveImportRegisterByTransactionId(transactionId), - idTag: this.chargingStation.getTransactionIdTag(transactionId), - reason, - } - )) as StopTransactionResponse; + stopResponse = await this.chargingStation.ocppRequestService.requestHandler< + StopTransactionRequest, + StopTransactionResponse + >(this.chargingStation, RequestCommand.STOP_TRANSACTION, { + transactionId, + meterStop: this.chargingStation.getEnergyActiveImportRegisterByTransactionId(transactionId), + idTag: this.chargingStation.getTransactionIdTag(transactionId), + reason, + }); this.connectorsStatus.get(connectorId).stopTransactionRequests++; } else { logger.warn( @@ -369,6 +375,12 @@ export default class AutomaticTransactionGenerator { return stopResponse; } + private getRequireAuthorize(): boolean { + return ( + this.chargingStation.stationInfo?.AutomaticTransactionGenerator?.requireAuthorize ?? true + ); + } + private logPrefix(connectorId?: number): string { if (connectorId) { return Utils.logPrefix(