+ if (
+ chargingStation.getConnectorStatus(connectorId).transactionRemoteStarted &&
+ chargingStation.getAuthorizeRemoteTxRequests() &&
+ chargingStation.getMayAuthorizeAtRemoteStart() &&
+ !chargingStation.getConnectorStatus(connectorId).idTagLocalAuthorized &&
+ !chargingStation.getConnectorStatus(connectorId).idTagAuthorized
+ ) {
+ logger.error(
+ chargingStation.logPrefix() +
+ ' Trying to start a transaction with a not authorized idTag ' +
+ chargingStation.getConnectorStatus(connectorId).authorizeIdTag +
+ ' on connector Id ' +
+ connectorId.toString()
+ );
+ await this.resetConnectorOnStartTransactionError(chargingStation, connectorId);
+ return;
+ }
+ if (
+ chargingStation.getConnectorStatus(connectorId).idTagAuthorized &&
+ chargingStation.getConnectorStatus(connectorId).authorizeIdTag !== requestPayload.idTag
+ ) {
+ logger.error(
+ chargingStation.logPrefix() +
+ ' Trying to start a transaction with an idTag ' +
+ requestPayload.idTag +
+ ' different from the authorize request one ' +
+ chargingStation.getConnectorStatus(connectorId).authorizeIdTag +
+ ' on connector Id ' +
+ connectorId.toString()
+ );
+ await this.resetConnectorOnStartTransactionError(chargingStation, connectorId);
+ return;
+ }
+ if (
+ chargingStation.getConnectorStatus(connectorId).idTagLocalAuthorized &&
+ chargingStation.getConnectorStatus(connectorId).localAuthorizeIdTag !== requestPayload.idTag
+ ) {
+ logger.error(
+ chargingStation.logPrefix() +
+ ' Trying to start a transaction with an idTag ' +
+ requestPayload.idTag +
+ ' different from the local authorized one ' +
+ chargingStation.getConnectorStatus(connectorId).localAuthorizeIdTag +
+ ' on connector Id ' +
+ connectorId.toString()
+ );
+ await this.resetConnectorOnStartTransactionError(chargingStation, connectorId);
+ return;
+ }
+ if (chargingStation.getConnectorStatus(connectorId)?.transactionStarted) {
+ logger.debug(
+ chargingStation.logPrefix() +
+ ' Trying to start a transaction on an already used connector ' +
+ connectorId.toString() +
+ ': %j',
+ chargingStation.getConnectorStatus(connectorId)
+ );
+ return;
+ }
+ if (
+ chargingStation.getConnectorStatus(connectorId)?.status !==
+ OCPP16ChargePointStatus.AVAILABLE &&
+ chargingStation.getConnectorStatus(connectorId)?.status !== OCPP16ChargePointStatus.PREPARING
+ ) {
+ logger.error(
+ `${chargingStation.logPrefix()} Trying to start a transaction on connector ${connectorId.toString()} with status ${
+ chargingStation.getConnectorStatus(connectorId)?.status
+ }`
+ );
+ return;
+ }
+ if (!Number.isInteger(payload.transactionId)) {
+ logger.warn(
+ `${chargingStation.logPrefix()} Trying to start a transaction on connector ${connectorId.toString()} with a non integer transaction Id ${
+ payload.transactionId
+ }, converting to integer`
+ );
+ payload.transactionId = Utils.convertToInt(payload.transactionId);
+ }