]> Piment Noir Git Repositories - e-mobility-charging-stations-simulator.git/commitdiff
fix(ocpp2): add AvailabilityState defaults and allow self-transitions
authorJérôme Benoit <jerome.benoit@sap.com>
Sat, 21 Mar 2026 20:15:55 +0000 (21:15 +0100)
committerJérôme Benoit <jerome.benoit@sap.com>
Sat, 21 Mar 2026 20:15:55 +0000 (21:15 +0100)
- Add defaultValue using OCPP20OperationalStatusEnumType.Operative
  enum for ChargingStation AvailabilityState (was missing, causing
  'Missing required configuration key mapping' error at auth time)
- Replace string literals with OCPP20OperationalStatusEnumType enum
  values in AvailabilityState enumeration arrays
- Allow Available→Available self-transitions in OCPP20Constants for
  both ChargingStation and Connector status tables (required by
  boot sequence StatusNotification per spec Part 2 §4.1 step 5)

src/charging-station/ocpp/2.0/OCPP20Constants.ts
src/charging-station/ocpp/2.0/OCPP20VariableRegistry.ts

index 64d6c60790d92743bed774fc67b93fe808f02754..be43d357cc062da94e11ff3c1411c9f0185bf1fd 100644 (file)
@@ -17,7 +17,10 @@ export class OCPP20Constants extends OCPPConstants {
   static readonly ChargingStationStatusTransitions: readonly ConnectorStatusTransition[] =
     Object.freeze([
       { to: OCPP20ConnectorStatusEnumType.Available },
-      // { from: OCPP20ConnectorStatusEnumType.Available, to: OCPP20ConnectorStatusEnumType.Available },
+      {
+        from: OCPP20ConnectorStatusEnumType.Available,
+        to: OCPP20ConnectorStatusEnumType.Available,
+      },
       {
         from: OCPP20ConnectorStatusEnumType.Available,
         to: OCPP20ConnectorStatusEnumType.Unavailable,
index c10821914a84ea58ede338758ba4fcd723cd202d..dfabb2cc9525bb013063bef3ede97812d785e96b 100644 (file)
@@ -9,6 +9,7 @@ import {
   OCPP20ComponentName,
   OCPP20DeviceInfoVariableName,
   OCPP20MeasurandEnumType,
+  OCPP20OperationalStatusEnumType,
   OCPP20OptionalVariableName,
   OCPP20RequiredVariableName,
   OCPP20UnitEnumType,
@@ -559,8 +560,12 @@ export const VARIABLE_REGISTRY: Record<string, VariableMetadata> = {
   )]: {
     component: OCPP20ComponentName.ChargingStation as string,
     dataType: DataEnumType.OptionList,
+    defaultValue: OCPP20OperationalStatusEnumType.Operative,
     description: 'Current availability state for the ChargingStation.',
-    enumeration: ['Operative', 'Inoperative'],
+    enumeration: [
+      OCPP20OperationalStatusEnumType.Operative,
+      OCPP20OperationalStatusEnumType.Inoperative,
+    ],
     mutability: MutabilityEnumType.ReadOnly,
     persistence: PersistenceEnumType.Persistent,
     required: true,
@@ -902,9 +907,12 @@ export const VARIABLE_REGISTRY: Record<string, VariableMetadata> = {
   [buildRegistryKey(OCPP20ComponentName.EVSE as string, 'AvailabilityState')]: {
     component: OCPP20ComponentName.EVSE as string,
     dataType: DataEnumType.OptionList,
-    defaultValue: 'Operative',
+    defaultValue: OCPP20OperationalStatusEnumType.Operative,
     description: 'This variable reports current availability state for the EVSE',
-    enumeration: ['Operative', 'Inoperative'],
+    enumeration: [
+      OCPP20OperationalStatusEnumType.Operative,
+      OCPP20OperationalStatusEnumType.Inoperative,
+    ],
     mutability: MutabilityEnumType.ReadOnly,
     persistence: PersistenceEnumType.Volatile,
     required: true,