不用实体充电桩,如何测试 OCPP 1.6 服务端

搭建充电管理平台时,可以先用浏览器模拟充电桩,验证连接、设备注册、心跳、授权和交易记录,再接入真实硬件。本教程使用 devTest.run 的 OCPP 1.6J 模拟器,目标是完成一次可在服务端核对的测试交易。

打开 OCPP 1.6 模拟器并加载示例 · 视频操作教程

1. 准备服务端和测试数据

准备一个浏览器能访问的 OCPP 1.6J 服务端。可以使用已有测试平台,或自行部署 SteVe。部署路径、端口及认证方式以自己的服务端配置为准。

本例使用以下虚构参数:

  • 服务端基础地址:ws://localhost:8080/steve/websocket/CentralSystemService
  • ChargePoint ID:CP001
  • RFID Tag:DEADBEEF
  • 厂商:devTest,型号:Virtual-CP16

先在服务端登记桩 ID 和测试卡,并允许该卡启动交易。localhost 指的是打开浏览器的电脑;服务端在其他电脑上时,换成实际主机地址。此地址不是本站提供的公共测试服务器。

模拟器会自动在基础地址后追加 /CP001,不要在 OCPP Server 输入框中重复填写桩 ID。最终握手地址示例为 ws://localhost:8080/steve/websocket/CentralSystemService/CP001。

2. 加载示例并保存

打开模拟器,点击“一键加载示例”。工具只填入表单,不会保存或访问任何服务器。进入“连接设置”,修改地址、桩 ID、卡号,再点击 Save。保存后的设置会留在当前浏览器的本地存储中。

当前模拟器沿用 HTTP 访问方式以兼容 ws:// 测试端点。不支持自定义 Authorization 请求头或客户端证书。如果平台强制要求这些认证方式,需要换用支持相应认证的测试客户端。请使用测试环境和虚构数据。

3. 验证连接与注册

点击 Connect。建立 WebSocket 后,模拟器会自动发送 BootNotification,无需另外点击注册按钮。等待日志中出现服务端的 status: "Accepted",以及页面的 Connected 状态。

服务端需要接受 ocpp1.6 子协议。WebSocket 握手成功只代表传输连接成功,不能代替 OCPP 注册成功。若返回 Pending 或 Rejected,检查设备登记和服务端策略;本工具当前会在非 Accepted 响应后断开,不模拟 Pending 状态下的完整重试流程。

4. 验证心跳和测试卡

点击 Heartbeat,确认请求负载是 {},服务端返回 currentTime。再点击 Authorize,确认响应里的 idTagInfo.status 是 Accepted。

请以日志为准:当前工具的授权状态提示不覆盖所有拒绝状态,看到 Authorized 标签也应核对响应内容。为了便于定位问题,等待上一条请求回复后再点击下一个操作。

5. 完成一笔测试交易

授权通过后点击 Start Transaction。界面默认针对 1 号枪发送交易请求。确认服务端返回 transactionId,且 idTagInfo.status 为 Accepted。

如需模拟累计电量,将 Measurand 选择为 Energy.Active.Import.Register,填写测试读数,再点击 Send Meter Value。按钮旁的加号只改变测试数值,不代表真实硬件测量。

最后点击 Stop Transaction,并到服务端检查同一 transactionId 的结束记录和响应。页面显示 In Transaction 不能单独证明服务端接受了交易,必须核对响应和后台记录。

6. 什么算完成测试

依次确认:BootNotification 被接受、Heartbeat 得到响应、测试卡授权通过、StartTransaction 返回有效交易号,以及 StopTransaction 在后台结束同一笔交易。任一步失败,先保存相应请求与响应,再按问题排查。

这验证的是一条手动调试链路,不能代替真实充电桩、故障恢复或 OCPP 一致性认证测试。

下一步