+
+ public static buildTransactionBeginMeterValue(chargingStation: ChargingStation, connectorId: number, meterBegin: number): OCPP16MeterValue {
+ const meterValue: OCPP16MeterValue = {
+ timestamp: new Date().toISOString(),
+ sampledValue: [],
+ };
+ // Energy.Active.Import.Register measurand (default)
+ const sampledValueTemplate = chargingStation.getSampledValueTemplate(connectorId);
+ const unitDivider = sampledValueTemplate?.unit === MeterValueUnit.KILO_WATT_HOUR ? 1000 : 1;
+ meterValue.sampledValue.push(OCPP16ServiceUtils.buildSampledValue(sampledValueTemplate, Utils.roundTo(meterBegin / unitDivider, 4), MeterValueContext.TRANSACTION_BEGIN));
+ return meterValue;
+ }
+
+ public static buildTransactionEndMeterValue(chargingStation: ChargingStation, connectorId: number, meterEnd: number): OCPP16MeterValue {
+ const meterValue: OCPP16MeterValue = {
+ timestamp: new Date().toISOString(),
+ sampledValue: [],
+ };
+ // Energy.Active.Import.Register measurand (default)
+ const sampledValueTemplate = chargingStation.getSampledValueTemplate(connectorId);
+ const unitDivider = sampledValueTemplate?.unit === MeterValueUnit.KILO_WATT_HOUR ? 1000 : 1;
+ meterValue.sampledValue.push(OCPP16ServiceUtils.buildSampledValue(sampledValueTemplate, Utils.roundTo(meterEnd / unitDivider, 4), MeterValueContext.TRANSACTION_END));
+ return meterValue;
+ }
+
+ public static buildTransactionDataMeterValues(transactionBeginMeterValue: OCPP16MeterValue, transactionEndMeterValue: OCPP16MeterValue): OCPP16MeterValue[] {
+ const meterValues: OCPP16MeterValue[] = [];
+ meterValues.push(transactionBeginMeterValue);
+ meterValues.push(transactionEndMeterValue);
+ return meterValues;
+ }