+ this.lastRunDate = new Date();
+ }
+ await this.stopTransaction(connectorId);
+ logger.info(this.logPrefix(connectorId) + ' stopped on connector');
+ }
+
+ private async startTransaction(connectorId: number): Promise<StartTransactionResponse | AuthorizeResponse> {
+ const measureId = 'StartTransaction with ATG';
+ const beginId = PerformanceStatistics.beginMeasure(measureId);
+ let startResponse: StartTransactionResponse;
+ if (this.chargingStation.hasAuthorizedTags()) {
+ const idTag = this.chargingStation.getRandomIdTag();
+ if (this.chargingStation.getAutomaticTransactionGeneratorRequireAuthorize()) {
+ // Authorize idTag
+ const authorizeResponse = await this.chargingStation.ocppRequestService.sendAuthorize(connectorId, idTag);
+ if (authorizeResponse?.idTagInfo?.status === AuthorizationStatus.ACCEPTED) {
+ logger.info(this.logPrefix(connectorId) + ' start transaction for idTag ' + idTag);
+ // Start transaction
+ startResponse = await this.chargingStation.ocppRequestService.sendStartTransaction(connectorId, idTag);
+ PerformanceStatistics.endMeasure(measureId, beginId);
+ return startResponse;
+ }
+ PerformanceStatistics.endMeasure(measureId, beginId);
+ return authorizeResponse;
+ }
+ logger.info(this.logPrefix(connectorId) + ' start transaction for idTag ' + idTag);
+ // Start transaction
+ startResponse = await this.chargingStation.ocppRequestService.sendStartTransaction(connectorId, idTag);
+ PerformanceStatistics.endMeasure(measureId, beginId);
+ return startResponse;
+ }
+ logger.info(this.logPrefix(connectorId) + ' start transaction without an idTag');
+ startResponse = await this.chargingStation.ocppRequestService.sendStartTransaction(connectorId);
+ PerformanceStatistics.endMeasure(measureId, beginId);
+ return startResponse;