X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2FChargingStationUtils.ts;h=d8f67c21460b626875d01be4bae961e93d1c3b78;hb=d4c3e68a1a6321f2f43ef0521e121e827f3eb29b;hp=517a3c9a5e0f40c4e56d9f7ea84cafaf13279793;hpb=cda5d0fb59316951530288baebfaa181261295cb;p=e-mobility-charging-stations-simulator.git diff --git a/src/charging-station/ChargingStationUtils.ts b/src/charging-station/ChargingStationUtils.ts index 517a3c9a..d8f67c21 100644 --- a/src/charging-station/ChargingStationUtils.ts +++ b/src/charging-station/ChargingStationUtils.ts @@ -153,10 +153,42 @@ export class ChargingStationUtils { return connectorBootStatus; } + public static checkTemplateFile( + stationTemplate: ChargingStationTemplate, + logPrefix: string, + templateFile: string + ) { + if (Utils.isNullOrUndefined(stationTemplate)) { + const errorMsg = `Failed to read charging station template file ${templateFile}`; + logger.error(`${logPrefix} ${errorMsg}`); + throw new BaseError(errorMsg); + } + if (Utils.isEmptyObject(stationTemplate)) { + const errorMsg = `Empty charging station information from template file ${templateFile}`; + logger.error(`${logPrefix} ${errorMsg}`); + throw new BaseError(errorMsg); + } + if (Utils.isEmptyObject(stationTemplate.AutomaticTransactionGenerator)) { + stationTemplate.AutomaticTransactionGenerator = { + enable: false, + minDuration: 60, + maxDuration: 120, + minDelayBetweenTwoTransactions: 15, + maxDelayBetweenTwoTransactions: 30, + probabilityOfStart: 1, + stopAfterHours: 0.3, + stopOnConnectionFailure: true, + }; + logger.warn( + `${logPrefix} Empty automatic transaction generator configuration from template file ${templateFile}, set to default values` + ); + } + } + public static checkConnectorsConfiguration( - stationTemplate: ChargingStationTemplate | ChargingStationInfo, - templateFile: string, - logPrefix: string + stationTemplate: ChargingStationTemplate, + logPrefix: string, + templateFile: string ): { configuredMaxConnectors: number; templateMaxConnectors: number; @@ -166,13 +198,13 @@ export class ChargingStationUtils { ChargingStationUtils.getConfiguredNumberOfConnectors(stationTemplate); ChargingStationUtils.checkConfiguredMaxConnectors( configuredMaxConnectors, - templateFile, - logPrefix + logPrefix, + templateFile ); const templateMaxConnectors = ChargingStationUtils.getMaxNumberOfConnectors( stationTemplate.Connectors ); - ChargingStationUtils.checkTemplateMaxConnectors(templateMaxConnectors, templateFile, logPrefix); + ChargingStationUtils.checkTemplateMaxConnectors(templateMaxConnectors, logPrefix, templateFile); const templateMaxAvailableConnectors = stationTemplate?.Connectors[0] ? templateMaxConnectors - 1 : templateMaxConnectors; @@ -330,9 +362,9 @@ export class ChargingStationUtils { } public static warnTemplateKeysDeprecation( - templateFile: string, stationTemplate: ChargingStationTemplate, - logPrefix: string + logPrefix: string, + templateFile: string ) { const templateKeys: { key: string; deprecatedKey: string }[] = [ { key: 'supervisionUrls', deprecatedKey: 'supervisionUrl' }, @@ -342,8 +374,8 @@ export class ChargingStationUtils { ChargingStationUtils.warnDeprecatedTemplateKey( stationTemplate, templateKey.deprecatedKey, - templateFile, logPrefix, + templateFile, `Use '${templateKey.key}' instead` ); ChargingStationUtils.convertDeprecatedTemplateKey( @@ -357,9 +389,11 @@ export class ChargingStationUtils { public static stationTemplateToStationInfo( stationTemplate: ChargingStationTemplate ): ChargingStationInfo { - stationTemplate = Utils.cloneObject(stationTemplate); + stationTemplate = Utils.cloneObject(stationTemplate); delete stationTemplate.power; delete stationTemplate.powerUnit; + delete stationTemplate?.Connectors; + delete stationTemplate?.Evses; delete stationTemplate.Configuration; delete stationTemplate.AutomaticTransactionGenerator; delete stationTemplate.chargeBoxSerialNumberPrefix; @@ -437,15 +471,15 @@ export class ChargingStationUtils { let limit: number, matchingChargingProfile: ChargingProfile; // Get charging profiles for connector and sort by stack level const chargingProfiles = - Utils.cloneObject(chargingStation.getConnectorStatus(connectorId)?.chargingProfiles)?.sort( - (a, b) => b.stackLevel - a.stackLevel - ) ?? []; + Utils.cloneObject( + chargingStation.getConnectorStatus(connectorId)?.chargingProfiles + )?.sort((a, b) => b.stackLevel - a.stackLevel) ?? []; // Get profiles on connector 0 if (chargingStation.getConnectorStatus(0)?.chargingProfiles) { chargingProfiles.push( - ...Utils.cloneObject(chargingStation.getConnectorStatus(0).chargingProfiles).sort( - (a, b) => b.stackLevel - a.stackLevel - ) + ...Utils.cloneObject( + chargingStation.getConnectorStatus(0).chargingProfiles + ).sort((a, b) => b.stackLevel - a.stackLevel) ); } if (Utils.isNotEmptyArray(chargingProfiles)) { @@ -493,8 +527,8 @@ export class ChargingStationUtils { public static getDefaultVoltageOut( currentType: CurrentType, - templateFile: string, - logPrefix: string + logPrefix: string, + templateFile: string ): Voltage { const errorMsg = `Unknown ${currentType} currentOutType in template file ${templateFile}, cannot define default voltage out`; let defaultVoltageOut: number; @@ -523,9 +557,7 @@ export class ChargingStationUtils { ); } - private static getConfiguredNumberOfConnectors( - stationTemplate: ChargingStationTemplate | ChargingStationInfo - ): number { + private static getConfiguredNumberOfConnectors(stationTemplate: ChargingStationTemplate): number { let configuredMaxConnectors: number; if (Utils.isNotEmptyArray(stationTemplate.numberOfConnectors) === true) { const numberOfConnectors = stationTemplate.numberOfConnectors as number[]; @@ -553,8 +585,8 @@ export class ChargingStationUtils { private static checkConfiguredMaxConnectors( configuredMaxConnectors: number, - templateFile: string, - logPrefix: string + logPrefix: string, + templateFile: string ): void { if (configuredMaxConnectors <= 0) { logger.warn( @@ -565,8 +597,8 @@ export class ChargingStationUtils { private static checkTemplateMaxConnectors( templateMaxConnectors: number, - templateFile: string, - logPrefix: string + logPrefix: string, + templateFile: string ): void { if (templateMaxConnectors === 0) { logger.warn( @@ -595,8 +627,8 @@ export class ChargingStationUtils { private static warnDeprecatedTemplateKey( template: ChargingStationTemplate, key: string, - templateFile: string, logPrefix: string, + templateFile: string, logMsgToAppend = '' ): void { if (!Utils.isUndefined(template[key])) {