From 239194e9867eaea7d34fc3c8d3bff3360113d8dc Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Thu, 6 Jun 2024 16:36:50 +0200 Subject: [PATCH] fix: reset authorize fields connector status after reservation MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérôme Benoit --- src/charging-station/Helpers.ts | 12 ++++++++---- src/charging-station/index.ts | 1 + .../ocpp/1.6/OCPP16IncomingRequestService.ts | 12 +++++++++++- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/charging-station/Helpers.ts b/src/charging-station/Helpers.ts index 15ba379b..9d67e930 100644 --- a/src/charging-station/Helpers.ts +++ b/src/charging-station/Helpers.ts @@ -405,6 +405,13 @@ export const initializeConnectorsMapStatus = ( } } +export const resetAuthorizeConnectorStatus = (connectorStatus: ConnectorStatus): void => { + connectorStatus.idTagLocalAuthorized = false + connectorStatus.idTagAuthorized = false + delete connectorStatus.localAuthorizeIdTag + delete connectorStatus.authorizeIdTag +} + export const resetConnectorStatus = (connectorStatus: ConnectorStatus | undefined): void => { if (connectorStatus == null) { return @@ -415,14 +422,11 @@ export const resetConnectorStatus = (connectorStatus: ConnectorStatus | undefine chargingProfile => chargingProfile.transactionId !== connectorStatus.transactionId ) : [] - connectorStatus.idTagLocalAuthorized = false - connectorStatus.idTagAuthorized = false + resetAuthorizeConnectorStatus(connectorStatus) connectorStatus.transactionRemoteStarted = false connectorStatus.transactionStarted = false delete connectorStatus.transactionStart delete connectorStatus.transactionId - delete connectorStatus.localAuthorizeIdTag - delete connectorStatus.authorizeIdTag delete connectorStatus.transactionIdTag connectorStatus.transactionEnergyActiveImportRegisterValue = 0 delete connectorStatus.transactionBeginMeterValue diff --git a/src/charging-station/index.ts b/src/charging-station/index.ts index 8d8a83c3..1a5f955f 100644 --- a/src/charging-station/index.ts +++ b/src/charging-station/index.ts @@ -14,5 +14,6 @@ export { hasReservationExpired, prepareChargingProfileKind, removeExpiredReservations, + resetAuthorizeConnectorStatus, resetConnectorStatus } from './Helpers.js' diff --git a/src/charging-station/ocpp/1.6/OCPP16IncomingRequestService.ts b/src/charging-station/ocpp/1.6/OCPP16IncomingRequestService.ts index 96fb41ab..6e12e0a5 100644 --- a/src/charging-station/ocpp/1.6/OCPP16IncomingRequestService.ts +++ b/src/charging-station/ocpp/1.6/OCPP16IncomingRequestService.ts @@ -26,6 +26,7 @@ import { getConnectorChargingProfiles, prepareChargingProfileKind, removeExpiredReservations, + resetAuthorizeConnectorStatus, setConfigurationKeyValue } from '../../../charging-station/index.js' import { OCPPError } from '../../../exception/index.js' @@ -1661,6 +1662,12 @@ export class OCPP16IncomingRequestService extends OCPPIncomingRequestService { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion commandPayload.expiryDate = convertToDate(commandPayload.expiryDate)! const { reservationId, idTag, connectorId } = commandPayload + if (!chargingStation.hasConnector(connectorId)) { + logger.error( + `${chargingStation.logPrefix()} Trying to reserve a non existing connector id ${connectorId}` + ) + return OCPP16Constants.OCPP_RESERVATION_RESPONSE_REJECTED + } let response: OCPP16ReserveNowResponse try { if (connectorId > 0 && !chargingStation.isConnectorAvailable(connectorId)) { @@ -1673,7 +1680,10 @@ export class OCPP16IncomingRequestService extends OCPPIncomingRequestService { return OCPP16Constants.OCPP_RESERVATION_RESPONSE_REJECTED } await removeExpiredReservations(chargingStation) - switch (chargingStation.getConnectorStatus(connectorId)?.status) { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const connectorStatus = chargingStation.getConnectorStatus(connectorId)! + resetAuthorizeConnectorStatus(connectorStatus) + switch (connectorStatus.status) { case OCPP16ChargePointStatus.Faulted: response = OCPP16Constants.OCPP_RESERVATION_RESPONSE_FAULTED break -- 2.43.0