refactor: cleanup default params in error handlers
[e-mobility-charging-stations-simulator.git] / ui / web / src / types / ChargingStationType.ts
index 276e9dd9f159b1810051a107f34552960fa4641b..167e3a1a8498b79c272bd3792be6ced370e32199 100644 (file)
@@ -1,6 +1,30 @@
 import type { JsonObject } from './JsonType'
 
-export type ChargingStationData = {
+export enum IdTagDistribution {
+  RANDOM = 'random',
+  ROUND_ROBIN = 'round-robin',
+  CONNECTOR_AFFINITY = 'connector-affinity'
+}
+
+export interface AutomaticTransactionGeneratorConfiguration extends JsonObject {
+  enable: boolean
+  minDuration: number
+  maxDuration: number
+  minDelayBetweenTwoTransactions: number
+  maxDelayBetweenTwoTransactions: number
+  probabilityOfStart: number
+  stopAfterHours: number
+  stopAbsoluteDuration: boolean
+  requireAuthorize?: boolean
+  idTagDistribution?: IdTagDistribution
+}
+
+export interface ChargingStationAutomaticTransactionGeneratorConfiguration extends JsonObject {
+  automaticTransactionGenerator?: AutomaticTransactionGeneratorConfiguration
+  automaticTransactionGeneratorStatuses?: Status[]
+}
+
+export interface ChargingStationData extends JsonObject {
   started: boolean
   stationInfo: ChargingStationInfo
   connectors: ConnectorStatus[]
@@ -13,7 +37,7 @@ export type ChargingStationData = {
     | typeof WebSocket.CLOSING
     | typeof WebSocket.CLOSED
   bootNotificationResponse?: BootNotificationResponse
-  automaticTransactionGenerator?: Status[]
+  automaticTransactionGenerator?: ChargingStationAutomaticTransactionGeneratorConfiguration
 }
 
 export enum OCPP16FirmwareStatus {
@@ -26,41 +50,63 @@ export enum OCPP16FirmwareStatus {
   Installed = 'Installed'
 }
 
+export interface FirmwareUpgrade extends JsonObject {
+  versionUpgrade?: {
+    patternGroup?: number
+    step?: number
+  }
+  reset?: boolean
+  failureStatus?: FirmwareStatus
+}
+
 export const FirmwareStatus = {
   ...OCPP16FirmwareStatus
 } as const
 export type FirmwareStatus = OCPP16FirmwareStatus
 
-export type ChargingStationInfo = {
+export interface ChargingStationOptions extends JsonObject {
+  supervisionUrls?: string | string[]
+  persistentConfiguration?: boolean
+  autoStart?: boolean
+  autoRegister?: boolean
+  enableStatistics?: boolean
+  ocppStrictCompliance?: boolean
+  stopTransactionsOnStopped?: boolean
+}
+
+export interface ChargingStationInfo extends JsonObject {
   hashId: string
+  templateIndex: number
   templateName: string
-  chargingStationId?: string
-  chargePointModel: string
-  chargePointVendor: string
-  firmwareVersionPattern?: string
-  firmwareVersion?: string
-  firmwareStatus?: FirmwareStatus
-  numberOfConnectors?: number | number[]
-  baseName: string
-  templateHash?: string
+  chargingStationId: string
   chargeBoxSerialNumber?: string
   chargePointSerialNumber?: string
   meterSerialNumber?: string
   maximumPower?: number // Always in Watt
   maximumAmperage?: number // Always in Ampere
+  firmwareStatus?: FirmwareStatus
+  templateHash?: string
   supervisionUrls?: string | string[]
   supervisionUrlOcppConfiguration?: boolean
   supervisionUrlOcppKey?: string
   supervisionUser?: string
   supervisionPassword?: string
+  autoStart?: boolean
   ocppVersion?: OCPPVersion
   ocppProtocol?: OCPPProtocol
   ocppStrictCompliance?: boolean
   ocppPersistentConfiguration?: boolean
   stationInfoPersistentConfiguration?: boolean
+  automaticTransactionGeneratorPersistentConfiguration?: boolean
   idTagsFile?: string
+  baseName: string
   nameSuffix?: string
   fixedName?: boolean
+  chargePointModel: string
+  chargePointVendor: string
+  firmwareVersionPattern?: string
+  firmwareVersion?: string
+  firmwareUpgrade?: FirmwareUpgrade
   iccid?: string
   imsi?: string
   meterType?: string
@@ -83,6 +129,7 @@ export type ChargingStationInfo = {
   outOfOrderEndMeterValues?: boolean
   meteringPerTransaction?: boolean
   transactionDataMeterValues?: boolean
+  stopTransactionsOnStopped?: boolean
   mainVoltageMeterValues?: boolean
   phaseLineToLineVoltageMeterValues?: boolean
   customValueLimitationMeterValues?: boolean
@@ -90,20 +137,20 @@ export type ChargingStationInfo = {
   messageTriggerSupport?: Record<MessageTrigger, boolean>
 }
 
-export interface ChargingStationOcppConfiguration {
+export interface ChargingStationOcppConfiguration extends JsonObject {
   configurationKey?: ConfigurationKey[]
 }
 
-export type ConfigurationKey = OCPPConfigurationKey & {
+export interface ConfigurationKey extends OCPPConfigurationKey {
   visible?: boolean
   reboot?: boolean
 }
 
-export type OCPPConfigurationKey = {
+export interface OCPPConfigurationKey extends JsonObject {
   key: string
   readonly: boolean
   value?: string
-} & JsonObject
+}
 
 export enum OCPP16IncomingRequestCommand {
   RESET = 'Reset',
@@ -169,14 +216,15 @@ export const MessageTrigger = {
 } as const
 export type MessageTrigger = OCPP16MessageTrigger
 
-type CommandsSupport = {
+interface CommandsSupport extends JsonObject {
   incomingCommands: Record<IncomingRequestCommand, boolean>
   outgoingCommands?: Record<RequestCommand, boolean>
 }
 
 export enum OCPPVersion {
   VERSION_16 = '1.6',
-  VERSION_20 = '2.0'
+  VERSION_20 = '2.0',
+  VERSION_201 = '2.0.1'
 }
 
 export enum OCPPProtocol {
@@ -202,7 +250,7 @@ export enum AmpereUnits {
   AMPERE = 'A'
 }
 
-export type ConnectorStatus = {
+export interface ConnectorStatus extends JsonObject {
   availability: AvailabilityType
   bootStatus?: ChargePointStatus
   status?: ChargePointStatus
@@ -218,7 +266,7 @@ export type ConnectorStatus = {
   transactionEnergyActiveImportRegisterValue?: number // In Wh
 }
 
-export type EvseStatus = {
+export interface EvseStatus extends JsonObject {
   availability: AvailabilityType
   connectors?: ConnectorStatus[]
 }
@@ -243,7 +291,7 @@ export enum OCPP16ChargePointStatus {
 }
 export type ChargePointStatus = OCPP16ChargePointStatus
 
-export type Status = {
+export interface Status extends JsonObject {
   start?: boolean
   startDate?: Date
   lastRunDate?: Date