refactor(simulator): consolidate connector status transition
authorJérôme Benoit <jerome.benoit@sap.com>
Sat, 22 Apr 2023 21:11:43 +0000 (23:11 +0200)
committerJérôme Benoit <jerome.benoit@sap.com>
Sat, 22 Apr 2023 21:11:43 +0000 (23:11 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@sap.com>
src/charging-station/ocpp/1.6/OCPP16Constants.ts
src/charging-station/ocpp/2.0/OCPP20Constants.ts
src/types/index.ts
src/types/ocpp/ConnectorStatusEnum.ts

index 5f6958817a1103d1c80317ee8654bf34df2f9d3f..15ea099bc0685886915b8759e8ca1b7436a301f4 100644 (file)
-import { OCPP16ChargePointStatus } from '../../../types';
+import { ConnectorStatusTransition, OCPP16ChargePointStatus } from '../../../types';
 import { OCPPConstants } from '../internal';
 
-type Transition = Readonly<{
-  from?: OCPP16ChargePointStatus;
-  to: OCPP16ChargePointStatus;
-}>;
-
 export class OCPP16Constants extends OCPPConstants {
-  static readonly ChargePointStatusChargingStationTransitions: Readonly<Transition[]> =
+  static readonly ChargePointStatusChargingStationTransitions: Readonly<
+    ConnectorStatusTransition[]
+  > = Object.freeze([
+    { to: OCPP16ChargePointStatus.Available },
+    // { from: OCPP16ChargePointStatus.Available, to: OCPP16ChargePointStatus.Available },
+    { from: OCPP16ChargePointStatus.Available, to: OCPP16ChargePointStatus.Unavailable },
+    { from: OCPP16ChargePointStatus.Available, to: OCPP16ChargePointStatus.Faulted },
+    { to: OCPP16ChargePointStatus.Unavailable },
+    { from: OCPP16ChargePointStatus.Unavailable, to: OCPP16ChargePointStatus.Available },
+    // { from: OCPP16ChargePointStatus.Unavailable, to: OCPP16ChargePointStatus.Unavailable },
+    { from: OCPP16ChargePointStatus.Unavailable, to: OCPP16ChargePointStatus.Faulted },
+    { to: OCPP16ChargePointStatus.Faulted },
+    { from: OCPP16ChargePointStatus.Faulted, to: OCPP16ChargePointStatus.Available },
+    { from: OCPP16ChargePointStatus.Faulted, to: OCPP16ChargePointStatus.Unavailable },
+    // { from: OCPP16ChargePointStatus.Faulted, to: OCPP16ChargePointStatus.Faulted },
+  ]);
+
+  static readonly ChargePointStatusConnectorTransitions: Readonly<ConnectorStatusTransition[]> =
     Object.freeze([
       { to: OCPP16ChargePointStatus.Available },
       // { from: OCPP16ChargePointStatus.Available, to: OCPP16ChargePointStatus.Available },
+      { from: OCPP16ChargePointStatus.Available, to: OCPP16ChargePointStatus.Preparing },
+      { from: OCPP16ChargePointStatus.Available, to: OCPP16ChargePointStatus.Charging },
+      { from: OCPP16ChargePointStatus.Available, to: OCPP16ChargePointStatus.SuspendedEV },
+      { from: OCPP16ChargePointStatus.Available, to: OCPP16ChargePointStatus.SuspendedEVSE },
+      // { from: OCPP16ChargePointStatus.Available, to: OCPP16ChargePointStatus.Finishing },
+      { from: OCPP16ChargePointStatus.Available, to: OCPP16ChargePointStatus.Reserved },
       { from: OCPP16ChargePointStatus.Available, to: OCPP16ChargePointStatus.Unavailable },
       { from: OCPP16ChargePointStatus.Available, to: OCPP16ChargePointStatus.Faulted },
+      // { to: OCPP16ChargePointStatus.Preparing },
+      { from: OCPP16ChargePointStatus.Preparing, to: OCPP16ChargePointStatus.Available },
+      // { from: OCPP16ChargePointStatus.Preparing, to: OCPP16ChargePointStatus.Preparing },
+      { from: OCPP16ChargePointStatus.Preparing, to: OCPP16ChargePointStatus.Charging },
+      { from: OCPP16ChargePointStatus.Preparing, to: OCPP16ChargePointStatus.SuspendedEV },
+      { from: OCPP16ChargePointStatus.Preparing, to: OCPP16ChargePointStatus.SuspendedEVSE },
+      { from: OCPP16ChargePointStatus.Preparing, to: OCPP16ChargePointStatus.Finishing },
+      // { from: OCPP16ChargePointStatus.Preparing, to: OCPP16ChargePointStatus.Reserved },
+      // { from: OCPP16ChargePointStatus.Preparing, to: OCPP16ChargePointStatus.Unavailable },
+      { from: OCPP16ChargePointStatus.Preparing, to: OCPP16ChargePointStatus.Faulted },
+      // { to: OCPP16ChargePointStatus.Charging },
+      { from: OCPP16ChargePointStatus.Charging, to: OCPP16ChargePointStatus.Available },
+      // { from: OCPP16ChargePointStatus.Charging, to: OCPP16ChargePointStatus.Preparing },
+      // { from: OCPP16ChargePointStatus.Charging, to: OCPP16ChargePointStatus.Charging },
+      { from: OCPP16ChargePointStatus.Charging, to: OCPP16ChargePointStatus.SuspendedEV },
+      { from: OCPP16ChargePointStatus.Charging, to: OCPP16ChargePointStatus.SuspendedEVSE },
+      { from: OCPP16ChargePointStatus.Charging, to: OCPP16ChargePointStatus.Finishing },
+      // { from: OCPP16ChargePointStatus.Charging, to: OCPP16ChargePointStatus.Reserved },
+      { from: OCPP16ChargePointStatus.Charging, to: OCPP16ChargePointStatus.Unavailable },
+      { from: OCPP16ChargePointStatus.Charging, to: OCPP16ChargePointStatus.Faulted },
+      // { to: OCPP16ChargePointStatus.SuspendedEV },
+      { from: OCPP16ChargePointStatus.SuspendedEV, to: OCPP16ChargePointStatus.Available },
+      // { from: OCPP16ChargePointStatus.SuspendedEV, to: OCPP16ChargePointStatus.Preparing },
+      { from: OCPP16ChargePointStatus.SuspendedEV, to: OCPP16ChargePointStatus.Charging },
+      // { from: OCPP16ChargePointStatus.SuspendedEV, OCPP16ChargePointStatus.SuspendedEV },
+      { from: OCPP16ChargePointStatus.SuspendedEV, to: OCPP16ChargePointStatus.SuspendedEVSE },
+      { from: OCPP16ChargePointStatus.SuspendedEV, to: OCPP16ChargePointStatus.Finishing },
+      // { from: OCPP16ChargePointStatus.SuspendedEV, to: OCPP16ChargePointStatus.Reserved },
+      { from: OCPP16ChargePointStatus.SuspendedEV, to: OCPP16ChargePointStatus.Unavailable },
+      { from: OCPP16ChargePointStatus.SuspendedEV, to: OCPP16ChargePointStatus.Faulted },
+      // { to: OCPP16ChargePointStatus.SuspendedEVSE },
+      { from: OCPP16ChargePointStatus.SuspendedEVSE, to: OCPP16ChargePointStatus.Available },
+      // { from: OCPP16ChargePointStatus.SuspendedEVSE, to: OCPP16ChargePointStatus.Preparing },
+      { from: OCPP16ChargePointStatus.SuspendedEVSE, to: OCPP16ChargePointStatus.Charging },
+      { from: OCPP16ChargePointStatus.SuspendedEVSE, to: OCPP16ChargePointStatus.SuspendedEV },
+      // { from: OCPP16ChargePointStatus.SuspendedEVSE, to: OCPP16ChargePointStatus.SuspendedEVSE },
+      { from: OCPP16ChargePointStatus.SuspendedEVSE, to: OCPP16ChargePointStatus.Finishing },
+      // { from: OCPP16ChargePointStatus.SuspendedEVSE, to: OCPP16ChargePointStatus.Reserved },
+      { from: OCPP16ChargePointStatus.SuspendedEVSE, to: OCPP16ChargePointStatus.Unavailable },
+      { from: OCPP16ChargePointStatus.SuspendedEVSE, to: OCPP16ChargePointStatus.Faulted },
+      // { to: OCPP16ChargePointStatus.Finishing},
+      { from: OCPP16ChargePointStatus.Finishing, to: OCPP16ChargePointStatus.Available },
+      { from: OCPP16ChargePointStatus.Finishing, to: OCPP16ChargePointStatus.Preparing },
+      // { from: OCPP16ChargePointStatus.Finishing, to: OCPP16ChargePointStatus.Charging },
+      // { from: OCPP16ChargePointStatus.Finishing, to: OCPP16ChargePointStatus.SuspendedEV },
+      // { from: OCPP16ChargePointStatus.Finishing, to: OCPP16ChargePointStatus.SuspendedEVSE },
+      // { from: OCPP16ChargePointStatus.Finishing, to: OCPP16ChargePointStatus.Finishing },
+      // { from: OCPP16ChargePointStatus.Finishing, to: OCPP16ChargePointStatus.Reserved },
+      { from: OCPP16ChargePointStatus.Finishing, to: OCPP16ChargePointStatus.Unavailable },
+      { from: OCPP16ChargePointStatus.Finishing, to: OCPP16ChargePointStatus.Faulted },
+      // { to: OCPP16ChargePointStatus.Reserved },
+      { from: OCPP16ChargePointStatus.Reserved, to: OCPP16ChargePointStatus.Available },
+      { from: OCPP16ChargePointStatus.Reserved, to: OCPP16ChargePointStatus.Preparing },
+      // { from: OCPP16ChargePointStatus.Reserved, to: OCPP16ChargePointStatus.Charging },
+      // { from: OCPP16ChargePointStatus.Reserved, to: OCPP16ChargePointStatus.SuspendedEV },
+      // { from: OCPP16ChargePointStatus.Reserved, to: OCPP16ChargePointStatus.SuspendedEVSE },
+      // { from: OCPP16ChargePointStatus.Reserved, to: OCPP16ChargePointStatus.Finishing },
+      // { from: OCPP16ChargePointStatus.Reserved, to: OCPP16ChargePointStatus.Reserved },
+      { from: OCPP16ChargePointStatus.Reserved, to: OCPP16ChargePointStatus.Unavailable },
+      { from: OCPP16ChargePointStatus.Reserved, to: OCPP16ChargePointStatus.Faulted },
       { to: OCPP16ChargePointStatus.Unavailable },
       { from: OCPP16ChargePointStatus.Unavailable, to: OCPP16ChargePointStatus.Available },
+      { from: OCPP16ChargePointStatus.Unavailable, to: OCPP16ChargePointStatus.Preparing },
+      { from: OCPP16ChargePointStatus.Unavailable, to: OCPP16ChargePointStatus.Charging },
+      { from: OCPP16ChargePointStatus.Unavailable, to: OCPP16ChargePointStatus.SuspendedEV },
+      { from: OCPP16ChargePointStatus.Unavailable, to: OCPP16ChargePointStatus.SuspendedEVSE },
+      // { from: OCPP16ChargePointStatus.Unavailable, to: OCPP16ChargePointStatus.Finishing },
+      // { from: OCPP16ChargePointStatus.Unavailable, to: OCPP16ChargePointStatus.Reserved },
       // { from: OCPP16ChargePointStatus.Unavailable, to: OCPP16ChargePointStatus.Unavailable },
       { from: OCPP16ChargePointStatus.Unavailable, to: OCPP16ChargePointStatus.Faulted },
       { to: OCPP16ChargePointStatus.Faulted },
       { from: OCPP16ChargePointStatus.Faulted, to: OCPP16ChargePointStatus.Available },
+      { from: OCPP16ChargePointStatus.Faulted, to: OCPP16ChargePointStatus.Preparing },
+      { from: OCPP16ChargePointStatus.Faulted, to: OCPP16ChargePointStatus.Charging },
+      { from: OCPP16ChargePointStatus.Faulted, to: OCPP16ChargePointStatus.SuspendedEV },
+      { from: OCPP16ChargePointStatus.Faulted, to: OCPP16ChargePointStatus.SuspendedEVSE },
+      { from: OCPP16ChargePointStatus.Faulted, to: OCPP16ChargePointStatus.Finishing },
+      { from: OCPP16ChargePointStatus.Faulted, to: OCPP16ChargePointStatus.Reserved },
       { from: OCPP16ChargePointStatus.Faulted, to: OCPP16ChargePointStatus.Unavailable },
       // { from: OCPP16ChargePointStatus.Faulted, to: OCPP16ChargePointStatus.Faulted },
     ]);
-
-  static readonly ChargePointStatusConnectorTransitions: Readonly<Transition[]> = Object.freeze([
-    { to: OCPP16ChargePointStatus.Available },
-    // { from: OCPP16ChargePointStatus.Available, to: OCPP16ChargePointStatus.Available },
-    { from: OCPP16ChargePointStatus.Available, to: OCPP16ChargePointStatus.Preparing },
-    { from: OCPP16ChargePointStatus.Available, to: OCPP16ChargePointStatus.Charging },
-    { from: OCPP16ChargePointStatus.Available, to: OCPP16ChargePointStatus.SuspendedEV },
-    { from: OCPP16ChargePointStatus.Available, to: OCPP16ChargePointStatus.SuspendedEVSE },
-    // { from: OCPP16ChargePointStatus.Available, to: OCPP16ChargePointStatus.Finishing },
-    { from: OCPP16ChargePointStatus.Available, to: OCPP16ChargePointStatus.Reserved },
-    { from: OCPP16ChargePointStatus.Available, to: OCPP16ChargePointStatus.Unavailable },
-    { from: OCPP16ChargePointStatus.Available, to: OCPP16ChargePointStatus.Faulted },
-    // { to: OCPP16ChargePointStatus.Preparing },
-    { from: OCPP16ChargePointStatus.Preparing, to: OCPP16ChargePointStatus.Available },
-    // { from: OCPP16ChargePointStatus.Preparing, to: OCPP16ChargePointStatus.Preparing },
-    { from: OCPP16ChargePointStatus.Preparing, to: OCPP16ChargePointStatus.Charging },
-    { from: OCPP16ChargePointStatus.Preparing, to: OCPP16ChargePointStatus.SuspendedEV },
-    { from: OCPP16ChargePointStatus.Preparing, to: OCPP16ChargePointStatus.SuspendedEVSE },
-    { from: OCPP16ChargePointStatus.Preparing, to: OCPP16ChargePointStatus.Finishing },
-    // { from: OCPP16ChargePointStatus.Preparing, to: OCPP16ChargePointStatus.Reserved },
-    // { from: OCPP16ChargePointStatus.Preparing, to: OCPP16ChargePointStatus.Unavailable },
-    { from: OCPP16ChargePointStatus.Preparing, to: OCPP16ChargePointStatus.Faulted },
-    // { to: OCPP16ChargePointStatus.Charging },
-    { from: OCPP16ChargePointStatus.Charging, to: OCPP16ChargePointStatus.Available },
-    // { from: OCPP16ChargePointStatus.Charging, to: OCPP16ChargePointStatus.Preparing },
-    // { from: OCPP16ChargePointStatus.Charging, to: OCPP16ChargePointStatus.Charging },
-    { from: OCPP16ChargePointStatus.Charging, to: OCPP16ChargePointStatus.SuspendedEV },
-    { from: OCPP16ChargePointStatus.Charging, to: OCPP16ChargePointStatus.SuspendedEVSE },
-    { from: OCPP16ChargePointStatus.Charging, to: OCPP16ChargePointStatus.Finishing },
-    // { from: OCPP16ChargePointStatus.Charging, to: OCPP16ChargePointStatus.Reserved },
-    { from: OCPP16ChargePointStatus.Charging, to: OCPP16ChargePointStatus.Unavailable },
-    { from: OCPP16ChargePointStatus.Charging, to: OCPP16ChargePointStatus.Faulted },
-    // { to: OCPP16ChargePointStatus.SuspendedEV },
-    { from: OCPP16ChargePointStatus.SuspendedEV, to: OCPP16ChargePointStatus.Available },
-    // { from: OCPP16ChargePointStatus.SuspendedEV, to: OCPP16ChargePointStatus.Preparing },
-    { from: OCPP16ChargePointStatus.SuspendedEV, to: OCPP16ChargePointStatus.Charging },
-    // { from: OCPP16ChargePointStatus.SuspendedEV, OCPP16ChargePointStatus.SuspendedEV },
-    { from: OCPP16ChargePointStatus.SuspendedEV, to: OCPP16ChargePointStatus.SuspendedEVSE },
-    { from: OCPP16ChargePointStatus.SuspendedEV, to: OCPP16ChargePointStatus.Finishing },
-    // { from: OCPP16ChargePointStatus.SuspendedEV, to: OCPP16ChargePointStatus.Reserved },
-    { from: OCPP16ChargePointStatus.SuspendedEV, to: OCPP16ChargePointStatus.Unavailable },
-    { from: OCPP16ChargePointStatus.SuspendedEV, to: OCPP16ChargePointStatus.Faulted },
-    // { to: OCPP16ChargePointStatus.SuspendedEVSE },
-    { from: OCPP16ChargePointStatus.SuspendedEVSE, to: OCPP16ChargePointStatus.Available },
-    // { from: OCPP16ChargePointStatus.SuspendedEVSE, to: OCPP16ChargePointStatus.Preparing },
-    { from: OCPP16ChargePointStatus.SuspendedEVSE, to: OCPP16ChargePointStatus.Charging },
-    { from: OCPP16ChargePointStatus.SuspendedEVSE, to: OCPP16ChargePointStatus.SuspendedEV },
-    // { from: OCPP16ChargePointStatus.SuspendedEVSE, to: OCPP16ChargePointStatus.SuspendedEVSE },
-    { from: OCPP16ChargePointStatus.SuspendedEVSE, to: OCPP16ChargePointStatus.Finishing },
-    // { from: OCPP16ChargePointStatus.SuspendedEVSE, to: OCPP16ChargePointStatus.Reserved },
-    { from: OCPP16ChargePointStatus.SuspendedEVSE, to: OCPP16ChargePointStatus.Unavailable },
-    { from: OCPP16ChargePointStatus.SuspendedEVSE, to: OCPP16ChargePointStatus.Faulted },
-    // { to: OCPP16ChargePointStatus.Finishing},
-    { from: OCPP16ChargePointStatus.Finishing, to: OCPP16ChargePointStatus.Available },
-    { from: OCPP16ChargePointStatus.Finishing, to: OCPP16ChargePointStatus.Preparing },
-    // { from: OCPP16ChargePointStatus.Finishing, to: OCPP16ChargePointStatus.Charging },
-    // { from: OCPP16ChargePointStatus.Finishing, to: OCPP16ChargePointStatus.SuspendedEV },
-    // { from: OCPP16ChargePointStatus.Finishing, to: OCPP16ChargePointStatus.SuspendedEVSE },
-    // { from: OCPP16ChargePointStatus.Finishing, to: OCPP16ChargePointStatus.Finishing },
-    // { from: OCPP16ChargePointStatus.Finishing, to: OCPP16ChargePointStatus.Reserved },
-    { from: OCPP16ChargePointStatus.Finishing, to: OCPP16ChargePointStatus.Unavailable },
-    { from: OCPP16ChargePointStatus.Finishing, to: OCPP16ChargePointStatus.Faulted },
-    // { to: OCPP16ChargePointStatus.Reserved },
-    { from: OCPP16ChargePointStatus.Reserved, to: OCPP16ChargePointStatus.Available },
-    { from: OCPP16ChargePointStatus.Reserved, to: OCPP16ChargePointStatus.Preparing },
-    // { from: OCPP16ChargePointStatus.Reserved, to: OCPP16ChargePointStatus.Charging },
-    // { from: OCPP16ChargePointStatus.Reserved, to: OCPP16ChargePointStatus.SuspendedEV },
-    // { from: OCPP16ChargePointStatus.Reserved, to: OCPP16ChargePointStatus.SuspendedEVSE },
-    // { from: OCPP16ChargePointStatus.Reserved, to: OCPP16ChargePointStatus.Finishing },
-    // { from: OCPP16ChargePointStatus.Reserved, to: OCPP16ChargePointStatus.Reserved },
-    { from: OCPP16ChargePointStatus.Reserved, to: OCPP16ChargePointStatus.Unavailable },
-    { from: OCPP16ChargePointStatus.Reserved, to: OCPP16ChargePointStatus.Faulted },
-    { to: OCPP16ChargePointStatus.Unavailable },
-    { from: OCPP16ChargePointStatus.Unavailable, to: OCPP16ChargePointStatus.Available },
-    { from: OCPP16ChargePointStatus.Unavailable, to: OCPP16ChargePointStatus.Preparing },
-    { from: OCPP16ChargePointStatus.Unavailable, to: OCPP16ChargePointStatus.Charging },
-    { from: OCPP16ChargePointStatus.Unavailable, to: OCPP16ChargePointStatus.SuspendedEV },
-    { from: OCPP16ChargePointStatus.Unavailable, to: OCPP16ChargePointStatus.SuspendedEVSE },
-    // { from: OCPP16ChargePointStatus.Unavailable, to: OCPP16ChargePointStatus.Finishing },
-    // { from: OCPP16ChargePointStatus.Unavailable, to: OCPP16ChargePointStatus.Reserved },
-    // { from: OCPP16ChargePointStatus.Unavailable, to: OCPP16ChargePointStatus.Unavailable },
-    { from: OCPP16ChargePointStatus.Unavailable, to: OCPP16ChargePointStatus.Faulted },
-    { to: OCPP16ChargePointStatus.Faulted },
-    { from: OCPP16ChargePointStatus.Faulted, to: OCPP16ChargePointStatus.Available },
-    { from: OCPP16ChargePointStatus.Faulted, to: OCPP16ChargePointStatus.Preparing },
-    { from: OCPP16ChargePointStatus.Faulted, to: OCPP16ChargePointStatus.Charging },
-    { from: OCPP16ChargePointStatus.Faulted, to: OCPP16ChargePointStatus.SuspendedEV },
-    { from: OCPP16ChargePointStatus.Faulted, to: OCPP16ChargePointStatus.SuspendedEVSE },
-    { from: OCPP16ChargePointStatus.Faulted, to: OCPP16ChargePointStatus.Finishing },
-    { from: OCPP16ChargePointStatus.Faulted, to: OCPP16ChargePointStatus.Reserved },
-    { from: OCPP16ChargePointStatus.Faulted, to: OCPP16ChargePointStatus.Unavailable },
-    // { from: OCPP16ChargePointStatus.Faulted, to: OCPP16ChargePointStatus.Faulted },
-  ]);
 }
index f24cc565bca5f627781709111fd30da1a06fcf88..f02c89c85ce7f5ae34475a9c83eaf1dd4039a475 100644 (file)
@@ -1,72 +1,91 @@
-import { OCPP20ConnectorStatusEnumType } from '../../../types';
+import { ConnectorStatusTransition, OCPP20ConnectorStatusEnumType } from '../../../types';
 import { OCPPConstants } from '../internal';
 
-type Transition = Readonly<{
-  from?: OCPP20ConnectorStatusEnumType;
-  to: OCPP20ConnectorStatusEnumType;
-}>;
-
 export class OCPP20Constants extends OCPPConstants {
-  static readonly ChargingStationStatusTransitions: Readonly<Transition[]> = Object.freeze([
-    { to: OCPP20ConnectorStatusEnumType.Available },
-    // { from: OCPP20ConnectorStatusEnumType.Available, to: OCPP20ConnectorStatusEnumType.Available },
-    {
-      from: OCPP20ConnectorStatusEnumType.Available,
-      to: OCPP20ConnectorStatusEnumType.Unavailable,
-    },
-    { from: OCPP20ConnectorStatusEnumType.Available, to: OCPP20ConnectorStatusEnumType.Faulted },
-    { to: OCPP20ConnectorStatusEnumType.Unavailable },
-    {
-      from: OCPP20ConnectorStatusEnumType.Unavailable,
-      to: OCPP20ConnectorStatusEnumType.Available,
-    },
-    // {
-    //   from: OCPP20ConnectorStatusEnumType.Unavailable,
-    //   to: OCPP20ConnectorStatusEnumType.Unavailable,
-    // },
-    { from: OCPP20ConnectorStatusEnumType.Unavailable, to: OCPP20ConnectorStatusEnumType.Faulted },
-    { to: OCPP20ConnectorStatusEnumType.Faulted },
-    { from: OCPP20ConnectorStatusEnumType.Faulted, to: OCPP20ConnectorStatusEnumType.Available },
-    { from: OCPP20ConnectorStatusEnumType.Faulted, to: OCPP20ConnectorStatusEnumType.Unavailable },
-    // { from: OCPP20ConnectorStatusEnumType.Faulted, to: OCPP20ConnectorStatusEnumType.Faulted },
-  ]);
+  static readonly ChargingStationStatusTransitions: Readonly<ConnectorStatusTransition[]> =
+    Object.freeze([
+      { to: OCPP20ConnectorStatusEnumType.Available },
+      // { from: OCPP20ConnectorStatusEnumType.Available, to: OCPP20ConnectorStatusEnumType.Available },
+      {
+        from: OCPP20ConnectorStatusEnumType.Available,
+        to: OCPP20ConnectorStatusEnumType.Unavailable,
+      },
+      { from: OCPP20ConnectorStatusEnumType.Available, to: OCPP20ConnectorStatusEnumType.Faulted },
+      { to: OCPP20ConnectorStatusEnumType.Unavailable },
+      {
+        from: OCPP20ConnectorStatusEnumType.Unavailable,
+        to: OCPP20ConnectorStatusEnumType.Available,
+      },
+      // {
+      //   from: OCPP20ConnectorStatusEnumType.Unavailable,
+      //   to: OCPP20ConnectorStatusEnumType.Unavailable,
+      // },
+      {
+        from: OCPP20ConnectorStatusEnumType.Unavailable,
+        to: OCPP20ConnectorStatusEnumType.Faulted,
+      },
+      { to: OCPP20ConnectorStatusEnumType.Faulted },
+      { from: OCPP20ConnectorStatusEnumType.Faulted, to: OCPP20ConnectorStatusEnumType.Available },
+      {
+        from: OCPP20ConnectorStatusEnumType.Faulted,
+        to: OCPP20ConnectorStatusEnumType.Unavailable,
+      },
+      // { from: OCPP20ConnectorStatusEnumType.Faulted, to: OCPP20ConnectorStatusEnumType.Faulted },
+    ]);
 
-  static readonly ConnectorStatusTransitions: Readonly<Transition[]> = Object.freeze([
-    { to: OCPP20ConnectorStatusEnumType.Available },
-    // { from: OCPP20ConnectorStatusEnumType.Available, to: OCPP20ConnectorStatusEnumType.Available },
-    { from: OCPP20ConnectorStatusEnumType.Available, to: OCPP20ConnectorStatusEnumType.Occupied },
-    { from: OCPP20ConnectorStatusEnumType.Available, to: OCPP20ConnectorStatusEnumType.Reserved },
-    {
-      from: OCPP20ConnectorStatusEnumType.Available,
-      to: OCPP20ConnectorStatusEnumType.Unavailable,
-    },
-    { from: OCPP20ConnectorStatusEnumType.Available, to: OCPP20ConnectorStatusEnumType.Faulted },
-    // { to: OCPP20ConnectorStatusEnumType.Occupied },
-    { from: OCPP20ConnectorStatusEnumType.Occupied, to: OCPP20ConnectorStatusEnumType.Available },
-    // { from: OCPP20ConnectorStatusEnumType.Occupied, to: OCPP20ConnectorStatusEnumType.Occupied },
-    // { from: OCPP20ConnectorStatusEnumType.Occupied, to: OCPP20ConnectorStatusEnumType.Reserved },
-    { from: OCPP20ConnectorStatusEnumType.Occupied, to: OCPP20ConnectorStatusEnumType.Unavailable },
-    { from: OCPP20ConnectorStatusEnumType.Occupied, to: OCPP20ConnectorStatusEnumType.Faulted },
-    // { to: OCPP20ConnectorStatusEnumType.Reserved },
-    { from: OCPP20ConnectorStatusEnumType.Reserved, to: OCPP20ConnectorStatusEnumType.Available },
-    { from: OCPP20ConnectorStatusEnumType.Reserved, to: OCPP20ConnectorStatusEnumType.Occupied },
-    // { from: OCPP20ConnectorStatusEnumType.Reserved, to: OCPP20ConnectorStatusEnumType.Reserved },
-    { from: OCPP20ConnectorStatusEnumType.Reserved, to: OCPP20ConnectorStatusEnumType.Unavailable },
-    { from: OCPP20ConnectorStatusEnumType.Reserved, to: OCPP20ConnectorStatusEnumType.Faulted },
-    { to: OCPP20ConnectorStatusEnumType.Unavailable },
-    {
-      from: OCPP20ConnectorStatusEnumType.Unavailable,
-      to: OCPP20ConnectorStatusEnumType.Available,
-    },
-    { from: OCPP20ConnectorStatusEnumType.Unavailable, to: OCPP20ConnectorStatusEnumType.Occupied },
-    // { from: OCPP20ConnectorStatusEnumType.Unavailable, to: OCPP20ConnectorStatusEnumType.Reserved },
-    // { from: OCPP20ConnectorStatusEnumType.Unavailable, to: OCPP20ConnectorStatusEnumType.Unavailable },
-    { from: OCPP20ConnectorStatusEnumType.Unavailable, to: OCPP20ConnectorStatusEnumType.Faulted },
-    { to: OCPP20ConnectorStatusEnumType.Faulted },
-    { from: OCPP20ConnectorStatusEnumType.Faulted, to: OCPP20ConnectorStatusEnumType.Available },
-    { from: OCPP20ConnectorStatusEnumType.Faulted, to: OCPP20ConnectorStatusEnumType.Occupied },
-    { from: OCPP20ConnectorStatusEnumType.Faulted, to: OCPP20ConnectorStatusEnumType.Reserved },
-    { from: OCPP20ConnectorStatusEnumType.Faulted, to: OCPP20ConnectorStatusEnumType.Unavailable },
-    // { from: OCPP20ConnectorStatusEnumType.Faulted, to: OCPP20ConnectorStatusEnumType.Faulted },
-  ]);
+  static readonly ConnectorStatusTransitions: Readonly<ConnectorStatusTransition[]> = Object.freeze(
+    [
+      { to: OCPP20ConnectorStatusEnumType.Available },
+      // { from: OCPP20ConnectorStatusEnumType.Available, to: OCPP20ConnectorStatusEnumType.Available },
+      { from: OCPP20ConnectorStatusEnumType.Available, to: OCPP20ConnectorStatusEnumType.Occupied },
+      { from: OCPP20ConnectorStatusEnumType.Available, to: OCPP20ConnectorStatusEnumType.Reserved },
+      {
+        from: OCPP20ConnectorStatusEnumType.Available,
+        to: OCPP20ConnectorStatusEnumType.Unavailable,
+      },
+      { from: OCPP20ConnectorStatusEnumType.Available, to: OCPP20ConnectorStatusEnumType.Faulted },
+      // { to: OCPP20ConnectorStatusEnumType.Occupied },
+      { from: OCPP20ConnectorStatusEnumType.Occupied, to: OCPP20ConnectorStatusEnumType.Available },
+      // { from: OCPP20ConnectorStatusEnumType.Occupied, to: OCPP20ConnectorStatusEnumType.Occupied },
+      // { from: OCPP20ConnectorStatusEnumType.Occupied, to: OCPP20ConnectorStatusEnumType.Reserved },
+      {
+        from: OCPP20ConnectorStatusEnumType.Occupied,
+        to: OCPP20ConnectorStatusEnumType.Unavailable,
+      },
+      { from: OCPP20ConnectorStatusEnumType.Occupied, to: OCPP20ConnectorStatusEnumType.Faulted },
+      // { to: OCPP20ConnectorStatusEnumType.Reserved },
+      { from: OCPP20ConnectorStatusEnumType.Reserved, to: OCPP20ConnectorStatusEnumType.Available },
+      { from: OCPP20ConnectorStatusEnumType.Reserved, to: OCPP20ConnectorStatusEnumType.Occupied },
+      // { from: OCPP20ConnectorStatusEnumType.Reserved, to: OCPP20ConnectorStatusEnumType.Reserved },
+      {
+        from: OCPP20ConnectorStatusEnumType.Reserved,
+        to: OCPP20ConnectorStatusEnumType.Unavailable,
+      },
+      { from: OCPP20ConnectorStatusEnumType.Reserved, to: OCPP20ConnectorStatusEnumType.Faulted },
+      { to: OCPP20ConnectorStatusEnumType.Unavailable },
+      {
+        from: OCPP20ConnectorStatusEnumType.Unavailable,
+        to: OCPP20ConnectorStatusEnumType.Available,
+      },
+      {
+        from: OCPP20ConnectorStatusEnumType.Unavailable,
+        to: OCPP20ConnectorStatusEnumType.Occupied,
+      },
+      // { from: OCPP20ConnectorStatusEnumType.Unavailable, to: OCPP20ConnectorStatusEnumType.Reserved },
+      // { from: OCPP20ConnectorStatusEnumType.Unavailable, to: OCPP20ConnectorStatusEnumType.Unavailable },
+      {
+        from: OCPP20ConnectorStatusEnumType.Unavailable,
+        to: OCPP20ConnectorStatusEnumType.Faulted,
+      },
+      { to: OCPP20ConnectorStatusEnumType.Faulted },
+      { from: OCPP20ConnectorStatusEnumType.Faulted, to: OCPP20ConnectorStatusEnumType.Available },
+      { from: OCPP20ConnectorStatusEnumType.Faulted, to: OCPP20ConnectorStatusEnumType.Occupied },
+      { from: OCPP20ConnectorStatusEnumType.Faulted, to: OCPP20ConnectorStatusEnumType.Reserved },
+      {
+        from: OCPP20ConnectorStatusEnumType.Faulted,
+        to: OCPP20ConnectorStatusEnumType.Unavailable,
+      },
+      // { from: OCPP20ConnectorStatusEnumType.Faulted, to: OCPP20ConnectorStatusEnumType.Faulted },
+    ]
+  );
 }
index 5170678f7c66a3774d6937482dcbb431716c43b2..eaf26be9cbe4473979f9c99967b607badf83c5b5 100644 (file)
@@ -47,6 +47,7 @@ export {
   ConnectorPhaseRotation,
   type ConnectorStatus,
   ConnectorStatusEnum,
+  type ConnectorStatusTransition,
   CurrentType,
   DBName,
   type DataTransferRequest,
index a98e15d98b42409c2ec35d35edc1c5206d3fb46e..6c251cb79ab2dd431a39806f84bd5acdebd5bd2d 100644 (file)
@@ -5,3 +5,8 @@ export const ConnectorStatusEnum = {
   ...OCPP20ConnectorStatusEnumType,
 } as const;
 export type ConnectorStatusEnum = OCPP16ChargePointStatus | OCPP20ConnectorStatusEnumType;
+
+export type ConnectorStatusTransition = Readonly<{
+  from?: ConnectorStatusEnum;
+  to: ConnectorStatusEnum;
+}>;