]> Piment Noir Git Repositories - e-mobility-charging-stations-simulator.git/commitdiff
refactor: replace Measurands string literal with OCPP20RequiredVariableName enum
authorJérôme Benoit <jerome.benoit@sap.com>
Sat, 28 Mar 2026 12:05:34 +0000 (13:05 +0100)
committerJérôme Benoit <jerome.benoit@sap.com>
Sat, 28 Mar 2026 12:05:34 +0000 (13:05 +0100)
Add Measurands to OCPP20RequiredVariableName enum (required per OCPP
2.0.1 Part 2 §2.7.1, AlignedDataCtrlr component) and replace all string
literals in ConfigurationKeyUtils mapping and OCPP20VariableRegistry.

src/charging-station/ConfigurationKeyUtils.ts
src/charging-station/ocpp/2.0/OCPP20VariableRegistry.ts
src/types/ocpp/2.0/Variables.ts

index bbe11c1796730dcb5a56104699e9f135524801e4..ff83ffed5f18a591b57eb145cdd5bda7f54465c0 100644 (file)
@@ -81,7 +81,7 @@ const OCPP2_PARAMETER_KEY_MAP = new Map<
           ],
           [
             StandardParametersKey.MeterValuesAlignedData,
-            buildConfigKey(OCPP20ComponentName.AlignedDataCtrlr, 'Measurands'),
+            buildConfigKey(OCPP20ComponentName.AlignedDataCtrlr, StandardParametersKey.Measurands),
           ],
           [
             StandardParametersKey.ClockAlignedDataInterval,
index 1a44e366f72297b31c1250eba561c31b11fb3636..e9215789c18c9123662991605ed7ce6448eacecb 100644 (file)
@@ -127,40 +127,6 @@ export const VARIABLE_REGISTRY: Record<string, VariableMetadata> = {
     supportedAttributes: [AttributeEnumType.Actual],
     variable: 'Available',
   },
-  [buildRegistryKey(OCPP20ComponentName.AlignedDataCtrlr, 'Measurands')]: {
-    component: OCPP20ComponentName.AlignedDataCtrlr,
-    dataType: DataEnumType.MemberList,
-    defaultValue: OCPP20MeasurandEnumType.ENERGY_ACTIVE_IMPORT_REGISTER,
-    description:
-      'Clock-aligned measurand(s) to be included in MeterValuesRequest, every AlignedDataInterval seconds.',
-    enumeration: [
-      OCPP20MeasurandEnumType.CURRENT_EXPORT,
-      OCPP20MeasurandEnumType.CURRENT_IMPORT,
-      OCPP20MeasurandEnumType.CURRENT_OFFERED,
-      OCPP20MeasurandEnumType.ENERGY_ACTIVE_EXPORT_REGISTER,
-      OCPP20MeasurandEnumType.ENERGY_ACTIVE_IMPORT_REGISTER,
-      OCPP20MeasurandEnumType.ENERGY_REACTIVE_EXPORT_REGISTER,
-      OCPP20MeasurandEnumType.ENERGY_REACTIVE_IMPORT_REGISTER,
-      OCPP20MeasurandEnumType.ENERGY_ACTIVE_EXPORT_INTERVAL,
-      OCPP20MeasurandEnumType.ENERGY_ACTIVE_IMPORT_INTERVAL,
-      OCPP20MeasurandEnumType.ENERGY_REACTIVE_EXPORT_INTERVAL,
-      OCPP20MeasurandEnumType.ENERGY_REACTIVE_IMPORT_INTERVAL,
-      OCPP20MeasurandEnumType.FREQUENCY,
-      OCPP20MeasurandEnumType.POWER_ACTIVE_EXPORT,
-      OCPP20MeasurandEnumType.POWER_ACTIVE_IMPORT,
-      OCPP20MeasurandEnumType.POWER_FACTOR,
-      OCPP20MeasurandEnumType.POWER_OFFERED,
-      OCPP20MeasurandEnumType.POWER_REACTIVE_EXPORT,
-      OCPP20MeasurandEnumType.POWER_REACTIVE_IMPORT,
-      OCPP20MeasurandEnumType.STATE_OF_CHARGE,
-      OCPP20MeasurandEnumType.VOLTAGE,
-    ],
-    mutability: MutabilityEnumType.ReadWrite,
-    persistence: PersistenceEnumType.Persistent,
-    required: true,
-    supportedAttributes: [AttributeEnumType.Actual],
-    variable: 'Measurands',
-  },
   [buildRegistryKey(OCPP20ComponentName.AlignedDataCtrlr, 'SendDuringIdle')]: {
     component: OCPP20ComponentName.AlignedDataCtrlr,
     dataType: DataEnumType.boolean,
@@ -224,6 +190,40 @@ export const VARIABLE_REGISTRY: Record<string, VariableMetadata> = {
     supportedAttributes: [AttributeEnumType.Actual],
     variable: OCPP20RequiredVariableName.Enabled,
   },
+  [buildRegistryKey(OCPP20ComponentName.AlignedDataCtrlr, OCPP20RequiredVariableName.Measurands)]: {
+    component: OCPP20ComponentName.AlignedDataCtrlr,
+    dataType: DataEnumType.MemberList,
+    defaultValue: OCPP20MeasurandEnumType.ENERGY_ACTIVE_IMPORT_REGISTER,
+    description:
+      'Clock-aligned measurand(s) to be included in MeterValuesRequest, every AlignedDataInterval seconds.',
+    enumeration: [
+      OCPP20MeasurandEnumType.CURRENT_EXPORT,
+      OCPP20MeasurandEnumType.CURRENT_IMPORT,
+      OCPP20MeasurandEnumType.CURRENT_OFFERED,
+      OCPP20MeasurandEnumType.ENERGY_ACTIVE_EXPORT_REGISTER,
+      OCPP20MeasurandEnumType.ENERGY_ACTIVE_IMPORT_REGISTER,
+      OCPP20MeasurandEnumType.ENERGY_REACTIVE_EXPORT_REGISTER,
+      OCPP20MeasurandEnumType.ENERGY_REACTIVE_IMPORT_REGISTER,
+      OCPP20MeasurandEnumType.ENERGY_ACTIVE_EXPORT_INTERVAL,
+      OCPP20MeasurandEnumType.ENERGY_ACTIVE_IMPORT_INTERVAL,
+      OCPP20MeasurandEnumType.ENERGY_REACTIVE_EXPORT_INTERVAL,
+      OCPP20MeasurandEnumType.ENERGY_REACTIVE_IMPORT_INTERVAL,
+      OCPP20MeasurandEnumType.FREQUENCY,
+      OCPP20MeasurandEnumType.POWER_ACTIVE_EXPORT,
+      OCPP20MeasurandEnumType.POWER_ACTIVE_IMPORT,
+      OCPP20MeasurandEnumType.POWER_FACTOR,
+      OCPP20MeasurandEnumType.POWER_OFFERED,
+      OCPP20MeasurandEnumType.POWER_REACTIVE_EXPORT,
+      OCPP20MeasurandEnumType.POWER_REACTIVE_IMPORT,
+      OCPP20MeasurandEnumType.STATE_OF_CHARGE,
+      OCPP20MeasurandEnumType.VOLTAGE,
+    ],
+    mutability: MutabilityEnumType.ReadWrite,
+    persistence: PersistenceEnumType.Persistent,
+    required: true,
+    supportedAttributes: [AttributeEnumType.Actual],
+    variable: OCPP20RequiredVariableName.Measurands,
+  },
   [buildRegistryKey(
     OCPP20ComponentName.AlignedDataCtrlr,
     OCPP20RequiredVariableName.TxEndedMeasurands
index a7e0651c66353de5a901ee1fe1464ec2e833a013..7a4360e55e64c4e63c81ce0672518420ba5f21dc 100644 (file)
@@ -53,6 +53,7 @@ export enum OCPP20RequiredVariableName {
   ItemsPerMessage = 'ItemsPerMessage',
   LocalAuthorizationOffline = 'LocalAuthorizationOffline',
   LocalPreAuthorization = 'LocalPreAuthorization',
+  Measurands = 'Measurands',
   MessageAttemptInterval = 'MessageAttemptInterval',
   MessageAttempts = 'MessageAttempts',
   MessageTimeout = 'MessageTimeout',