// Partial Copyright Jerome Benoit. 2021-2023. All Rights Reserved.
-import path from 'node:path';
-import { fileURLToPath } from 'node:url';
-
import type { JSONSchemaType } from 'ajv';
import type { ChargingStation } from '../../../charging-station';
MeterValueContext,
MeterValueLocation,
MeterValueUnit,
- OCPP16ChargePointErrorCode,
- type OCPP16ChargePointStatus,
type OCPP16ChargingProfile,
type OCPP16IncomingRequestCommand,
type OCPP16MeterValue,
OCPP16RequestCommand,
type OCPP16SampledValue,
OCPP16StandardParametersKey,
- type OCPP16StatusNotificationRequest,
- type OCPP16StatusNotificationResponse,
type OCPP16SupportedFeatureProfiles,
OCPPVersion,
type SampledValueTemplate,
Voltage,
} from '../../../types';
import { ACElectricUtils, Constants, DCElectricUtils, Utils, logger } from '../../../utils';
-import { OCPP16Constants, OCPPServiceUtils } from '../internal';
+import { OCPPServiceUtils } from '../OCPPServiceUtils';
export class OCPP16ServiceUtils extends OCPPServiceUtils {
public static checkFeatureProfile(
`${chargingStation.logPrefix()} MeterValues measurand ${
meterValue.sampledValue[sampledValuesIndex].measurand ??
OCPP16MeterValueMeasurand.ENERGY_ACTIVE_IMPORT_REGISTER
- }: connectorId ${connectorId}, transaction ${
+ }: connector id ${connectorId}, transaction id ${
connector?.transactionId
}, value: ${socMinimumValue}/${
meterValue.sampledValue[sampledValuesIndex].value
`${chargingStation.logPrefix()} MeterValues measurand ${
meterValue.sampledValue[sampledValuesIndex].measurand ??
OCPP16MeterValueMeasurand.ENERGY_ACTIVE_IMPORT_REGISTER
- }: connectorId ${connectorId}, transaction ${
+ }: connector id ${connectorId}, transaction id ${
connector?.transactionId
}, value: ${connectorMinimumPowerRounded}/${
meterValue.sampledValue[sampledValuesIndex].value
OCPP16MeterValueMeasurand.ENERGY_ACTIVE_IMPORT_REGISTER
}: phase ${
meterValue.sampledValue[sampledValuesPerPhaseIndex].phase
- }, connectorId ${connectorId}, transaction ${
+ }, connector id ${connectorId}, transaction id ${
connector?.transactionId
}, value: ${connectorMinimumPowerPerPhaseRounded}/${
meterValue.sampledValue[sampledValuesPerPhaseIndex].value
`${chargingStation.logPrefix()} MeterValues measurand ${
meterValue.sampledValue[sampledValuesIndex].measurand ??
OCPP16MeterValueMeasurand.ENERGY_ACTIVE_IMPORT_REGISTER
- }: connectorId ${connectorId}, transaction ${
+ }: connector id ${connectorId}, transaction id ${
connector?.transactionId
}, value: ${connectorMinimumAmperage}/${
meterValue.sampledValue[sampledValuesIndex].value
OCPP16MeterValueMeasurand.ENERGY_ACTIVE_IMPORT_REGISTER
}: phase ${
meterValue.sampledValue[sampledValuesPerPhaseIndex].phase
- }, connectorId ${connectorId}, transaction ${
+ }, connector id ${connectorId}, transaction id ${
connector?.transactionId
}, value: ${connectorMinimumAmperage}/${
meterValue.sampledValue[sampledValuesPerPhaseIndex].value
`${chargingStation.logPrefix()} MeterValues measurand ${
meterValue.sampledValue[sampledValuesIndex].measurand ??
OCPP16MeterValueMeasurand.ENERGY_ACTIVE_IMPORT_REGISTER
- }: connectorId ${connectorId}, transaction ${
+ }: connector id ${connectorId}, transaction id ${
connector?.transactionId
}, value: ${energyValueRounded}/${connectorMaximumEnergyRounded}, duration: ${Utils.roundTo(
interval / (3600 * 1000),
Utils.isNullOrUndefined(chargingStation.getConnectorStatus(connectorId)?.chargingProfiles)
) {
logger.error(
- `${chargingStation.logPrefix()} Trying to set a charging profile on connectorId ${connectorId} with an uninitialized charging profiles array attribute, applying deferred initialization`
+ `${chargingStation.logPrefix()} Trying to set a charging profile on connector id ${connectorId} with an uninitialized charging profiles array attribute, applying deferred initialization`
);
chargingStation.getConnectorStatus(connectorId).chargingProfiles = [];
}
Array.isArray(chargingStation.getConnectorStatus(connectorId)?.chargingProfiles) === false
) {
logger.error(
- `${chargingStation.logPrefix()} Trying to set a charging profile on connectorId ${connectorId} with an improper attribute type for the charging profiles array, applying proper type initialization`
+ `${chargingStation.logPrefix()} Trying to set a charging profile on connector id ${connectorId} with an improper attribute type for the charging profiles array, applying proper type initialization`
);
chargingStation.getConnectorStatus(connectorId).chargingProfiles = [];
}
methodName?: string
): JSONSchemaType<T> {
return super.parseJsonSchemaFile<T>(
- path.resolve(path.dirname(fileURLToPath(import.meta.url)), relativePath),
+ relativePath,
OCPPVersion.VERSION_16,
moduleName,
methodName
);
}
- public static async sendAndSetConnectorStatus(
- chargingStation: ChargingStation,
- connectorId: number,
- status: OCPP16ChargePointStatus,
- errorCode: OCPP16ChargePointErrorCode = OCPP16ChargePointErrorCode.NO_ERROR
- ) {
- OCPP16ServiceUtils.checkConnectorStatusTransition(chargingStation, connectorId, status);
- await chargingStation.ocppRequestService.requestHandler<
- OCPP16StatusNotificationRequest,
- OCPP16StatusNotificationResponse
- >(chargingStation, OCPP16RequestCommand.STATUS_NOTIFICATION, {
- connectorId,
- status,
- errorCode,
- });
- chargingStation.getConnectorStatus(connectorId).status = status;
- }
-
- private static checkConnectorStatusTransition(
- chargingStation: ChargingStation,
- connectorId: number,
- status: OCPP16ChargePointStatus
- ): void {
- if (
- connectorId === 0 &&
- !OCPP16Constants.OCPP16ChargePointStatusChargingStationTransition.has([
- chargingStation.getConnectorStatus(connectorId).status as OCPP16ChargePointStatus,
- status,
- ])
- ) {
- logger.warn(
- `${chargingStation.logPrefix()} Connector ${connectorId} status transition from ${
- chargingStation.getConnectorStatus(connectorId).status
- } to ${status} is not allowed`
- );
- } else if (
- !OCPP16Constants.OCPP16ChargePointStatusConnectorTransition.has([
- chargingStation.getConnectorStatus(connectorId).status as OCPP16ChargePointStatus,
- status,
- ])
- ) {
- logger.warn(
- `${chargingStation.logPrefix()} Connector ${connectorId} status transition from ${
- chargingStation.getConnectorStatus(connectorId).status
- } to ${status} is not allowed`
- );
- }
- }
-
private static buildSampledValue(
sampledValueTemplate: SampledValueTemplate,
value: number,