websocket OCPP授权

yfjy0ee7  于 2023-04-06  发布在  其他
关注(0)|答案(1)|浏览(138)

我正在尝试创建一个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协议新手。如何成功授权设备?谢谢

vlf7wbxs

vlf7wbxs1#

哪一个使用app“设备的移动的应用程序”?也许你的服务器上的一些确认没有正确的json模式

相关问题