AvailabilityType,
BootNotificationRequest,
CachedRequest,
+ ErrorCallback,
HeartbeatRequest,
IncomingRequest,
IncomingRequestCommand,
MeterValuesRequest,
RequestCommand,
+ ResponseCallback,
StatusNotificationRequest,
} from '../types/ocpp/Requests';
import {
public readonly templateFile: string;
public stationInfo!: ChargingStationInfo;
public started: boolean;
+ public starting: boolean;
public authorizedTagsCache: AuthorizedTagsCache;
public automaticTransactionGenerator!: AutomaticTransactionGenerator;
public ocppConfiguration!: ChargingStationOcppConfiguration;
public bootNotificationRequest!: BootNotificationRequest;
public bootNotificationResponse!: BootNotificationResponse | null;
public powerDivider!: number;
- private starting: boolean;
private stopping: boolean;
private configurationFile!: string;
private configurationFileHash!: string;
options.handshakeTimeout = options?.handshakeTimeout ?? this.getConnectionTimeout() * 1000;
params.closeOpened = params?.closeOpened ?? false;
params.terminateOpened = params?.terminateOpened ?? false;
+ if (this.started === false && this.starting === false) {
+ logger.warn(
+ `${this.logPrefix()} Cannot open OCPP connection to URL ${this.wsConnectionUrl.toString()} on stopped charging station`
+ );
+ return;
+ }
if (
!Utils.isNullOrUndefined(this.stationInfo.supervisionUser) &&
!Utils.isNullOrUndefined(this.stationInfo.supervisionPassword)
private getOcppConfigurationFromFile(): ChargingStationOcppConfiguration | null {
let configuration: ChargingStationConfiguration = null;
- if (this.getOcppPersistentConfiguration()) {
+ if (this.getOcppPersistentConfiguration() === true) {
const configurationFromFile = this.getConfigurationFromFile();
configuration = configurationFromFile?.configurationKey && configurationFromFile;
}
);
}
if (this.isRegistered() === true) {
- if (this.isInAcceptedState()) {
+ if (this.isInAcceptedState() === true) {
await this.startMessageSequence();
}
} else {
let errorType: ErrorType;
let errorMessage: string;
let errorDetails: JsonType;
- let responseCallback: (payload: JsonType, requestPayload: JsonType) => void;
- let errorCallback: (error: OCPPError, requestStatistic?: boolean) => void;
+ let responseCallback: ResponseCallback;
+ let errorCallback: ErrorCallback;
let requestCommandName: RequestCommand | IncomingRequestCommand;
let requestPayload: JsonType;
let cachedRequest: CachedRequest;
}
private getConfiguredSupervisionUrl(): URL {
- const supervisionUrls = Utils.cloneObject<string | string[]>(
+ const supervisionUrls = (
this.stationInfo.supervisionUrls ?? Configuration.getSupervisionUrls()
- );
+ ).slice();
if (!Utils.isEmptyArray(supervisionUrls)) {
switch (Configuration.getSupervisionUrlDistribution()) {
case SupervisionUrlDistribution.ROUND_ROBIN: