- public async sendStatusNotification(
- connectorId: number,
- status: OCPP16ChargePointStatus,
- errorCode: OCPP16ChargePointErrorCode = OCPP16ChargePointErrorCode.NO_ERROR
- ): Promise<void> {
- const payload: StatusNotificationRequest = {
- connectorId,
- errorCode,
- status,
- };
- await this.sendMessage(Utils.generateUUID(), payload, OCPP16RequestCommand.STATUS_NOTIFICATION);
- }
-
- public async sendAuthorize(
- connectorId: number,
- idTag?: string
- ): Promise<OCPP16AuthorizeResponse> {
- const payload: AuthorizeRequest = {
- ...(!Utils.isUndefined(idTag) ? { idTag } : { idTag: Constants.DEFAULT_IDTAG }),
- };
- this.chargingStation.getConnectorStatus(connectorId).authorizeIdTag = idTag;
- return (await this.sendMessage(
- Utils.generateUUID(),
- payload,
- OCPP16RequestCommand.AUTHORIZE
- )) as OCPP16AuthorizeResponse;
- }
-
- public async sendStartTransaction(
- connectorId: number,
- idTag?: string
- ): Promise<OCPP16StartTransactionResponse> {
- const payload: StartTransactionRequest = {
- connectorId,
- ...(!Utils.isUndefined(idTag) ? { idTag } : { idTag: Constants.DEFAULT_IDTAG }),
- meterStart: this.chargingStation.getEnergyActiveImportRegisterByConnectorId(connectorId),
- timestamp: new Date().toISOString(),
- };
- return (await this.sendMessage(
- Utils.generateUUID(),
- payload,
- OCPP16RequestCommand.START_TRANSACTION
- )) as OCPP16StartTransactionResponse;
- }
-
- public async sendStopTransaction(
- transactionId: number,
- meterStop: number,
- idTag?: string,
- reason: OCPP16StopTransactionReason = OCPP16StopTransactionReason.NONE
- ): Promise<OCPP16StopTransactionResponse> {
- let connectorId: number;
- for (const id of this.chargingStation.connectors.keys()) {
- if (id > 0 && this.chargingStation.getConnectorStatus(id)?.transactionId === transactionId) {
- connectorId = id;
- break;
- }
- }
- const transactionEndMeterValue = OCPP16ServiceUtils.buildTransactionEndMeterValue(
- this.chargingStation,
- connectorId,
- meterStop
- );
- // FIXME: should be a callback, each OCPP commands implementation must do only one job
- this.chargingStation.getBeginEndMeterValues() &&
- this.chargingStation.getOcppStrictCompliance() &&
- !this.chargingStation.getOutOfOrderEndMeterValues() &&
- (await this.sendTransactionEndMeterValues(
- connectorId,
- transactionId,
- transactionEndMeterValue
- ));
- const payload: StopTransactionRequest = {
- transactionId,
- ...(!Utils.isUndefined(idTag) && { idTag }),
- meterStop,
- timestamp: new Date().toISOString(),
- ...(reason && { reason }),
- ...(this.chargingStation.getTransactionDataMeterValues() && {
- transactionData: OCPP16ServiceUtils.buildTransactionDataMeterValues(
- this.chargingStation.getConnectorStatus(connectorId).transactionBeginMeterValue,
- transactionEndMeterValue
+ public constructor(ocppResponseService: OCPPResponseService) {
+ // if (new.target?.name === moduleName) {
+ // throw new TypeError(`Cannot construct ${new.target?.name} instances directly`);
+ // }
+ super(OCPPVersion.VERSION_16, ocppResponseService);
+ this.jsonSchemas = new Map<OCPP16RequestCommand, JSONSchemaType<JsonObject>>([
+ [
+ OCPP16RequestCommand.AUTHORIZE,
+ OCPP16ServiceUtils.parseJsonSchemaFile<OCPP16AuthorizeRequest>(
+ '../../../assets/json-schemas/ocpp/1.6/Authorize.json',
+ moduleName,
+ 'constructor'