} from '../../../types/ocpp/1.6/Transaction';
import type { OCPPConfigurationKey } from '../../../types/ocpp/Configuration';
import { ErrorType } from '../../../types/ocpp/ErrorType';
} from '../../../types/ocpp/1.6/Transaction';
import type { OCPPConfigurationKey } from '../../../types/ocpp/Configuration';
import { ErrorType } from '../../../types/ocpp/ErrorType';
import type { IncomingRequestHandler } from '../../../types/ocpp/Requests';
import type { DefaultResponse } from '../../../types/ocpp/Responses';
import Constants from '../../../utils/Constants';
import type { IncomingRequestHandler } from '../../../types/ocpp/Requests';
import type { DefaultResponse } from '../../../types/ocpp/Responses';
import Constants from '../../../utils/Constants';
import type ChargingStation from '../../ChargingStation';
import { ChargingStationConfigurationUtils } from '../../ChargingStationConfigurationUtils';
import { ChargingStationUtils } from '../../ChargingStationUtils';
import type ChargingStation from '../../ChargingStation';
import { ChargingStationConfigurationUtils } from '../../ChargingStationConfigurationUtils';
import { ChargingStationUtils } from '../../ChargingStationUtils';
import OCPPIncomingRequestService from '../OCPPIncomingRequestService';
import { OCPP16ServiceUtils } from './OCPP16ServiceUtils';
import OCPPIncomingRequestService from '../OCPPIncomingRequestService';
import { OCPP16ServiceUtils } from './OCPP16ServiceUtils';
if (new.target?.name === moduleName) {
throw new TypeError(`Cannot construct ${new.target?.name} instances directly`);
}
if (new.target?.name === moduleName) {
throw new TypeError(`Cannot construct ${new.target?.name} instances directly`);
}
this.incomingRequestHandlers = new Map<OCPP16IncomingRequestCommand, IncomingRequestHandler>([
[OCPP16IncomingRequestCommand.RESET, this.handleRequestReset.bind(this)],
[OCPP16IncomingRequestCommand.CLEAR_CACHE, this.handleRequestClearCache.bind(this)],
this.incomingRequestHandlers = new Map<OCPP16IncomingRequestCommand, IncomingRequestHandler>([
[OCPP16IncomingRequestCommand.RESET, this.handleRequestReset.bind(this)],
[OCPP16IncomingRequestCommand.CLEAR_CACHE, this.handleRequestClearCache.bind(this)],
+ [
+ OCPP16IncomingRequestCommand.UPDATE_FIRMWARE,
+ JSON.parse(
+ fs.readFileSync(
+ path.resolve(
+ path.dirname(fileURLToPath(import.meta.url)),
+ '../../../assets/json-schemas/ocpp/1.6/UpdateFirmware.json'
+ ),
+ 'utf8'
+ )
+ ) as JSONSchemaType<OCPP16UpdateFirmwareRequest>,
+ ],
}
private handleRequestClearCache(chargingStation: ChargingStation): DefaultResponse {
chargingStation.authorizedTagsCache.deleteAuthorizedTags(
ChargingStationUtils.getAuthorizationFile(chargingStation.stationInfo)
);
}
private handleRequestClearCache(chargingStation: ChargingStation): DefaultResponse {
chargingStation.authorizedTagsCache.deleteAuthorizedTags(
ChargingStationUtils.getAuthorizationFile(chargingStation.stationInfo)
);
}
if (chargingStation.getConnectorStatus(connectorId)?.transactionStarted === true) {
const stopResponse = await chargingStation.stopTransactionOnConnector(
}
if (chargingStation.getConnectorStatus(connectorId)?.transactionStarted === true) {
const stopResponse = await chargingStation.stopTransactionOnConnector(
OCPP16StopTransactionReason.UNLOCK_COMMAND
);
if (stopResponse.idTagInfo?.status === OCPP16AuthorizationStatus.ACCEPTED) {
OCPP16StopTransactionReason.UNLOCK_COMMAND
);
if (stopResponse.idTagInfo?.status === OCPP16AuthorizationStatus.ACCEPTED) {
}
await chargingStation.ocppRequestService.requestHandler<
OCPP16StatusNotificationRequest,
}
await chargingStation.ocppRequestService.requestHandler<
OCPP16StatusNotificationRequest,
errorCode: OCPP16ChargePointErrorCode.NO_ERROR,
});
chargingStation.getConnectorStatus(connectorId).status = OCPP16ChargePointStatus.AVAILABLE;
errorCode: OCPP16ChargePointErrorCode.NO_ERROR,
});
chargingStation.getConnectorStatus(connectorId).status = OCPP16ChargePointStatus.AVAILABLE;
} else if (keyToChange && !keyToChange.readonly) {
let valueChanged = false;
if (keyToChange.value !== commandPayload.value) {
} else if (keyToChange && !keyToChange.readonly) {
let valueChanged = false;
if (keyToChange.value !== commandPayload.value) {
}
if (
commandPayload.csChargingProfiles.chargingProfilePurpose ===
ChargingProfilePurposeType.CHARGE_POINT_MAX_PROFILE &&
commandPayload.connectorId !== 0
) {
}
if (
commandPayload.csChargingProfiles.chargingProfilePurpose ===
ChargingProfilePurposeType.CHARGE_POINT_MAX_PROFILE &&
commandPayload.connectorId !== 0
) {
}, dump their stack: %j`,
chargingStation.getConnectorStatus(commandPayload.connectorId).chargingProfiles
);
}, dump their stack: %j`,
chargingStation.getConnectorStatus(commandPayload.connectorId).chargingProfiles
);
}
const connectorStatus = chargingStation.getConnectorStatus(commandPayload.connectorId);
if (commandPayload.connectorId && !Utils.isEmptyArray(connectorStatus.chargingProfiles)) {
}
const connectorStatus = chargingStation.getConnectorStatus(commandPayload.connectorId);
if (commandPayload.connectorId && !Utils.isEmptyArray(connectorStatus.chargingProfiles)) {
}, dump their stack: %j`,
connectorStatus.chargingProfiles
);
}, dump their stack: %j`,
connectorStatus.chargingProfiles
);
}
const chargePointStatus: OCPP16ChargePointStatus =
commandPayload.type === OCPP16AvailabilityType.OPERATIVE
? OCPP16ChargePointStatus.AVAILABLE
: OCPP16ChargePointStatus.UNAVAILABLE;
if (connectorId === 0) {
}
const chargePointStatus: OCPP16ChargePointStatus =
commandPayload.type === OCPP16AvailabilityType.OPERATIVE
? OCPP16ChargePointStatus.AVAILABLE
: OCPP16ChargePointStatus.UNAVAILABLE;
if (connectorId === 0) {
for (const id of chargingStation.connectors.keys()) {
if (chargingStation.getConnectorStatus(id)?.transactionStarted === true) {
for (const id of chargingStation.connectors.keys()) {
if (chargingStation.getConnectorStatus(id)?.transactionStarted === true) {
await chargingStation.ocppRequestService.requestHandler<
OCPP16StatusNotificationRequest,
OCPP16StatusNotificationResponse
await chargingStation.ocppRequestService.requestHandler<
OCPP16StatusNotificationRequest,
OCPP16StatusNotificationResponse
) {
if (chargingStation.getConnectorStatus(connectorId)?.transactionStarted === true) {
chargingStation.getConnectorStatus(connectorId).availability = commandPayload.type;
) {
if (chargingStation.getConnectorStatus(connectorId)?.transactionStarted === true) {
chargingStation.getConnectorStatus(connectorId).availability = commandPayload.type;
}
chargingStation.getConnectorStatus(connectorId).availability = commandPayload.type;
await chargingStation.ocppRequestService.requestHandler<
}
chargingStation.getConnectorStatus(connectorId).availability = commandPayload.type;
await chargingStation.ocppRequestService.requestHandler<
errorCode: OCPP16ChargePointErrorCode.NO_ERROR,
});
chargingStation.getConnectorStatus(connectorId).status = chargePointStatus;
errorCode: OCPP16ChargePointErrorCode.NO_ERROR,
});
chargingStation.getConnectorStatus(connectorId).status = chargePointStatus;
).idTagInfo.status === OCPP16AuthorizationStatus.ACCEPTED
) {
logger.debug(remoteStartTransactionLogMsg);
).idTagInfo.status === OCPP16AuthorizationStatus.ACCEPTED
) {
logger.debug(remoteStartTransactionLogMsg);
).idTagInfo.status === OCPP16AuthorizationStatus.ACCEPTED
) {
logger.debug(remoteStartTransactionLogMsg);
).idTagInfo.status === OCPP16AuthorizationStatus.ACCEPTED
) {
logger.debug(remoteStartTransactionLogMsg);
OCPP16StopTransactionReason.REMOTE
);
if (stopResponse.idTagInfo?.status === OCPP16AuthorizationStatus.ACCEPTED) {
OCPP16StopTransactionReason.REMOTE
);
if (stopResponse.idTagInfo?.status === OCPP16AuthorizationStatus.ACCEPTED) {
>(chargingStation, OCPP16RequestCommand.DIAGNOSTICS_STATUS_NOTIFICATION, {
status: OCPP16DiagnosticsStatus.UploadFailed,
});
>(chargingStation, OCPP16RequestCommand.DIAGNOSTICS_STATUS_NOTIFICATION, {
status: OCPP16DiagnosticsStatus.UploadFailed,
});
/* This is intentional */
});
}, Constants.OCPP_TRIGGER_MESSAGE_DELAY);
/* This is intentional */
});
}, Constants.OCPP_TRIGGER_MESSAGE_DELAY);
/* This is intentional */
});
}, Constants.OCPP_TRIGGER_MESSAGE_DELAY);
/* This is intentional */
});
}, Constants.OCPP_TRIGGER_MESSAGE_DELAY);
}
} catch (error) {
return this.handleIncomingRequestError(
chargingStation,
OCPP16IncomingRequestCommand.TRIGGER_MESSAGE,
error as Error,
}
} catch (error) {
return this.handleIncomingRequestError(
chargingStation,
OCPP16IncomingRequestCommand.TRIGGER_MESSAGE,
error as Error,