import crypto from 'node:crypto';
+import type EventEmitter from 'node:events';
import path from 'node:path';
import { fileURLToPath } from 'node:url';
type ChargingSchedulePeriod,
type ChargingStationInfo,
type ChargingStationTemplate,
+ ChargingStationWorkerMessageEvents,
ConnectorPhaseRotation,
type ConnectorStatus,
ConnectorStatusEnum,
return connectorBootStatus;
}
- public static checkTemplateFile(
+ public static checkTemplate(
stationTemplate: ChargingStationTemplate,
logPrefix: string,
templateFile: string
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,
- };
+ stationTemplate.AutomaticTransactionGenerator = Constants.DEFAULT_ATG_CONFIGURATION;
logger.warn(
- `${logPrefix} Empty automatic transaction generator configuration from template file ${templateFile}, set to default values`
+ `${logPrefix} Empty automatic transaction generator configuration from template file ${templateFile}, set to default: %j`,
+ Constants.DEFAULT_ATG_CONFIGURATION
);
}
if (
);
}
+ public static waitForChargingStationEvents = async (
+ emitter: EventEmitter,
+ event: ChargingStationWorkerMessageEvents,
+ eventsToWait: number
+ ): Promise<number> => {
+ return new Promise((resolve) => {
+ let events = 0;
+ if (eventsToWait === 0) {
+ resolve(events);
+ }
+ emitter.on(event, () => {
+ ++events;
+ if (events === eventsToWait) {
+ resolve(events);
+ }
+ });
+ });
+ };
+
private static getConfiguredNumberOfConnectors(stationTemplate: ChargingStationTemplate): number {
let configuredMaxConnectors: number;
if (Utils.isNotEmptyArray(stationTemplate.numberOfConnectors) === true) {