9baff1ae043b594cb028e2105246a7c08baef94c
[e-mobility-charging-stations-simulator.git] / ui / web / src / types / ChargingStationType.ts
1 import type { JsonObject } from './JsonType'
2
3 export enum IdTagDistribution {
4 RANDOM = 'random',
5 ROUND_ROBIN = 'round-robin',
6 CONNECTOR_AFFINITY = 'connector-affinity'
7 }
8
9 export interface AutomaticTransactionGeneratorConfiguration {
10 enable: boolean
11 minDuration: number
12 maxDuration: number
13 minDelayBetweenTwoTransactions: number
14 maxDelayBetweenTwoTransactions: number
15 probabilityOfStart: number
16 stopAfterHours: number
17 stopAbsoluteDuration: boolean
18 requireAuthorize?: boolean
19 idTagDistribution?: IdTagDistribution
20 }
21
22 export interface ChargingStationAutomaticTransactionGeneratorConfiguration {
23 automaticTransactionGenerator?: AutomaticTransactionGeneratorConfiguration
24 automaticTransactionGeneratorStatuses?: Status[]
25 }
26
27 export type ChargingStationData = {
28 started: boolean
29 stationInfo: ChargingStationInfo
30 connectors: ConnectorStatus[]
31 evses: EvseStatus[]
32 ocppConfiguration: ChargingStationOcppConfiguration
33 supervisionUrl: string
34 wsState?:
35 | typeof WebSocket.CONNECTING
36 | typeof WebSocket.OPEN
37 | typeof WebSocket.CLOSING
38 | typeof WebSocket.CLOSED
39 bootNotificationResponse?: BootNotificationResponse
40 automaticTransactionGenerator?: ChargingStationAutomaticTransactionGeneratorConfiguration
41 }
42
43 export enum OCPP16FirmwareStatus {
44 Downloaded = 'Downloaded',
45 DownloadFailed = 'DownloadFailed',
46 Downloading = 'Downloading',
47 Idle = 'Idle',
48 InstallationFailed = 'InstallationFailed',
49 Installing = 'Installing',
50 Installed = 'Installed'
51 }
52
53 export interface FirmwareUpgrade {
54 versionUpgrade?: {
55 patternGroup?: number
56 step?: number
57 }
58 reset?: boolean
59 failureStatus?: FirmwareStatus
60 }
61
62 export const FirmwareStatus = {
63 ...OCPP16FirmwareStatus
64 } as const
65 export type FirmwareStatus = OCPP16FirmwareStatus
66
67 export type ChargingStationInfo = {
68 hashId: string
69 templateIndex: number
70 templateName: string
71 chargingStationId: string
72 chargeBoxSerialNumber?: string
73 chargePointSerialNumber?: string
74 meterSerialNumber?: string
75 maximumPower?: number // Always in Watt
76 maximumAmperage?: number // Always in Ampere
77 firmwareStatus?: FirmwareStatus
78 templateHash?: string
79 supervisionUrls?: string | string[]
80 supervisionUrlOcppConfiguration?: boolean
81 supervisionUrlOcppKey?: string
82 supervisionUser?: string
83 supervisionPassword?: string
84 autoStart?: boolean
85 ocppVersion?: OCPPVersion
86 ocppProtocol?: OCPPProtocol
87 ocppStrictCompliance?: boolean
88 ocppPersistentConfiguration?: boolean
89 stationInfoPersistentConfiguration?: boolean
90 automaticTransactionGeneratorPersistentConfiguration?: boolean
91 idTagsFile?: string
92 baseName: string
93 nameSuffix?: string
94 fixedName?: boolean
95 chargePointModel: string
96 chargePointVendor: string
97 firmwareVersionPattern?: string
98 firmwareVersion?: string
99 firmwareUpgrade?: FirmwareUpgrade
100 iccid?: string
101 imsi?: string
102 meterType?: string
103 powerSharedByConnectors?: boolean
104 currentOutType?: CurrentType
105 voltageOut?: Voltage
106 numberOfPhases?: number
107 useConnectorId0?: boolean
108 randomConnectors?: boolean
109 resetTime?: number
110 autoRegister?: boolean
111 autoReconnectMaxRetries?: number
112 reconnectExponentialDelay?: boolean
113 registrationMaxRetries?: number
114 enableStatistics?: boolean
115 remoteAuthorization?: boolean
116 amperageLimitationOcppKey?: string
117 amperageLimitationUnit?: AmpereUnits
118 beginEndMeterValues?: boolean
119 outOfOrderEndMeterValues?: boolean
120 meteringPerTransaction?: boolean
121 transactionDataMeterValues?: boolean
122 stopTransactionsOnStopped?: boolean
123 mainVoltageMeterValues?: boolean
124 phaseLineToLineVoltageMeterValues?: boolean
125 customValueLimitationMeterValues?: boolean
126 commandsSupport?: CommandsSupport
127 messageTriggerSupport?: Record<MessageTrigger, boolean>
128 }
129
130 export interface ChargingStationOcppConfiguration {
131 configurationKey?: ConfigurationKey[]
132 }
133
134 export type ConfigurationKey = OCPPConfigurationKey & {
135 visible?: boolean
136 reboot?: boolean
137 }
138
139 export type OCPPConfigurationKey = {
140 key: string
141 readonly: boolean
142 value?: string
143 } & JsonObject
144
145 export enum OCPP16IncomingRequestCommand {
146 RESET = 'Reset',
147 CLEAR_CACHE = 'ClearCache',
148 CHANGE_AVAILABILITY = 'ChangeAvailability',
149 UNLOCK_CONNECTOR = 'UnlockConnector',
150 GET_CONFIGURATION = 'GetConfiguration',
151 CHANGE_CONFIGURATION = 'ChangeConfiguration',
152 SET_CHARGING_PROFILE = 'SetChargingProfile',
153 CLEAR_CHARGING_PROFILE = 'ClearChargingProfile',
154 REMOTE_START_TRANSACTION = 'RemoteStartTransaction',
155 REMOTE_STOP_TRANSACTION = 'RemoteStopTransaction',
156 GET_DIAGNOSTICS = 'GetDiagnostics',
157 TRIGGER_MESSAGE = 'TriggerMessage'
158 }
159
160 export const IncomingRequestCommand = {
161 ...OCPP16IncomingRequestCommand
162 } as const
163 export type IncomingRequestCommand = OCPP16IncomingRequestCommand
164
165 export enum OCPP16RequestCommand {
166 BOOT_NOTIFICATION = 'BootNotification',
167 HEARTBEAT = 'Heartbeat',
168 STATUS_NOTIFICATION = 'StatusNotification',
169 AUTHORIZE = 'Authorize',
170 START_TRANSACTION = 'StartTransaction',
171 STOP_TRANSACTION = 'StopTransaction',
172 METER_VALUES = 'MeterValues',
173 DIAGNOSTICS_STATUS_NOTIFICATION = 'DiagnosticsStatusNotification'
174 }
175
176 export const RequestCommand = {
177 ...OCPP16RequestCommand
178 } as const
179 export type RequestCommand = OCPP16RequestCommand
180
181 export type BootNotificationResponse = OCPP16BootNotificationResponse
182
183 export enum OCPP16RegistrationStatus {
184 ACCEPTED = 'Accepted',
185 PENDING = 'Pending',
186 REJECTED = 'Rejected'
187 }
188
189 export interface OCPP16BootNotificationResponse extends JsonObject {
190 status: OCPP16RegistrationStatus
191 currentTime: Date
192 interval: number
193 }
194
195 export enum OCPP16MessageTrigger {
196 BootNotification = 'BootNotification',
197 DiagnosticsStatusNotification = 'DiagnosticsStatusNotification',
198 FirmwareStatusNotification = 'FirmwareStatusNotification',
199 Heartbeat = 'Heartbeat',
200 MeterValues = 'MeterValues',
201 StatusNotification = 'StatusNotification'
202 }
203
204 export const MessageTrigger = {
205 ...OCPP16MessageTrigger
206 } as const
207 export type MessageTrigger = OCPP16MessageTrigger
208
209 type CommandsSupport = {
210 incomingCommands: Record<IncomingRequestCommand, boolean>
211 outgoingCommands?: Record<RequestCommand, boolean>
212 }
213
214 export enum OCPPVersion {
215 VERSION_16 = '1.6',
216 VERSION_20 = '2.0',
217 VERSION_201 = '2.0.1'
218 }
219
220 export enum OCPPProtocol {
221 JSON = 'json'
222 }
223
224 export enum CurrentType {
225 AC = 'AC',
226 DC = 'DC'
227 }
228
229 export enum Voltage {
230 VOLTAGE_110 = 110,
231 VOLTAGE_230 = 230,
232 VOLTAGE_400 = 400,
233 VOLTAGE_800 = 800
234 }
235
236 export enum AmpereUnits {
237 MILLI_AMPERE = 'mA',
238 CENTI_AMPERE = 'cA',
239 DECI_AMPERE = 'dA',
240 AMPERE = 'A'
241 }
242
243 export type ConnectorStatus = {
244 availability: AvailabilityType
245 bootStatus?: ChargePointStatus
246 status?: ChargePointStatus
247 authorizeIdTag?: string
248 idTagAuthorized?: boolean
249 localAuthorizeIdTag?: string
250 idTagLocalAuthorized?: boolean
251 transactionRemoteStarted?: boolean
252 transactionStarted?: boolean
253 transactionId?: number
254 transactionIdTag?: string
255 energyActiveImportRegisterValue?: number // In Wh
256 transactionEnergyActiveImportRegisterValue?: number // In Wh
257 }
258
259 export type EvseStatus = {
260 availability: AvailabilityType
261 connectors?: ConnectorStatus[]
262 }
263
264 export enum OCPP16AvailabilityType {
265 INOPERATIVE = 'Inoperative',
266 OPERATIVE = 'Operative'
267 }
268 export type AvailabilityType = OCPP16AvailabilityType
269
270 export enum OCPP16ChargePointStatus {
271 AVAILABLE = 'Available',
272 PREPARING = 'Preparing',
273 CHARGING = 'Charging',
274 OCCUPIED = 'Occupied',
275 SUSPENDED_EVSE = 'SuspendedEVSE',
276 SUSPENDED_EV = 'SuspendedEV',
277 FINISHING = 'Finishing',
278 RESERVED = 'Reserved',
279 UNAVAILABLE = 'Unavailable',
280 FAULTED = 'Faulted'
281 }
282 export type ChargePointStatus = OCPP16ChargePointStatus
283
284 export type Status = {
285 start?: boolean
286 startDate?: Date
287 lastRunDate?: Date
288 stopDate?: Date
289 stoppedDate?: Date
290 authorizeRequests?: number
291 acceptedAuthorizeRequests?: number
292 rejectedAuthorizeRequests?: number
293 startTransactionRequests?: number
294 acceptedStartTransactionRequests?: number
295 rejectedStartTransactionRequests?: number
296 stopTransactionRequests?: number
297 acceptedStopTransactionRequests?: number
298 rejectedStopTransactionRequests?: number
299 skippedConsecutiveTransactions?: number
300 skippedTransactions?: number
301 }