- {
- start: false,
- authorizeRequests: 0,
- acceptedAuthorizeRequests: 0,
- rejectedAuthorizeRequests: 0,
- startTransactionRequests: 0,
- acceptedStartTransactionRequests: 0,
- rejectedStartTransactionRequests: 0,
- stopTransactionRequests: 0,
- acceptedStopTransactionRequests: 0,
- rejectedStopTransactionRequests: 0,
- skippedConsecutiveTransactions: 0,
- skippedTransactions: 0,
- },
- ]);
+ )} entered in transaction loop while the charging station is not in accepted state`,
+ );
+ return false;
+ }
+ if (this.chargingStation.isChargingStationAvailable() === false) {
+ logger.info(
+ `${this.logPrefix(
+ connectorId,
+ )} entered in transaction loop while the charging station is unavailable`,
+ );
+ return false;
+ }
+ if (this.chargingStation.isConnectorAvailable(connectorId) === false) {
+ logger.info(
+ `${this.logPrefix(
+ connectorId,
+ )} entered in transaction loop while the connector ${connectorId} is unavailable`,
+ );
+ return false;
+ }
+ return true;
+ }
+
+ private async waitChargingStationServiceInitialization(connectorId: number): Promise<void> {
+ let logged = false;
+ while (!this.chargingStation?.ocppRequestService) {
+ if (!logged) {
+ logger.info(
+ `${this.logPrefix(
+ connectorId,
+ )} transaction loop waiting for charging station service to be initialized`,
+ );
+ logged = true;
+ }
+ await sleep(Constants.CHARGING_STATION_ATG_INITIALIZATION_TIME);
+ }
+ }
+
+ private async waitChargingStationAvailable(connectorId: number): Promise<void> {
+ let logged = false;
+ while (!this.chargingStation.isChargingStationAvailable()) {
+ if (!logged) {
+ logger.info(
+ `${this.logPrefix(
+ connectorId,
+ )} transaction loop waiting for charging station to be available`,
+ );
+ logged = true;
+ }
+ await sleep(Constants.CHARGING_STATION_ATG_AVAILABILITY_TIME);
+ }
+ }
+
+ private async waitConnectorAvailable(connectorId: number): Promise<void> {
+ let logged = false;
+ while (!this.chargingStation.isConnectorAvailable(connectorId)) {
+ if (!logged) {
+ logger.info(
+ `${this.logPrefix(
+ connectorId,
+ )} transaction loop waiting for connector ${connectorId} to be available`,
+ );
+ logged = true;
+ }
+ await sleep(Constants.CHARGING_STATION_ATG_AVAILABILITY_TIME);
+ }
+ }
+
+ private initializeConnectorsStatus(): void {
+ 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, this.getConnectorStatus(connectorId));
+ }
+ }
+ }
+ } else {
+ for (const connectorId of this.chargingStation.connectors.keys()) {
+ if (connectorId > 0) {
+ this.connectorsStatus.set(connectorId, this.getConnectorStatus(connectorId));
+ }