Skip to content

Commit 00e62ac

Browse files
authored
Merge pull request #11 from juherr/bugfix/bootnotification-format
fix: BootNotification must respect the OCPP specification
2 parents cc33093 + 304e327 commit 00e62ac

File tree

4 files changed

+43
-32
lines changed

4 files changed

+43
-32
lines changed

src/cp/ChargePoint.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -209,10 +209,6 @@ export class ChargePoint {
209209
this._messageHandler.sendHeartbeat();
210210
}
211211

212-
public sendReset(): void {
213-
this._messageHandler.sendReset();
214-
}
215-
216212
public startHeartbeat(period: number): void {
217213
this._logger.info("Setting heartbeat period to " + period + "s");
218214
if (this._heartbeat) {

src/cp/OCPPMessageHandler.ts

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import {OCPPWebSocket} from "./OCPPWebSocket";
1+
import {OcppMessageRequestPayload, OcppMessageResponsePayload, OCPPWebSocket} from "./OCPPWebSocket";
22
import {ChargePoint} from "./ChargePoint";
33
import {Transaction} from "./Transaction";
44
import {Logger} from "./Logger";
5-
import {OCPPMessageType, OCPPAction, OCPPStatus, BootNotification} from "./OcppTypes";
5+
import {OCPPMessageType, OCPPAction, OCPPStatus, BootNotification, OCPPErrorCode} from "./OcppTypes";
66

77
import * as request from "@voltbras/ts-ocpp/dist/messages/json/request";
88
import * as response from "@voltbras/ts-ocpp/dist/messages/json/response";
@@ -126,11 +126,22 @@ export class OCPPMessageHandler {
126126

127127
public sendBootNotification(bootPayload: BootNotification): void {
128128
const messageId = this.generateMessageId();
129+
const payload: request.BootNotificationRequest = {
130+
chargePointVendor: bootPayload.ChargePointVendor,
131+
chargePointModel: bootPayload.ChargePointModel,
132+
chargePointSerialNumber: bootPayload.ChargePointSerialNumber,
133+
chargeBoxSerialNumber: bootPayload.ChargeBoxSerialNumber,
134+
firmwareVersion: bootPayload.FirmwareVersion,
135+
iccid: bootPayload.Iccid,
136+
imsi: bootPayload.Imsi,
137+
meterType: bootPayload.MeterType,
138+
meterSerialNumber: bootPayload.MeterSerialNumber,
139+
};
129140
this.sendRequest(
130141
OCPPMessageType.CALL,
131142
OCPPAction.BootNotification,
132143
messageId,
133-
bootPayload
144+
payload,
134145
);
135146
}
136147

@@ -145,17 +156,6 @@ export class OCPPMessageHandler {
145156
);
146157
}
147158

148-
public sendReset(): void {
149-
const messageId = this.generateMessageId();
150-
const payload: request.ResetRequest = {type: "Hard"};
151-
this.sendRequest(
152-
OCPPMessageType.CALL,
153-
OCPPAction.Reset,
154-
messageId,
155-
payload
156-
);
157-
}
158-
159159
public sendMeterValue(transactionId:number|undefined,connectorId: number, meterValue: number): void {
160160
const messageId = this.generateMessageId();
161161
const payload: request.MeterValuesRequest = {
@@ -195,7 +195,7 @@ export class OCPPMessageHandler {
195195
type: OCPPMessageType,
196196
action: OCPPAction,
197197
id: string,
198-
payload: OcppMessagePayload,
198+
payload: OcppMessageRequestPayload,
199199
connectorId?: number
200200
): void {
201201
this._requests.add({type, action, id, payload, connectorId});
@@ -231,7 +231,7 @@ export class OCPPMessageHandler {
231231
action: OCPPAction,
232232
payload: OcppMessagePayloadCall
233233
): void {
234-
let response;
234+
let response: OcppMessageResponsePayload;
235235
switch (action) {
236236
case OCPPAction.RemoteStartTransaction:
237237
response = this.handleRemoteStartTransaction(
@@ -361,7 +361,6 @@ export class OCPPMessageHandler {
361361

362362
private handleReset(payload: request.ResetRequest): response.ResetResponse {
363363
this._logger.log(`Reset request received: ${payload.type}`);
364-
this._chargePoint.sendReset();
365364
return {status: "Accepted"};
366365
}
367366

@@ -454,7 +453,7 @@ export class OCPPMessageHandler {
454453
this._logger.log(`Status notification sent successfully: ${JSON.stringify(payload)}`);
455454
}
456455

457-
private sendCallResult(messageId: string, payload: OcppMessagePayload): void {
456+
private sendCallResult(messageId: string, payload: OcppMessageResponsePayload): void {
458457
this._webSocket.send(
459458
OCPPMessageType.CALL_RESULT,
460459
messageId,
@@ -465,7 +464,7 @@ export class OCPPMessageHandler {
465464

466465
private sendCallError(
467466
messageId: string,
468-
errorCode: string,
467+
errorCode: OCPPErrorCode,
469468
errorDescription: string
470469
): void {
471470
const errorDetails = {

src/cp/OCPPWebSocket.ts

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,31 @@
11
import {Logger} from "./Logger";
2-
import {OCPPAction, OCPPMessageType} from "./OcppTypes";
2+
import {OCPPAction, OCPPErrorCode, OCPPMessageType} from "./OcppTypes";
33
import * as request from "@voltbras/ts-ocpp/dist/messages/json/request";
4+
import * as response from "@voltbras/ts-ocpp/dist/messages/json/response";
45

5-
export type OcppMessagePayload =
6-
| request.StartTransactionRequest
7-
| request.StopTransactionRequest
6+
export type OcppMessagePayload = OcppMessageRequestPayload | OcppMessageResponsePayload | OcppMessageErrorPayload;
7+
8+
export type OcppMessageRequestPayload =
89
| request.AuthorizeRequest
10+
| request.BootNotificationRequest
911
| request.HeartbeatRequest
1012
| request.MeterValuesRequest
13+
| request.StartTransactionRequest
1114
| request.StatusNotificationRequest
12-
| request.GetDiagnosticsRequest
13-
| request.TriggerMessageRequest
14-
| request.ResetRequest
15-
| request.RemoteStartTransactionRequest
16-
| request.RemoteStopTransactionRequest
15+
| request.StopTransactionRequest;
16+
17+
export type OcppMessageResponsePayload =
18+
| response.GetDiagnosticsResponse
19+
| response.RemoteStartTransactionResponse
20+
| response.RemoteStopTransactionResponse
21+
| response.ResetResponse
22+
| response.TriggerMessageResponse;
23+
24+
export type OcppMessageErrorPayload = {
25+
readonly errorCode: OCPPErrorCode;
26+
readonly errorDescription: string;
27+
readonly errorDetails?: object;
28+
};
1729

1830
type MessageHandler = (
1931
messageType: OCPPMessageType,

src/cp/OcppTypes.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import {ErrorCode} from "@voltbras/ts-ocpp/dist/ws";
2+
13
export enum OCPPStatus {
24
Available = "Available",
35
Preparing = "Preparing",
@@ -39,6 +41,8 @@ export enum OCPPAction {
3941
Reset = "Reset",
4042
}
4143

44+
export type OCPPErrorCode = ErrorCode;
45+
4246
export interface BootNotification {
4347
ChargeBoxSerialNumber: string;
4448
ChargePointModel: string;

0 commit comments

Comments
 (0)