public performanceStatistics!: PerformanceStatistics | undefined
public heartbeatSetInterval?: NodeJS.Timeout
public ocppRequestService!: OCPPRequestService
- public bootNotificationRequest!: BootNotificationRequest
- public bootNotificationResponse!: BootNotificationResponse | undefined
+ public bootNotificationRequest?: BootNotificationRequest
+ public bootNotificationResponse?: BootNotificationResponse
public powerDivider?: number
private stopping: boolean
private configurationFile!: string
}
public logPrefix = (): string => {
- if (isNotEmptyString(this.stationInfo?.chargingStationId)) {
- return logPrefix(` ${this.stationInfo?.chargingStationId} |`)
+ if (
+ this instanceof ChargingStation &&
+ this.stationInfo != null &&
+ isNotEmptyString(this.stationInfo.chargingStationId)
+ ) {
+ return logPrefix(` ${this.stationInfo.chargingStationId} |`)
}
let stationTemplate: ChargingStationTemplate | undefined
try {
public getNumberOfPhases (stationInfo?: ChargingStationInfo): number {
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
- const localStationInfo: ChargingStationInfo = stationInfo ?? this.stationInfo!
+ const localStationInfo = stationInfo ?? this.stationInfo!
switch (this.getCurrentOutType(stationInfo)) {
case CurrentType.AC:
return localStationInfo.numberOfPhases ?? 3
return numberOfRunningTransactions
}
- public getConnectorIdByTransactionId (transactionId: number): number | undefined {
- if (this.hasEvses) {
+ public getConnectorIdByTransactionId (transactionId: number | undefined): number | undefined {
+ if (transactionId == null) {
+ return undefined
+ } else if (this.hasEvses) {
for (const evseStatus of this.evses.values()) {
for (const [connectorId, connectorStatus] of evseStatus.connectors) {
if (connectorStatus.transactionId === transactionId) {
}
public getEnergyActiveImportRegisterByTransactionId (
- transactionId: number,
+ transactionId: number | undefined,
rounded = false
): number {
return this.getEnergyActiveImportRegister(
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
- this.getConnectorStatus(this.getConnectorIdByTransactionId(transactionId)!)!,
+ this.getConnectorStatus(this.getConnectorIdByTransactionId(transactionId)!),
rounded
)
}
public getEnergyActiveImportRegisterByConnectorId (connectorId: number, rounded = false): number {
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
- return this.getEnergyActiveImportRegister(this.getConnectorStatus(connectorId)!, rounded)
+ return this.getEnergyActiveImportRegister(this.getConnectorStatus(connectorId), rounded)
}
public getAuthorizeRemoteTxRequests (): boolean {
this.heartbeatSetInterval = setInterval(() => {
this.ocppRequestService
.requestHandler<HeartbeatRequest, HeartbeatResponse>(this, RequestCommand.HEARTBEAT)
- .catch((error) => {
+ .catch(error => {
logger.error(
`${this.logPrefix()} Error while sending '${RequestCommand.HEARTBEAT}':`,
error
logger.error(`${this.logPrefix()} Trying to start MeterValues on connector id ${connectorId}`)
return
}
- if (this.getConnectorStatus(connectorId) == null) {
+ const connectorStatus = this.getConnectorStatus(connectorId)
+ if (connectorStatus == null) {
logger.error(
`${this.logPrefix()} Trying to start MeterValues on non existing connector id
${connectorId}`
)
return
}
- if (this.getConnectorStatus(connectorId)?.transactionStarted === false) {
+ if (connectorStatus.transactionStarted === false) {
logger.error(
`${this.logPrefix()} Trying to start MeterValues on connector id ${connectorId} with no transaction started`
)
return
} else if (
- this.getConnectorStatus(connectorId)?.transactionStarted === true &&
- this.getConnectorStatus(connectorId)?.transactionId == null
+ connectorStatus.transactionStarted === true &&
+ connectorStatus.transactionId == null
) {
logger.error(
`${this.logPrefix()} Trying to start MeterValues on connector id ${connectorId} with no transaction id`
return
}
if (interval > 0) {
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
- this.getConnectorStatus(connectorId)!.transactionSetInterval = setInterval(() => {
+ connectorStatus.transactionSetInterval = setInterval(() => {
const meterValue = buildMeterValue(
this,
connectorId,
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
- this.getConnectorStatus(connectorId)!.transactionId!,
+ connectorStatus.transactionId!,
interval
)
this.ocppRequestService
RequestCommand.METER_VALUES,
{
connectorId,
- transactionId: this.getConnectorStatus(connectorId)?.transactionId,
+ transactionId: connectorStatus.transactionId,
meterValue: [meterValue]
}
)
- .catch((error) => {
+ .catch(error => {
logger.error(
`${this.logPrefix()} Error while sending '${RequestCommand.METER_VALUES}':`,
error
}
public stopMeterValues (connectorId: number): void {
- if (this.getConnectorStatus(connectorId)?.transactionSetInterval != null) {
- clearInterval(this.getConnectorStatus(connectorId)?.transactionSetInterval)
+ const connectorStatus = this.getConnectorStatus(connectorId)
+ if (connectorStatus?.transactionSetInterval != null) {
+ clearInterval(connectorStatus.transactionSetInterval)
}
}
connectorId: number,
reason?: StopTransactionReason
): Promise<StopTransactionResponse> {
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
- const transactionId = this.getConnectorStatus(connectorId)!.transactionId!
+ const transactionId = this.getConnectorStatus(connectorId)?.transactionId
if (
this.stationInfo?.beginEndMeterValues === true &&
this.stationInfo.ocppStrictCompliance === true &&
private getStationInfoFromTemplate (): ChargingStationInfo {
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
- const stationTemplate: ChargingStationTemplate = this.getTemplateFromFile()!
+ const stationTemplate = this.getTemplateFromFile()!
checkTemplate(stationTemplate, this.logPrefix(), this.templateFile)
const warnTemplateKeysDeprecationOnce = once(warnTemplateKeysDeprecation, this)
warnTemplateKeysDeprecationOnce(stationTemplate, this.logPrefix(), this.templateFile)
if (stationTemplate.Connectors != null) {
checkConnectorsConfiguration(stationTemplate, this.logPrefix(), this.templateFile)
}
- const stationInfo: ChargingStationInfo = stationTemplateToStationInfo(stationTemplate)
+ const stationInfo = stationTemplateToStationInfo(stationTemplate)
stationInfo.hashId = getHashId(this.index, stationTemplate)
stationInfo.chargingStationId = getChargingStationId(this.index, stationTemplate)
stationInfo.ocppVersion = stationTemplate.ocppVersion ?? OCPPVersion.VERSION_16
private getStationInfo (): ChargingStationInfo {
const defaultStationInfo = Constants.DEFAULT_STATION_INFO
- const stationInfoFromTemplate: ChargingStationInfo = this.getStationInfoFromTemplate()
- const stationInfoFromFile: ChargingStationInfo | undefined = this.getStationInfoFromFile(
+ const stationInfoFromTemplate = this.getStationInfoFromTemplate()
+ const stationInfoFromFile = this.getStationInfoFromFile(
stationInfoFromTemplate.stationInfoPersistentConfiguration
)
// Priority:
this.initializeOcppConfiguration()
this.initializeOcppServices()
this.once(ChargingStationEvents.accepted, () => {
- this.startMessageSequence().catch((error) => {
+ this.startMessageSequence().catch(error => {
logger.error(`${this.logPrefix()} Error while starting the message sequence:`, error)
})
})
this.sharedLRUCache.deleteChargingStationConfiguration(this.configurationFileHash)
this.sharedLRUCache.setChargingStationConfiguration(configurationData)
this.configurationFileHash = configurationHash
- }).catch((error) => {
+ }).catch(error => {
handleFileException(
this.configurationFile,
FileType.ChargingStationConfiguration,
this.stationInfo?.registrationMaxRetries !== -1 && ++registrationRetryCount
await sleep(
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
- this.bootNotificationResponse.interval != null
+ this.bootNotificationResponse?.interval != null
? secondsToMilliseconds(this.bootNotificationResponse.interval)
: Constants.DEFAULT_BOOT_NOTIFICATION_INTERVAL
)
}
} else {
logger.error(
- `${this.logPrefix()} Registration failure: maximum retries reached (${registrationRetryCount}) or retry disabled (${this
- .stationInfo?.registrationMaxRetries})`
+ `${this.logPrefix()} Registration failure: maximum retries reached (${registrationRetryCount}) or retry disabled (${
+ this.stationInfo?.registrationMaxRetries
+ })`
)
}
this.autoReconnectRetryCount = 0
logger.error(`${this.logPrefix()} WebSocket error:`, error)
}
- private getEnergyActiveImportRegister (connectorStatus: ConnectorStatus, rounded = false): number {
+ private getEnergyActiveImportRegister (
+ connectorStatus: ConnectorStatus | undefined,
+ rounded = false
+ ): number {
if (this.stationInfo?.meteringPerTransaction === true) {
return (
(rounded
- ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
- Math.round(connectorStatus.transactionEnergyActiveImportRegisterValue!)
- : connectorStatus.transactionEnergyActiveImportRegisterValue) ?? 0
+ ? connectorStatus?.transactionEnergyActiveImportRegisterValue != null
+ ? Math.round(connectorStatus.transactionEnergyActiveImportRegisterValue)
+ : undefined
+ : connectorStatus?.transactionEnergyActiveImportRegisterValue) ?? 0
)
}
return (
(rounded
- ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
- Math.round(connectorStatus.energyActiveImportRegisterValue!)
- : connectorStatus.energyActiveImportRegisterValue) ?? 0
+ ? connectorStatus?.energyActiveImportRegisterValue != null
+ ? Math.round(connectorStatus.energyActiveImportRegisterValue)
+ : undefined
+ : connectorStatus?.energyActiveImportRegisterValue) ?? 0
)
}
}
private startWebSocketPing (): void {
- const webSocketPingInterval: number =
+ const webSocketPingInterval =
getConfigurationKey(this, StandardParametersKey.WebSocketPingInterval) != null
? convertToInt(
getConfigurationKey(this, StandardParametersKey.WebSocketPingInterval)?.value