import type { DefinedError, ErrorObject, JSONSchemaType } from 'ajv';
-import BaseError from '../../exception/BaseError';
-import { FileType } from '../../types/FileType';
-import type { JsonObject, JsonType } from '../../types/JsonType';
-import type { SampledValueTemplate } from '../../types/MeasurandPerPhaseSampledValueTemplates';
-import type { OCPP16StatusNotificationRequest } from '../../types/ocpp/1.6/Requests';
-import type { OCPP20StatusNotificationRequest } from '../../types/ocpp/2.0/Requests';
-import { ChargePointErrorCode } from '../../types/ocpp/ChargePointErrorCode';
-import { StandardParametersKey } from '../../types/ocpp/Configuration';
-import type { ConnectorStatusEnum } from '../../types/ocpp/ConnectorStatusEnum';
-import { ErrorType } from '../../types/ocpp/ErrorType';
-import { MessageType } from '../../types/ocpp/MessageType';
-import { MeterValueMeasurand, type MeterValuePhase } from '../../types/ocpp/MeterValues';
-import { OCPPVersion } from '../../types/ocpp/OCPPVersion';
+import { type ChargingStation, ChargingStationConfigurationUtils } from '../../charging-station';
+import { BaseError } from '../../exception';
import {
+ ChargePointErrorCode,
+ type ConnectorStatusEnum,
+ ErrorType,
+ FileType,
IncomingRequestCommand,
+ type JsonObject,
+ type JsonType,
MessageTrigger,
+ MessageType,
+ MeterValueMeasurand,
+ type MeterValuePhase,
+ type OCPP16StatusNotificationRequest,
+ type OCPP20StatusNotificationRequest,
+ OCPPVersion,
RequestCommand,
+ type SampledValueTemplate,
+ StandardParametersKey,
type StatusNotificationRequest,
-} from '../../types/ocpp/Requests';
-import Constants from '../../utils/Constants';
-import FileUtils from '../../utils/FileUtils';
-import logger from '../../utils/Logger';
-import Utils from '../../utils/Utils';
-import type ChargingStation from '../ChargingStation';
-import { ChargingStationConfigurationUtils } from '../ChargingStationConfigurationUtils';
+} from '../../types';
+import { Constants, FileUtils, Utils, logger } from '../../utils';
export class OCPPServiceUtils {
protected constructor() {
if (obj[key] instanceof Date) {
(obj as JsonObject)[key] = (obj[key] as Date).toISOString();
} else if (obj[key] !== null && typeof obj[key] === 'object') {
- this.convertDateToISOString<T>(obj[key] as T);
+ OCPPServiceUtils.convertDateToISOString<T>(obj[key] as T);
}
}
}
}
}
+ public static startHeartbeatInterval(chargingStation: ChargingStation, interval: number): void {
+ if (!chargingStation.heartbeatSetInterval) {
+ chargingStation.startHeartbeat();
+ } else if (chargingStation.getHeartbeatInterval() !== interval) {
+ chargingStation.restartHeartbeat();
+ }
+ }
+
protected static parseJsonSchemaFile<T extends JsonType>(
filePath: string,
- ocppVersion: OCPPVersion
+ ocppVersion: OCPPVersion,
+ moduleName?: string,
+ methodName?: string
): JSONSchemaType<T> {
try {
return JSON.parse(fs.readFileSync(filePath, 'utf8')) as JSONSchemaType<T>;
filePath,
FileType.JsonSchema,
error as NodeJS.ErrnoException,
- OCPPServiceUtils.logPrefix(ocppVersion),
+ OCPPServiceUtils.logPrefix(ocppVersion, moduleName, methodName),
{ throwError: false }
);
}
chargingStation.getConnectorStatus(connectorId)?.MeterValues;
for (
let index = 0;
- Utils.isEmptyArray(sampledValueTemplates) === false && index < sampledValueTemplates.length;
+ Utils.isNotEmptyArray(sampledValueTemplates) === true && index < sampledValueTemplates.length;
index++
) {
if (
: numberValue * options.unitMultiplier;
}
- private static logPrefix = (ocppVersion: OCPPVersion): string => {
- return Utils.logPrefix(` OCPP ${ocppVersion} |`);
+ private static logPrefix = (
+ ocppVersion: OCPPVersion,
+ moduleName?: string,
+ methodName?: string
+ ): string => {
+ const logMsg =
+ Utils.isNotEmptyString(moduleName) && Utils.isNotEmptyString(methodName)
+ ? ` OCPP ${ocppVersion} | ${moduleName}.${methodName}:`
+ : ` OCPP ${ocppVersion} |`;
+ return Utils.logPrefix(logMsg);
};
}