From 1fa9df8ce0e186387ecaa80efb9f40180fc36a7d Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Thu, 6 Jun 2024 21:57:22 +0200 Subject: [PATCH 1/1] fix: fix date handling connectorsStatus configuration file section MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérôme Benoit --- src/charging-station/ChargingStation.ts | 8 +++- src/charging-station/Helpers.ts | 62 ++++++++++++++++--------- 2 files changed, 47 insertions(+), 23 deletions(-) diff --git a/src/charging-station/ChargingStation.ts b/src/charging-station/ChargingStation.ts index 20223052..6b194f80 100644 --- a/src/charging-station/ChargingStation.ts +++ b/src/charging-station/ChargingStation.ts @@ -131,6 +131,7 @@ import { hasFeatureProfile, hasReservationExpired, initializeConnectorsMapStatus, + prepareDatesInConnectorStatus, propagateSerialNumber, setChargingStationOptions, stationTemplateToStationInfo, @@ -1472,7 +1473,10 @@ export class ChargingStation extends EventEmitter { private initializeConnectorsOrEvsesFromFile (configuration: ChargingStationConfiguration): void { if (configuration.connectorsStatus != null && configuration.evsesStatus == null) { for (const [connectorId, connectorStatus] of configuration.connectorsStatus.entries()) { - this.connectors.set(connectorId, clone(connectorStatus)) + this.connectors.set( + connectorId, + prepareDatesInConnectorStatus(clone(connectorStatus)) + ) } } else if (configuration.evsesStatus != null && configuration.connectorsStatus == null) { for (const [evseId, evseStatusConfiguration] of configuration.evsesStatus.entries()) { @@ -1484,7 +1488,7 @@ export class ChargingStation extends EventEmitter { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion evseStatusConfiguration.connectorsStatus!.map((connectorStatus, connectorId) => [ connectorId, - connectorStatus + prepareDatesInConnectorStatus(connectorStatus) ]) ) }) diff --git a/src/charging-station/Helpers.ts b/src/charging-station/Helpers.ts index 804eb7a1..8f9d833a 100644 --- a/src/charging-station/Helpers.ts +++ b/src/charging-station/Helpers.ts @@ -327,27 +327,6 @@ export const checkStationInfoConnectorStatus = ( } } -export const buildConnectorsMap = ( - connectors: Record, - logPrefix: string, - templateFile: string -): Map => { - const connectorsMap = new Map() - if (getMaxNumberOfConnectors(connectors) > 0) { - for (const connector in connectors) { - const connectorStatus = connectors[connector] - const connectorId = convertToInt(connector) - checkStationInfoConnectorStatus(connectorId, connectorStatus, logPrefix, templateFile) - connectorsMap.set(connectorId, clone(connectorStatus)) - } - } else { - logger.warn( - `${logPrefix} Charging station information from template ${templateFile} with no connectors, cannot build connectors map` - ) - } - return connectorsMap -} - export const setChargingStationOptions = ( stationInfo: ChargingStationInfo, options?: ChargingStationOptions @@ -379,6 +358,27 @@ export const setChargingStationOptions = ( return stationInfo } +export const buildConnectorsMap = ( + connectors: Record, + logPrefix: string, + templateFile: string +): Map => { + const connectorsMap = new Map() + if (getMaxNumberOfConnectors(connectors) > 0) { + for (const connector in connectors) { + const connectorStatus = connectors[connector] + const connectorId = convertToInt(connector) + checkStationInfoConnectorStatus(connectorId, connectorStatus, logPrefix, templateFile) + connectorsMap.set(connectorId, clone(connectorStatus)) + } + } else { + logger.warn( + `${logPrefix} Charging station information from template ${templateFile} with no connectors, cannot build connectors map` + ) + } + return connectorsMap +} + export const initializeConnectorsMapStatus = ( connectors: Map, logPrefix: string @@ -435,6 +435,26 @@ export const resetConnectorStatus = (connectorStatus: ConnectorStatus | undefine delete connectorStatus.transactionBeginMeterValue } +export const prepareDatesInConnectorStatus = ( + connectorStatus: ConnectorStatus +): ConnectorStatus => { + if (connectorStatus.reservation != null) { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + connectorStatus.reservation.expiryDate = convertToDate(connectorStatus.reservation.expiryDate)! + } + if (isNotEmptyArray(connectorStatus.chargingProfiles)) { + connectorStatus.chargingProfiles = connectorStatus.chargingProfiles.map(chargingProfile => { + chargingProfile.chargingSchedule.startSchedule = convertToDate( + chargingProfile.chargingSchedule.startSchedule + ) + chargingProfile.validFrom = convertToDate(chargingProfile.validFrom) + chargingProfile.validTo = convertToDate(chargingProfile.validTo) + return chargingProfile + }) + } + return connectorStatus +} + export const createBootNotificationRequest = ( stationInfo: ChargingStationInfo, bootReason: BootReasonEnumType = BootReasonEnumType.PowerUp -- 2.34.1