X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2FChargingStationUtils.ts;h=24556120b4b9db9862dfae478ce3fcb468e2a309;hb=10572f6c7fcc6787c8ce3e8529b88d9c0b021a10;hp=60e143faaa51c55a470b453fe623d3379dc12370;hpb=51c83d6f833f27f9990c17fc380ab5ee618894b1;p=e-mobility-charging-stations-simulator.git diff --git a/src/charging-station/ChargingStationUtils.ts b/src/charging-station/ChargingStationUtils.ts index 60e143fa..24556120 100644 --- a/src/charging-station/ChargingStationUtils.ts +++ b/src/charging-station/ChargingStationUtils.ts @@ -5,9 +5,10 @@ import { fileURLToPath } from 'url'; import moment from 'moment'; import BaseError from '../exception/BaseError'; -import type ChargingStationInfo from '../types/ChargingStationInfo'; -import ChargingStationTemplate, { +import type { ChargingStationInfo } from '../types/ChargingStationInfo'; +import { AmpereUnits, + type ChargingStationTemplate, CurrentType, Voltage, } from '../types/ChargingStationTemplate'; @@ -17,11 +18,10 @@ import type { ChargingProfile, ChargingSchedulePeriod } from '../types/ocpp/Char import { StandardParametersKey } from '../types/ocpp/Configuration'; import { MeterValueMeasurand, MeterValuePhase } from '../types/ocpp/MeterValues'; import { - BootNotificationRequest, + type BootNotificationRequest, IncomingRequestCommand, RequestCommand, } from '../types/ocpp/Requests'; -import { WebSocketCloseEventStatusString } from '../types/WebSocket'; import { WorkerProcessType } from '../types/Worker'; import Configuration from '../utils/Configuration'; import Constants from '../utils/Constants'; @@ -109,16 +109,13 @@ export class ChargingStationUtils { } } - public static getConfiguredNumberOfConnectors( - index: number, - stationTemplate: ChargingStationTemplate - ): number { + public static getConfiguredNumberOfConnectors(stationTemplate: ChargingStationTemplate): number { let configuredMaxConnectors: number; - if (!Utils.isEmptyArray(stationTemplate.numberOfConnectors)) { + if (Utils.isEmptyArray(stationTemplate.numberOfConnectors) === false) { const numberOfConnectors = stationTemplate.numberOfConnectors as number[]; - // Distribute evenly the number of connectors - configuredMaxConnectors = numberOfConnectors[(index - 1) % numberOfConnectors.length]; - } else if (!Utils.isUndefined(stationTemplate.numberOfConnectors)) { + configuredMaxConnectors = + numberOfConnectors[Math.floor(Utils.secureRandom() * numberOfConnectors.length)]; + } else if (Utils.isUndefined(stationTemplate.numberOfConnectors) === false) { configuredMaxConnectors = stationTemplate.numberOfConnectors as number; } else { configuredMaxConnectors = stationTemplate?.Connectors[0] @@ -176,32 +173,6 @@ export class ChargingStationUtils { return Configuration.getWorker().processType === WorkerProcessType.DYNAMIC_POOL; } - /** - * Convert websocket error code to human readable string message - * - * @param code websocket error code - * @returns human readable string message - */ - public static getWebSocketCloseEventStatusString(code: number): string { - if (code >= 0 && code <= 999) { - return '(Unused)'; - } else if (code >= 1016) { - if (code <= 1999) { - return '(For WebSocket standard)'; - } else if (code <= 2999) { - return '(For WebSocket extensions)'; - } else if (code <= 3999) { - return '(For libraries and frameworks)'; - } else if (code <= 4999) { - return '(For applications)'; - } - } - if (!Utils.isUndefined(WebSocketCloseEventStatusString[code])) { - return WebSocketCloseEventStatusString[code] as string; - } - return '(Unknown)'; - } - public static warnDeprecatedTemplateKey( template: ChargingStationTemplate, key: string, @@ -443,7 +414,7 @@ export class ChargingStationUtils { phase?: MeterValuePhase ): SampledValueTemplate | undefined { const onPhaseStr = phase ? `on phase ${phase} ` : ''; - if (!Constants.SUPPORTED_MEASURANDS.includes(measurand)) { + if (Constants.SUPPORTED_MEASURANDS.includes(measurand) === false) { logger.warn( `${chargingStation.logPrefix()} Trying to get unsupported MeterValues measurand '${measurand}' ${onPhaseStr}in template on connectorId ${connectorId}` ); @@ -471,10 +442,10 @@ export class ChargingStationUtils { index++ ) { if ( - !Constants.SUPPORTED_MEASURANDS.includes( + Constants.SUPPORTED_MEASURANDS.includes( sampledValueTemplates[index]?.measurand ?? MeterValueMeasurand.ENERGY_ACTIVE_IMPORT_REGISTER - ) + ) === false ) { logger.warn( `${chargingStation.logPrefix()} Unsupported MeterValues measurand '${measurand}' ${onPhaseStr}in template on connectorId ${connectorId}` @@ -486,7 +457,7 @@ export class ChargingStationUtils { ChargingStationConfigurationUtils.getConfigurationKey( chargingStation, StandardParametersKey.MeterValuesSampledData - )?.value.includes(measurand) + )?.value.includes(measurand) === true ) { return sampledValueTemplates[index]; } else if ( @@ -496,7 +467,7 @@ export class ChargingStationUtils { ChargingStationConfigurationUtils.getConfigurationKey( chargingStation, StandardParametersKey.MeterValuesSampledData - )?.value.includes(measurand) + )?.value.includes(measurand) === true ) { return sampledValueTemplates[index]; } else if ( @@ -533,9 +504,15 @@ export class ChargingStationUtils { chargingStation: ChargingStation ): boolean { const isRequestCommand = Object.values(RequestCommand).includes(command); - if (isRequestCommand && !chargingStation.stationInfo?.commandsSupport?.outgoingCommands) { + if ( + isRequestCommand === true && + !chargingStation.stationInfo?.commandsSupport?.outgoingCommands + ) { return true; - } else if (isRequestCommand && chargingStation.stationInfo?.commandsSupport?.outgoingCommands) { + } else if ( + isRequestCommand === true && + chargingStation.stationInfo?.commandsSupport?.outgoingCommands + ) { return chargingStation.stationInfo?.commandsSupport?.outgoingCommands[command] ?? false; } logger.error(`${chargingStation.logPrefix()} Unknown outgoing OCPP command '${command}'`); @@ -548,12 +525,12 @@ export class ChargingStationUtils { ): boolean { const isIncomingRequestCommand = Object.values(IncomingRequestCommand).includes(command); if ( - isIncomingRequestCommand && + isIncomingRequestCommand === true && !chargingStation.stationInfo?.commandsSupport?.incomingCommands ) { return true; } else if ( - isIncomingRequestCommand && + isIncomingRequestCommand === true && chargingStation.stationInfo?.commandsSupport?.incomingCommands ) { return chargingStation.stationInfo?.commandsSupport?.incomingCommands[command] ?? false;