From 8733ff9ab5995803109737a40f3b85fbc7089619 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Sat, 21 Mar 2026 21:15:55 +0100 Subject: [PATCH] fix(ocpp2): add AvailabilityState defaults and allow self-transitions MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit - 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 | 5 ++++- .../ocpp/2.0/OCPP20VariableRegistry.ts | 14 +++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/charging-station/ocpp/2.0/OCPP20Constants.ts b/src/charging-station/ocpp/2.0/OCPP20Constants.ts index 64d6c607..be43d357 100644 --- a/src/charging-station/ocpp/2.0/OCPP20Constants.ts +++ b/src/charging-station/ocpp/2.0/OCPP20Constants.ts @@ -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, diff --git a/src/charging-station/ocpp/2.0/OCPP20VariableRegistry.ts b/src/charging-station/ocpp/2.0/OCPP20VariableRegistry.ts index c1082191..dfabb2cc 100644 --- a/src/charging-station/ocpp/2.0/OCPP20VariableRegistry.ts +++ b/src/charging-station/ocpp/2.0/OCPP20VariableRegistry.ts @@ -9,6 +9,7 @@ import { OCPP20ComponentName, OCPP20DeviceInfoVariableName, OCPP20MeasurandEnumType, + OCPP20OperationalStatusEnumType, OCPP20OptionalVariableName, OCPP20RequiredVariableName, OCPP20UnitEnumType, @@ -559,8 +560,12 @@ export const VARIABLE_REGISTRY: Record = { )]: { 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 = { [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, -- 2.43.0