目录
4.2、BootNotification-概述
Boot Notification 消息
BootNotification 请求消息
BootNotification 响应消息
使用场景
触发 BootNotification 的条件
实现示例
构建请求消息
发送请求并处理响应
小结
4.2、BootNotification-原文译文
4.2.1、被中央系统接受之前的交易
4.2、BootNotification-概述
OCPP 1.6 协议的第 4.2 章 “Boot Notification” 主要讲述了充电站启动时向中央系统(Central System)发送启动通知(Boot Notification)进行注册和初始化的过程。这是充电站与中央系统建立通信和进行后续操作的第一步。
Boot Notification 消息
BootNotification
是充电站启动时发送给中央系统的一个消息,用于报告充电站的状态和基本信息。此消息用于通知中央系统充电站已经启动,并请求进行初始化和注册。
BootNotification 请求消息
请求消息包含充电站的基本信息,如供应商、电站型号、固件版本等。典型的消息格式如下:
{ "chargePointVendor": "string", "chargePointModel": "string", "chargePointSerialNumber": "string", "chargeBoxSerialNumber": "string", "firmwareVersion": "string", "iccid": "string", "imsi": "string", "meterType": "string", "meterSerialNumber": "string" }
-
chargePointVendor
: 供应商名称。 -
chargePointModel
: 充电站型号。 -
chargePointSerialNumber
: 充电站的序列号。 -
chargeBoxSerialNumber
: 充电箱的序列号(如果适用)。 -
firmwareVersion
: 固件版本。 -
iccid
: 集成电路卡识别码(ICCID),用于标识 SIM 卡。 -
imsi
: 国际移动用户识别码(IMSI),用于标识移动用户。 -
meterType
: 电表类型。 -
meterSerialNumber
: 电表序列号。
BootNotification 响应消息
中央系统在收到 BootNotification
消息后,会返回一个响应消息,确认接收到启动通知并向充电站提供配置参数。响应消息的典型格式如下:
{ "status": "string", "currentTime": "string", "interval": 300 }
-
status
: 注册状态,可能值包括:-
Accepted
: 充电站注册成功,中央系统接受该充电站。 -
Pending
: 充电站需要等待,注册请求待处理。 -
Rejected
: 充电站注册失败,中央系统拒绝该充电站。
-
-
currentTime
: 中央系统的当前时间(ISO 8601 格式)。 -
interval
: 充电站应在下一次进行心跳请求的时间间隔(秒为单位)。
使用场景
-
充电站启动
当充电站首次启动或重新启动时,会立即向中央系统发送 BootNotification
消息。这有助于中央系统了解充电设备已经上线并准备好进行操作。
-
网络连接恢复
如果充电站由于网络问题与中央系统失去连接,当网络连接恢复时,充电站应重新发送 BootNotification
消息,以重新注册并同步状态。
触发 BootNotification 的条件
-
首次启动:充电站首次启动时。
-
重启后:充电站重新启动后。
-
网络恢复:修复网络连接问题后。
实现示例
以下是使用 JavaScript 实现的示例,展示了如何构建和发送 BootNotification 请求,并处理响应。
构建请求消息
const bootNotificationRequest = { chargePointVendor: "VendorName", chargePointModel: "Model123", chargePointSerialNumber: "SN12345678", chargeBoxSerialNumber: "CBSN12345678", firmwareVersion: "1.0.0", iccid: "8912345678901234567", imsi: "123456789012345", meterType: "MeterType1", meterSerialNumber: "MSN12345678" };
发送请求并处理响应
// 假设 websocket 已经连接至中央系统 webSocket.send(JSON.stringify({ action: "BootNotification", payload: bootNotificationRequest })); webSocket.onmessage = (event) => { const response = JSON.parse(event.data); if (response.action === "BootNotification") { const { status, currentTime, interval } = response.payload; if (status === "Accepted") { console.log(`BootNotification Accepted. Server time: ${currentTime}. Next heartbeat interval: ${interval} seconds.`); // 设置心跳间隔定时器 setInterval(sendHeartbeat, interval * 1000); } else if (status === "Pending") { console.log("BootNotification Pending. Waiting for further instructions."); } else { console.error("BootNotification Rejected. Please check configurations."); } } }; function sendHeartbeat() { webSocket.send(JSON.stringify({ action: "Heartbeat" })); }
小结
OCPP 1.6 协议的第 4.2 章 "Boot Notification" 详细描述了充电站启动时如何向中央系统发送启动通知。通过 BootNotification
消息,充电站可以向中央系统报告其状态和基本信息,并接收初始化参数。这一步确保了充电站与中央系统之间的通信正常,使得后续的操作和管理得以顺利进行。
4.2、BootNotification-原文译文
启动后,充电桩应向中央系统发送请求,其中包含有关其配置的信息(例如版本、供应商等)。 中央系统应做出响应,表明它是否会接受充电桩。
充电桩应在每次启动或重新启动时发送 BootNotification.req PDU。在物理开机/重启和成功完成 BootNotification 之间(中央系统返回“已接受”或“待定”),充电桩不得向中央系统发送任何其他请求。这包括之前仍存在于充电桩中的缓存消息。
当中央系统以“Accepted”状态响应 BootNotification.conf 时,充电桩将根据响应 PDU 的间隔调整心跳间隔,并且建议将其内部时钟与所提供的中央系统的当前时间同步。如果中央系统返回 Accepted 以外的内容,则间隔字段的值指示发送下一个 BootNotification 请求之前的最短等待时间。如果该间隔值为零,则充电桩会自行选择等待间隔,以避免请求淹没中央系统。充电桩不应提前发送 BootNotification.req,除非使用 TriggerMessage.req 请求这样做。
如果中央系统返回“Rejected”状态,则在上述重试间隔到期之前,充电桩不得向中央系统发送任何 OCPP 消息。在此期间,中央系统可能无法再访问充电桩。例如,它可以关闭其通信通道或关闭其通信硬件。中央系统也可以关闭通信通道,例如以释放系统资源。当被拒绝时,充电桩不得响应任何中央系统发起的消息。中央系统不应该启动任何
中央系统还可以返回Pending注册状态,以表明它希望在中央系统接受充电桩之前检索或设置有关充电桩的某些信息。如果中央系统返回Pending状态,则充电桩或中央系统不应关闭通信通道。中央系统可以发送请求消息以从充电桩检索信息或更改其配置。充电桩应该响应这些消息。充电桩不得向中央系统发送请求消息,除非中央系统通过 TriggerMessage.req 请求指示它这样做。
当处于Pending状态时,不允许以下中央系统启动的消息:RemoteStartTransaction.req 和 RemoteStopTransaction.req
4.2.1、被中央系统接受之前的交易
充电桩运营商可以选择配置充电桩以在充电桩被中央系统接受之前接受交易。想要实施这种行为的各方应该意识到,这些交易是否可以交付到中央系统是不确定的。
重新启动后(例如由于远程重置命令、断电、固件更新、软件错误等),充电桩必须再次联系中央系统并应发送 BootNotification 请求。如果充电桩无法从中央系统接收 BootNotification.conf,并且没有已正确预设的内置非易失性实时时钟硬件,则充电桩可能没有有效的日期/时间设置,从而导致以后无法确定交易的日期/时间。
也可能出现这样的情况(例如,由于配置错误),中央系统在较长一段时间内或无限期地指示“Accepted”以外的状态。
如果充电桩之前从未被中央系统接受(使用当前的连接设置、URL 等),通常建议拒绝该充电桩的所有充电服务,因为用户无法通过身份验证,并且运行的事务可能与配置冲突流程。