summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
e375708)
Signed-off-by: Jérôme Benoit <jerome.benoit@sap.com>
`template`: string,
`numberOfStations`: number,
`options?`: {
`template`: string,
`numberOfStations`: number,
`options?`: {
+ `supervisionUrls`: string | string[],
`persistentConfiguration?`: boolean,
`autoStart?`: boolean,
`autoRegister?`: boolean,
`persistentConfiguration?`: boolean,
`autoStart?`: boolean,
`autoRegister?`: boolean,
private workerImplementation?: WorkerAbstract<ChargingStationWorkerData>
private readonly uiServer?: AbstractUIServer
private storage?: Storage
private workerImplementation?: WorkerAbstract<ChargingStationWorkerData>
private readonly uiServer?: AbstractUIServer
private storage?: Storage
- private readonly chargingStationsByTemplate: Map<string, TemplateChargingStations>
+ private readonly templatesChargingStations: Map<string, TemplateChargingStations>
private readonly version: string = version
private initializedCounters: boolean
private started: boolean
private readonly version: string = version
private initializedCounters: boolean
private started: boolean
this.started = false
this.starting = false
this.stopping = false
this.started = false
this.starting = false
this.stopping = false
- this.chargingStationsByTemplate = new Map<string, TemplateChargingStations>()
+ this.templatesChargingStations = new Map<string, TemplateChargingStations>()
this.uiServer = UIServerFactory.getUIServerImplementation(
Configuration.getConfigurationSection<UIServerConfiguration>(ConfigurationSection.uiServer)
)
this.uiServer = UIServerFactory.getUIServerImplementation(
Configuration.getConfigurationSection<UIServerConfiguration>(ConfigurationSection.uiServer)
)
}
public get numberOfChargingStationTemplates (): number {
}
public get numberOfChargingStationTemplates (): number {
- return this.chargingStationsByTemplate.size
+ return this.templatesChargingStations.size
}
public get numberOfConfiguredChargingStations (): number {
}
public get numberOfConfiguredChargingStations (): number {
- return [...this.chargingStationsByTemplate.values()].reduce(
+ return [...this.templatesChargingStations.values()].reduce(
(accumulator, value) => accumulator + value.configured,
0
)
(accumulator, value) => accumulator + value.configured,
0
)
public getLastIndex (templateName: string): number {
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
public getLastIndex (templateName: string): number {
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
- const indexes = [...this.chargingStationsByTemplate.get(templateName)!.indexes]
+ const indexes = [...this.templatesChargingStations.get(templateName)!.indexes]
.concat(0)
.sort((a, b) => a - b)
for (let i = 0; i < indexes.length - 1; i++) {
.concat(0)
.sort((a, b) => a - b)
for (let i = 0; i < indexes.length - 1; i++) {
}
private get numberOfAddedChargingStations (): number {
}
private get numberOfAddedChargingStations (): number {
- return [...this.chargingStationsByTemplate.values()].reduce(
+ return [...this.templatesChargingStations.values()].reduce(
(accumulator, value) => accumulator + value.added,
0
)
}
private get numberOfStartedChargingStations (): number {
(accumulator, value) => accumulator + value.added,
0
)
}
private get numberOfStartedChargingStations (): number {
- return [...this.chargingStationsByTemplate.values()].reduce(
+ return [...this.templatesChargingStations.values()].reduce(
(accumulator, value) => accumulator + value.started,
0
)
(accumulator, value) => accumulator + value.started,
0
)
for (const stationTemplateUrl of Configuration.getStationTemplateUrls()!) {
try {
const nbStations =
for (const stationTemplateUrl of Configuration.getStationTemplateUrls()!) {
try {
const nbStations =
- this.chargingStationsByTemplate.get(parse(stationTemplateUrl.file).name)
- ?.configured ?? stationTemplateUrl.numberOfStations
+ this.templatesChargingStations.get(parse(stationTemplateUrl.file).name)?.configured ??
+ stationTemplateUrl.numberOfStations
for (let index = 1; index <= nbStations; index++) {
await this.addChargingStation(index, stationTemplateUrl.file)
}
for (let index = 1; index <= nbStations; index++) {
await this.addChargingStation(index, stationTemplateUrl.file)
}
private readonly workerEventDeleted = (data: ChargingStationData): void => {
this.uiServer?.chargingStations.delete(data.stationInfo.hashId)
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
private readonly workerEventDeleted = (data: ChargingStationData): void => {
this.uiServer?.chargingStations.delete(data.stationInfo.hashId)
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
- --this.chargingStationsByTemplate.get(data.stationInfo.templateName)!.added
- this.chargingStationsByTemplate
- .get(data.stationInfo.templateName)
- ?.indexes.delete(data.stationInfo.templateIndex)
+ const templateChargingStations = this.templatesChargingStations.get(
+ data.stationInfo.templateName
+ )!
+ --templateChargingStations.added
+ templateChargingStations.indexes.delete(data.stationInfo.templateIndex)
logger.info(
`${this.logPrefix()} ${moduleName}.workerEventDeleted: Charging station ${
data.stationInfo.chargingStationId
logger.info(
`${this.logPrefix()} ${moduleName}.workerEventDeleted: Charging station ${
data.stationInfo.chargingStationId
private readonly workerEventStarted = (data: ChargingStationData): void => {
this.uiServer?.chargingStations.set(data.stationInfo.hashId, data)
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
private readonly workerEventStarted = (data: ChargingStationData): void => {
this.uiServer?.chargingStations.set(data.stationInfo.hashId, data)
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
- ++this.chargingStationsByTemplate.get(data.stationInfo.templateName)!.started
+ ++this.templatesChargingStations.get(data.stationInfo.templateName)!.started
logger.info(
`${this.logPrefix()} ${moduleName}.workerEventStarted: Charging station ${
data.stationInfo.chargingStationId
logger.info(
`${this.logPrefix()} ${moduleName}.workerEventStarted: Charging station ${
data.stationInfo.chargingStationId
private readonly workerEventStopped = (data: ChargingStationData): void => {
this.uiServer?.chargingStations.set(data.stationInfo.hashId, data)
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
private readonly workerEventStopped = (data: ChargingStationData): void => {
this.uiServer?.chargingStations.set(data.stationInfo.hashId, data)
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
- --this.chargingStationsByTemplate.get(data.stationInfo.templateName)!.started
+ --this.templatesChargingStations.get(data.stationInfo.templateName)!.started
logger.info(
`${this.logPrefix()} ${moduleName}.workerEventStopped: Charging station ${
data.stationInfo.chargingStationId
logger.info(
`${this.logPrefix()} ${moduleName}.workerEventStopped: Charging station ${
data.stationInfo.chargingStationId
if (isNotEmptyArray(stationTemplateUrls)) {
for (const stationTemplateUrl of stationTemplateUrls) {
const templateName = parse(stationTemplateUrl.file).name
if (isNotEmptyArray(stationTemplateUrls)) {
for (const stationTemplateUrl of stationTemplateUrls) {
const templateName = parse(stationTemplateUrl.file).name
- this.chargingStationsByTemplate.set(templateName, {
+ this.templatesChargingStations.set(templateName, {
configured: stationTemplateUrl.numberOfStations,
added: 0,
started: 0,
configured: stationTemplateUrl.numberOfStations,
added: 0,
started: 0,
})
this.uiServer?.chargingStationTemplates.add(templateName)
}
})
this.uiServer?.chargingStationTemplates.add(templateName)
}
- if (this.chargingStationsByTemplate.size !== stationTemplateUrls.length) {
+ if (this.templatesChargingStations.size !== stationTemplateUrls.length) {
console.error(
chalk.red(
"'stationTemplateUrls' contains duplicate entries, please check your configuration"
console.error(
chalk.red(
"'stationTemplateUrls' contains duplicate entries, please check your configuration"
- const templateName = parse(stationTemplateFile).name
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
- ++this.chargingStationsByTemplate.get(templateName)!.added
- this.chargingStationsByTemplate.get(templateName)?.indexes.add(index)
+ const templateChargingStations = this.templatesChargingStations.get(
+ parse(stationTemplateFile).name
+ )!
+ ++templateChargingStations.added
+ templateChargingStations.indexes.add(index)
}
private gracefulShutdown (): void {
}
private gracefulShutdown (): void {
return Constants.DEFAULT_HEARTBEAT_INTERVAL
}
return Constants.DEFAULT_HEARTBEAT_INTERVAL
}
+ public setSupervisionUrls (urls: string | string[], saveStationInfo = true): void {
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
+ this.stationInfo!.supervisionUrls = urls
+ if (saveStationInfo) {
+ this.saveStationInfo()
+ }
+ this.configuredSupervisionUrl = this.getConfiguredSupervisionUrl()
+ }
+
public setSupervisionUrl (url: string): void {
if (
this.stationInfo?.supervisionUrlOcppConfiguration === true &&
public setSupervisionUrl (url: string): void {
if (
this.stationInfo?.supervisionUrlOcppConfiguration === true &&
) {
setConfigurationKeyValue(this, this.stationInfo.supervisionUrlOcppKey, url)
} else {
) {
setConfigurationKeyValue(this, this.stationInfo.supervisionUrlOcppKey, url)
} else {
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
- this.stationInfo!.supervisionUrls = url
- this.saveStationInfo()
- this.configuredSupervisionUrl = this.getConfiguredSupervisionUrl()
+ this.setSupervisionUrls(url)
stationInfoFromFile.templateHash === stationInfoFromTemplate.templateHash
) {
return setChargingStationOptions(
stationInfoFromFile.templateHash === stationInfoFromTemplate.templateHash
) {
return setChargingStationOptions(
{ ...Constants.DEFAULT_STATION_INFO, ...stationInfoFromFile },
options
)
{ ...Constants.DEFAULT_STATION_INFO, ...stationInfoFromFile },
options
)
stationInfoFromTemplate
)
return setChargingStationOptions(
stationInfoFromTemplate
)
return setChargingStationOptions(
{ ...Constants.DEFAULT_STATION_INFO, ...stationInfoFromTemplate },
options
)
{ ...Constants.DEFAULT_STATION_INFO, ...stationInfoFromTemplate },
options
)
}
export const setChargingStationOptions = (
}
export const setChargingStationOptions = (
+ chargingStation: ChargingStation,
stationInfo: ChargingStationInfo,
options?: ChargingStationOptions
): ChargingStationInfo => {
stationInfo: ChargingStationInfo,
options?: ChargingStationOptions
): ChargingStationInfo => {
+ if (options?.supervisionUrls != null) {
+ chargingStation.setSupervisionUrls(options.supervisionUrls, false)
+ }
if (options?.persistentConfiguration != null) {
stationInfo.stationInfoPersistentConfiguration = options.persistentConfiguration
stationInfo.ocppPersistentConfiguration = options.persistentConfiguration
if (options?.persistentConfiguration != null) {
stationInfo.stationInfoPersistentConfiguration = options.persistentConfiguration
stationInfo.ocppPersistentConfiguration = options.persistentConfiguration
import { type WorkerData, type WorkerMessage, WorkerMessageEvents } from '../worker/index.js'
export interface ChargingStationOptions extends JsonObject {
import { type WorkerData, type WorkerMessage, WorkerMessageEvents } from '../worker/index.js'
export interface ChargingStationOptions extends JsonObject {
+ supervisionUrls?: string | string[]
persistentConfiguration?: boolean
autoStart?: boolean
autoRegister?: boolean
persistentConfiguration?: boolean
autoStart?: boolean
autoRegister?: boolean
export type ChargingStationInfo = {
hashId: string
export type ChargingStationInfo = {
hashId: string
templateName: string
chargingStationId?: string
chargePointModel: string
templateName: string
chargingStationId?: string
chargePointModel: string