Skip to content

Commit

Permalink
fix: avoid NaN at meterValues generation
Browse files Browse the repository at this point in the history
Signed-off-by: Jérôme Benoit <[email protected]>
  • Loading branch information
Jérôme Benoit committed Nov 12, 2023
1 parent 74ed61d commit 5a47f72
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 16 deletions.
3 changes: 2 additions & 1 deletion src/charging-station/ChargingStation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ import {
SupervisionUrlDistribution,
SupportedFeatureProfiles,
VendorParametersKey,
Voltage,
type WSError,
WebSocketCloseEventStatusCode,
type WsOptions,
Expand Down Expand Up @@ -2070,7 +2071,7 @@ export class ChargingStation extends EventEmitter {
return (stationInfo ?? this.stationInfo).currentOutType ?? CurrentType.AC;
}

private getVoltageOut(stationInfo?: ChargingStationInfo): number {
private getVoltageOut(stationInfo?: ChargingStationInfo): Voltage {
return (
(stationInfo ?? this.stationInfo).voltageOut ??
getDefaultVoltageOut(this.getCurrentOutType(stationInfo), this.logPrefix(), this.templateFile)
Expand Down
37 changes: 22 additions & 15 deletions src/charging-station/ocpp/1.6/OCPP16ServiceUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ import {
type OCPP16SupportedFeatureProfiles,
OCPPVersion,
type SampledValueTemplate,
Voltage,
} from '../../../types';
import {
ACElectricUtils,
Expand All @@ -57,6 +56,7 @@ import {
getRandomFloatRounded,
getRandomInteger,
isNotEmptyArray,
isNotEmptyString,
isNullOrUndefined,
isUndefined,
logger,
Expand Down Expand Up @@ -102,7 +102,7 @@ export class OCPP16ServiceUtils extends OCPPServiceUtils {
if (socSampledValueTemplate) {
const socMaximumValue = 100;
const socMinimumValue = socSampledValueTemplate.minimumValue ?? 0;
const socSampledValueTemplateValue = socSampledValueTemplate.value
const socSampledValueTemplateValue = isNotEmptyString(socSampledValueTemplate.value)
? getRandomFloatFluctuatedRounded(
parseInt(socSampledValueTemplate.value),
socSampledValueTemplate.fluctuationPercent ?? Constants.DEFAULT_FLUCTUATION_PERCENT,
Expand Down Expand Up @@ -134,7 +134,7 @@ export class OCPP16ServiceUtils extends OCPPServiceUtils {
OCPP16MeterValueMeasurand.VOLTAGE,
);
if (voltageSampledValueTemplate) {
const voltageSampledValueTemplateValue = voltageSampledValueTemplate.value
const voltageSampledValueTemplateValue = isNotEmptyString(voltageSampledValueTemplate.value)
? parseInt(voltageSampledValueTemplate.value)
: chargingStation.stationInfo.voltageOut!;
const fluctuationPercent =
Expand Down Expand Up @@ -167,10 +167,11 @@ export class OCPP16ServiceUtils extends OCPPServiceUtils {
);
let voltagePhaseLineToNeutralMeasurandValue: number | undefined;
if (voltagePhaseLineToNeutralSampledValueTemplate) {
const voltagePhaseLineToNeutralSampledValueTemplateValue =
voltagePhaseLineToNeutralSampledValueTemplate.value
? parseInt(voltagePhaseLineToNeutralSampledValueTemplate.value)
: chargingStation.stationInfo.voltageOut!;
const voltagePhaseLineToNeutralSampledValueTemplateValue = isNotEmptyString(
voltagePhaseLineToNeutralSampledValueTemplate.value,
)
? parseInt(voltagePhaseLineToNeutralSampledValueTemplate.value)
: chargingStation.stationInfo.voltageOut!;
const fluctuationPhaseToNeutralPercent =
voltagePhaseLineToNeutralSampledValueTemplate.fluctuationPercent ??
Constants.DEFAULT_FLUCTUATION_PERCENT;
Expand Down Expand Up @@ -202,10 +203,15 @@ export class OCPP16ServiceUtils extends OCPPServiceUtils {
);
let voltagePhaseLineToLineMeasurandValue: number | undefined;
if (voltagePhaseLineToLineSampledValueTemplate) {
const voltagePhaseLineToLineSampledValueTemplateValue =
voltagePhaseLineToLineSampledValueTemplate.value
? parseInt(voltagePhaseLineToLineSampledValueTemplate.value)
: Voltage.VOLTAGE_400;
const voltagePhaseLineToLineSampledValueTemplateValue = isNotEmptyString(
voltagePhaseLineToLineSampledValueTemplate.value,
)
? parseInt(voltagePhaseLineToLineSampledValueTemplate.value)
: roundTo(
Math.sqrt(chargingStation.getNumberOfPhases()) *
chargingStation.stationInfo.voltageOut!,
2,
);
const fluctuationPhaseLineToLinePercent =
voltagePhaseLineToLineSampledValueTemplate.fluctuationPercent ??
Constants.DEFAULT_FLUCTUATION_PERCENT;
Expand All @@ -215,7 +221,8 @@ export class OCPP16ServiceUtils extends OCPPServiceUtils {
);
}
const defaultVoltagePhaseLineToLineMeasurandValue = getRandomFloatFluctuatedRounded(
Voltage.VOLTAGE_400,
Math.sqrt(chargingStation.getNumberOfPhases()) *
chargingStation.stationInfo.voltageOut!,
fluctuationPercent,
);
meterValue.sampledValue.push(
Expand Down Expand Up @@ -391,7 +398,7 @@ export class OCPP16ServiceUtils extends OCPPServiceUtils {
);
break;
case CurrentType.DC:
powerMeasurandValues.allPhases = powerSampledValueTemplate.value
powerMeasurandValues.allPhases = isNotEmptyString(powerSampledValueTemplate.value)
? getRandomFloatFluctuatedRounded(
OCPP16ServiceUtils.getLimitFromSampledValueTemplateCustomValue(
powerSampledValueTemplate.value,
Expand Down Expand Up @@ -608,7 +615,7 @@ export class OCPP16ServiceUtils extends OCPPServiceUtils {
(defaultFluctuatedAmperagePerPhase as number) ??
getRandomFloatRounded(connectorMaximumAmperage, connectorMinimumAmperage);
} else {
currentMeasurandValues.L1 = currentSampledValueTemplate.value
currentMeasurandValues.L1 = isNotEmptyString(currentSampledValueTemplate.value)
? getRandomFloatFluctuatedRounded(
OCPP16ServiceUtils.getLimitFromSampledValueTemplateCustomValue(
currentSampledValueTemplate.value,
Expand Down Expand Up @@ -636,7 +643,7 @@ export class OCPP16ServiceUtils extends OCPPServiceUtils {
connectorMaximumAvailablePower,
chargingStation.stationInfo.voltageOut!,
);
currentMeasurandValues.allPhases = currentSampledValueTemplate.value
currentMeasurandValues.allPhases = isNotEmptyString(currentSampledValueTemplate.value)
? getRandomFloatFluctuatedRounded(
OCPP16ServiceUtils.getLimitFromSampledValueTemplateCustomValue(
currentSampledValueTemplate.value,
Expand Down

0 comments on commit 5a47f72

Please sign in to comment.