我正在尝试创建一个OCPP服务器来处理电动汽车的动作。我将使用NodeJS和WebSocket来实现服务器和客户端(充电器)之间的通信。
以下是我使用的技术:
NodeJS Version: 18.13.0
OCPP Version: 1.6.10
Charger Brand: Teltonika
我已经尝试了一个文件JavaScript脚本来处理这个目的。下面是我的代码:
const moment = require("moment");
const WebSocket = require("ws");
const connectivity = {
ip: "192.168.1.17",
port: 8080,
};;
const url = `ws://${connectivity.ip}:${connectivity.port}`;
const wss = new WebSocket.Server({ port: connectivity.port });
console.log(`Server running on ${url}`);
wss.on("connection", function connection(ws) {
ws.on("message", function incoming(message) {
try {
var msg = JSON.parse(message);
console.log("Incoming message", msg);
if (msg[2] === "BootNotification") {
const acceptJSON = {
"MessageTypeId": "3",
"UniqueId": "12345",
"Payload": {
"currentTime": "2019-01-01T00:00:00Z",
"interval":10,
"status":"Accepted",
"heartbeatInterval":30
}
}
ws.send(JSON.stringify(acceptJSON));
console.log("send", JSON.stringify(acceptJSON));
const authorizeJSON = {
"Action": "Authorize",
"IdTag": "TEST123",
"MessageId": moment().unix().toString(),
"Payload": null
}
ws.send(JSON.stringify(authorizeJSON));
console.log("send", JSON.stringify(authorizeJSON));
const heartbeat = () => {
const heartbeatJSON = {
"MessageTypeId": "2",
"UniqueId": "123",
"Action": "Heartbeat",
"Payload": {}
};
ws.send(JSON.stringify(heartbeatJSON));
console.log("HEARTBEAT sent");
};
heartbeat();
setInterval(heartbeat, 10000);
} else if (msg[2] === "Heartbeat") {
console.log("Heartbeat");
ws.send('{"1":2,"2":3,"3":{"currentTime":"2019-01-01T00:00:00Z"}}');
}
} catch (error) {
console.log("Error", error);
}
});
ws.on("close", function() {
console.log("disconnected");
});
ws.on("error", function(error) {
console.log(error);
});
});
192.168.1.17 是我的本地IP地址。我已经将我的设备连接到wifi。然后我在设备的移动的应用程序上将客户端(充电器)的目标OCPP URL设置为ws://192.168.1.17:8080/
,并将充电点标识设置为“TEST123”。我可以从设备中获得以下消息:
[
2,
'35',
'BootNotification',
{
chargePointModel: 'TeltoCharge_EVC1201P',
chargePointVendor: 'Teltonika Energy',
chargePointSerialNumber: '6000XXXXXX',
firmwareVersion: 'v1.6.10'
}
]
所以我明白客户端(充电器)可以连接到WebSocket.但它显示OCPP无响应错误的移动的应用程序.我做了一个研究,他们提到,授权不能进行.
我是OCPP协议新手。如何成功授权设备?谢谢
1条答案
按热度按时间vlf7wbxs1#
哪一个使用app“设备的移动的应用程序”?也许你的服务器上的一些确认没有正确的json模式