@citrineos/data
Version:
The OCPP data module which includes all persistence layer implementation.
48 lines • 2.15 kB
JavaScript
// SPDX-FileCopyrightText: 2025 Contributors to the CitrineOS Project
//
// SPDX-License-Identifier: Apache-2.0
import { OCPP2_0_1 } from '@citrineos/base';
import { MeterValue } from '../../model/index.js';
export class MeterValueMapper {
static toMeterValueType(meterValue) {
return {
timestamp: meterValue.timestamp,
sampledValue: MeterValueMapper.toSampledValueTypes(meterValue.sampledValue),
customData: meterValue.customData,
};
}
static toSampledValueTypes(sampledValues) {
if (!(sampledValues instanceof Array) || sampledValues.length === 0) {
throw new Error(`Invalid sampledValues: ${JSON.stringify(sampledValues)}`);
}
const sampledValueTypes = [];
for (const sampledValue of sampledValues) {
sampledValueTypes.push({
value: sampledValue.value,
context: sampledValue.context,
measurand: sampledValue.measurand,
phase: sampledValue.phase,
location: sampledValue.location,
signedMeterValue: sampledValue.signedMeterValue
? {
signedMeterData: sampledValue.signedMeterValue.signedMeterData,
signingMethod: sampledValue.signedMeterValue.signingMethod,
encodingMethod: sampledValue.signedMeterValue.encodingMethod,
publicKey: sampledValue.signedMeterValue.publicKey,
customData: sampledValue.signedMeterValue.customData,
}
: undefined,
unitOfMeasure: sampledValue.unitOfMeasure
? {
unit: sampledValue.unitOfMeasure.unit,
multiplier: sampledValue.unitOfMeasure.multiplier,
customData: sampledValue.unitOfMeasure.customData,
}
: undefined,
customData: sampledValue.customData,
});
}
return sampledValueTypes;
}
}
//# sourceMappingURL=MeterValueMapper.js.map