什么是 OCPP 1.6J?
OCPP,即开放充电点协议(Open Charge Point Protocol),是开放充电联盟(Open Charge Alliance)制定的一项免费开放标准。它规定充电桩如何与管理它的软件通信:这个软件在规范中称为中央系统(Central System),在市场上称为后台。
在 1.6J 版本中,充电桩向后台建立一条 WebSocket 连接,双方通过它发送 JSON 消息。充电桩报告自己的状态、电表数值和充电会话。后台启动和停止充电会话、更改设置并设定充电限值。
由于这项标准是开放的,支持它的充电桩也可以连接到其他同样支持它的后台,具体取决于型号、固件和配置。正因如此,您可以在同一场地混用不同品牌,也可以把充电桩迁移到另一个后台。如需让一台充电桩同时连接多个后台,请使用 OCPP 代理。
- 开放标准可免费实现,由开放充电联盟维护。
- WebSocket 和 JSON一条保持打开的连接,传送结构化消息。
- 28 条消息分属六个功能配置文件,从核心到远程触发。
- 双向充电桩和后台各自发起自己的消息。
OCPP 1.6 全部 28 条消息
每条消息都是一方发出的请求和另一方给出的响应,二者通过唯一的消息 ID 对应。
核心
必需。充电点的基本操作:授权、交易、状态报告、配置和基本远程控制。
在允许充电前请求对 idTag 进行授权。
请求
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| idTag | string | 必填 | 要授权的标识符。最多 20 个字符。 |
响应
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| idTagInfo | object | 必填 | 该 idTag 的授权信息。 |
| status | string | 必填 | 授权状态。取值:Accepted、Blocked、Expired、Invalid、ConcurrentTx。 |
| expiryDate | string | 可选 | idTag 被视为过期的时间点。值为日期时间。 |
| parentIdTag | string | 可选 | 用于组授权的父级 idTag。最多 20 个字符。 |
示例
[2, "7f83df9c", "Authorize", {
"idTag": "04A2B3C4D5E6F7"
}][3, "7f83df9c", {
"idTagInfo": {
"status": "Accepted"
}
}]OCPP 2.0.1 中对应:Authorize
启动后发送,用于向后台注册。
请求
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| chargePointVendor | string | 必填 | 充电点的厂商。最多 20 个字符。 |
| chargePointModel | string | 必填 | 充电点的型号。最多 20 个字符。 |
| chargePointSerialNumber | string | 可选 | 充电点的序列号。最多 25 个字符。 |
| chargeBoxSerialNumber | string | 可选 | 充电箱(charge box)的序列号。最多 25 个字符。 |
| firmwareVersion | string | 可选 | 充电点的固件版本。最多 50 个字符。 |
| iccid | string | 可选 | SIM 卡的 ICCID。最多 20 个字符。 |
| imsi | string | 可选 | SIM 卡的 IMSI。最多 20 个字符。 |
| meterType | string | 可选 | 电能表的类型。最多 25 个字符。 |
| meterSerialNumber | string | 可选 | 电能表的序列号。最多 25 个字符。 |
响应
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| status | string | 必填 | 注册状态。取值:Accepted、Pending、Rejected。 |
| currentTime | string | 必填 | 中央系统的当前时间。值为日期时间。 |
| interval | integer | 必填 | 心跳间隔,单位为秒。 |
示例
[2, "392b5b40", "BootNotification", {
"chargePointVendor": "ExampleVendor",
"chargePointModel": "ExampleModel",
"firmwareVersion": "1.4.2"
}][3, "392b5b40", {
"status": "Accepted",
"currentTime": "2026-10-06T09:30:00Z",
"interval": 300
}]OCPP 2.0.1 中对应:BootNotification
更改充电接口的可用性。
请求
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| connectorId | integer | 必填 | 充电接口的 ID(0 表示整个充电点)。 |
| type | string | 必填 | 请求的可用性变更。取值:Inoperative、Operative。 |
响应
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| status | string | 必填 | 可用性变更请求的结果。取值:Accepted、Rejected、Scheduled。 |
示例
[2, "be3dcf2e", "ChangeAvailability", {
"connectorId": 1,
"type": "Operative"
}][3, "be3dcf2e", {
"status": "Accepted"
}]OCPP 2.0.1 中对应:ChangeAvailability
更改充电桩上的一个配置键。
请求
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| key | string | 必填 | 要更改的配置键。最多 50 个字符。 |
| value | string | 必填 | 配置键的新值。最多 500 个字符。 |
响应
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| status | string | 必填 | 配置更改的结果。取值:Accepted、Rejected、RebootRequired、NotSupported。 |
示例
[2, "6fdf2255", "ChangeConfiguration", {
"key": "MeterValueSampleInterval",
"value": "60"
}][3, "6fdf2255", {
"status": "Accepted"
}]OCPP 2.0.1 中对应:SetVariables
清除充电桩上的授权缓存。
请求
没有字段:请求为空。
响应
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| status | string | 必填 | 清除缓存请求的结果。取值:Accepted、Rejected。 |
示例
[2, "e993e844", "ClearCache", {}][3, "e993e844", {
"status": "Accepted"
}]OCPP 2.0.1 中对应:ClearCache
厂商自定义的数据交换。
请求
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| vendorId | string | 必填 | 标识厂商。最多 255 个字符。 |
| messageId | string | 可选 | 消息的附加标识。最多 50 个字符。 |
| data | string | 可选 | 厂商自定义数据。 |
响应
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| status | string | 必填 | 数据传输的结果。取值:Accepted、Rejected、UnknownMessageId、UnknownVendorId。 |
| data | string | 可选 | 厂商自定义的响应数据。 |
示例
[2, "e1a403d5", "DataTransfer", {
"vendorId": "com.example"
}][3, "e1a403d5", {
"status": "Accepted"
}]OCPP 2.0.1 中对应:DataTransfer
从充电桩读取配置键。
请求
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| key | array | 可选 | 要读取的配置键列表。每项最多 50 个字符。 |
响应
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| configurationKey | array | 可选 | 已知配置键的列表。 |
| key | string | 必填 | 配置键名称。最多 50 个字符。 |
| readonly | boolean | 必填 | 该键是否为只读。 |
| value | string | 可选 | 该键的当前值。最多 500 个字符。 |
| unknownKey | array | 可选 | 所请求的键中无法识别的键的列表。每项最多 50 个字符。 |
示例
[2, "02bd00f5", "GetConfiguration", {
"key": [
"MeterValueSampleInterval"
]
}][3, "02bd00f5", {
"configurationKey": [
{
"key": "MeterValueSampleInterval",
"readonly": false,
"value": "60"
}
]
}]OCPP 2.0.1 中对应:GetBaseReport 和 GetVariables
定期保持连接,让后台知道充电桩在线。
请求
没有字段:请求为空。
响应
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| currentTime | string | 必填 | 中央系统的当前时间。值为日期时间。 |
示例
[2, "83622997", "Heartbeat", {}][3, "83622997", {
"currentTime": "2026-10-06T09:30:00Z"
}]OCPP 2.0.1 中对应:Heartbeat
发送定期或触发的电表读数。
请求
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| connectorId | integer | 必填 | 充电接口的 ID(0 表示主电表)。 |
| meterValue | array | 必填 | 一个或多个带时间戳的电表数值。 |
| timestamp | string | 必填 | 电表数值的时间戳。值为日期时间。 |
| sampledValue | array | 必填 | 一个或多个采样值。 |
| value | string | 必填 | 测得的值。 |
| context | string | 可选 | 读数的上下文。取值:Interruption.Begin、Interruption.End、Sample.Clock、Sample.Periodic、Transaction.Begin、Transaction.End、Trigger、Other。 |
| format | string | 可选 | 值的格式。取值:Raw、SignedData。 |
| measurand | string | 可选 | 测量类型。取值:Energy.Active.Export.Register、Energy.Active.Import.Register、Energy.Reactive.Export.Register、Energy.Reactive.Import.Register、Energy.Active.Export.Interval、Energy.Active.Import.Interval、Energy.Reactive.Export.Interval、Energy.Reactive.Import.Interval、Power.Active.Export、Power.Active.Import、Power.Offered、Power.Reactive.Export、Power.Reactive.Import、Power.Factor、Current.Import、Current.Export、Current.Offered、Voltage、Frequency、Temperature、SoC、RPM。 |
| phase | string | 可选 | 测量所对应的相。取值:L1、L2、L3、N、L1-N、L2-N、L3-N、L1-L2、L2-L3、L3-L1。 |
| location | string | 可选 | 测量位置。取值:Cable、EV、Inlet、Outlet、Body。 |
| unit | string | 可选 | 测量单位。取值:Wh、kWh、varh、kvarh、W、kW、VA、kVA、var、kvar、A、V、K、Celcius、Celsius、Fahrenheit、Percent。 |
| transactionId | integer | 可选 | 这些电表数值所属的交易。 |
响应
没有字段:响应为空。
示例
[2, "80a15023", "MeterValues", {
"connectorId": 1,
"meterValue": [
{
"timestamp": "2026-10-06T09:30:00Z",
"sampledValue": [
{
"value": "19840",
"measurand": "Energy.Active.Import.Register",
"unit": "Wh"
}
]
}
],
"transactionId": 4521
}][3, "80a15023", {}]OCPP 2.0.1 中对应:MeterValues
远程启动充电会话。
请求
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| idTag | string | 必填 | 本次充电会话使用的标识符。最多 20 个字符。 |
| connectorId | integer | 可选 | 要启动的充电接口。 |
| chargingProfile | object | 可选 | 应用于本次充电会话的充电配置文件。 |
| chargingProfileId | integer | 必填 | 该充电配置文件的唯一标识符。 |
| stackLevel | integer | 必填 | 配置文件的优先级(数值越高,优先级越高)。 |
| chargingProfilePurpose | string | 必填 | 充电配置文件的用途。取值:ChargePointMaxProfile、TxDefaultProfile、TxProfile。 |
| chargingProfileKind | string | 必填 | 计划的类型。取值:Absolute、Recurring、Relative。 |
| chargingSchedule | object | 必填 | 充电计划。 |
| chargingRateUnit | string | 必填 | 充电速率的单位(安培或瓦特)。取值:A、W。 |
| chargingSchedulePeriod | array | 必填 | 计划时段列表。 |
| startPeriod | integer | 必填 | 时段的开始时间,从计划开始起算的秒数。 |
| limit | number | 必填 | 该时段内的功率或电流限值。步长为 0.1。 |
| numberPhases | integer | 可选 | 充电使用的相数。 |
| duration | integer | 可选 | 计划的时长,单位为秒。 |
| startSchedule | string | 可选 | 计划的开始日期时间。值为日期时间。 |
| minChargingRate | number | 可选 | 支持的最低充电速率。步长为 0.1。 |
| transactionId | integer | 可选 | 该配置文件所适用的交易。 |
| recurrencyKind | string | 可选 | 循环配置文件的重复周期。取值:Daily、Weekly。 |
| validFrom | string | 可选 | 配置文件开始生效的日期时间。值为日期时间。 |
| validTo | string | 可选 | 配置文件失效的日期时间。值为日期时间。 |
响应
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| status | string | 必填 | 充电点是否接受该请求。取值:Accepted、Rejected。 |
示例
[2, "b7e2ef8a", "RemoteStartTransaction", {
"idTag": "04A2B3C4D5E6F7",
"connectorId": 1
}][3, "b7e2ef8a", {
"status": "Accepted"
}]OCPP 2.0.1 中对应:RequestStartTransaction
远程停止充电会话。
请求
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| transactionId | integer | 必填 | 要停止的交易的 ID。 |
响应
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| status | string | 必填 | 充电点是否接受该请求。取值:Accepted、Rejected。 |
示例
[2, "7fb0afb2", "RemoteStopTransaction", {
"transactionId": 4521
}][3, "7fb0afb2", {
"status": "Accepted"
}]OCPP 2.0.1 中对应:RequestStopTransaction
重置充电点(硬重置或软重置)。
请求
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| type | string | 必填 | 要执行的重置类型。取值:Hard、Soft。 |
响应
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| status | string | 必填 | 充电点是否接受重置。取值:Accepted、Rejected。 |
示例
[2, "526d688f", "Reset", {
"type": "Soft"
}][3, "526d688f", {
"status": "Accepted"
}]OCPP 2.0.1 中对应:Reset
通知后台充电会话已开始。
请求
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| connectorId | integer | 必填 | 交易开始所在的充电接口。 |
| idTag | string | 必填 | 用于启动交易的标识符。最多 20 个字符。 |
| meterStart | integer | 必填 | 交易开始时的电表数值(Wh)。 |
| timestamp | string | 必填 | 交易开始的时间戳。值为日期时间。 |
| reservationId | integer | 可选 | 所使用的预约的 ID。 |
响应
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| idTagInfo | object | 必填 | 该 idTag 的授权信息。 |
| status | string | 必填 | 授权状态。取值:Accepted、Blocked、Expired、Invalid、ConcurrentTx。 |
| expiryDate | string | 可选 | idTag 被视为过期的时间点。值为日期时间。 |
| parentIdTag | string | 可选 | 用于组授权的父级 idTag。最多 20 个字符。 |
| transactionId | integer | 必填 | 由中央系统分配的交易 ID。 |
示例
[2, "2410a6a5", "StartTransaction", {
"connectorId": 1,
"idTag": "04A2B3C4D5E6F7",
"meterStart": 12500,
"timestamp": "2026-10-06T09:30:00Z"
}][3, "2410a6a5", {
"idTagInfo": {
"status": "Accepted"
},
"transactionId": 4521
}]OCPP 2.0.1 中对应:TransactionEvent
报告充电接口的当前状态和错误。
请求
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| connectorId | integer | 必填 | 所报告状态对应的充电接口。 |
| errorCode | string | 必填 | 错误代码(无错误时为 NoError)。取值:ConnectorLockFailure、EVCommunicationError、GroundFailure、HighTemperature、InternalError、LocalListConflict、NoError、OtherError、OverCurrentFailure、PowerMeterFailure、PowerSwitchFailure、ReaderFailure、ResetFailure、UnderVoltage、OverVoltage、WeakSignal。 |
| status | string | 必填 | 充电接口的当前状态。取值:Available、Preparing、Charging、SuspendedEVSE、SuspendedEV、Finishing、Reserved、Unavailable、Faulted。 |
| info | string | 可选 | 关于状态的附加自由文本信息。最多 50 个字符。 |
| timestamp | string | 可选 | 状态变化的时间戳。值为日期时间。 |
| vendorId | string | 可选 | 厂商自定义的标识符。最多 255 个字符。 |
| vendorErrorCode | string | 可选 | 厂商自定义的错误代码。最多 50 个字符。 |
响应
没有字段:响应为空。
示例
[2, "d9b0420e", "StatusNotification", {
"connectorId": 1,
"errorCode": "NoError",
"status": "Available"
}][3, "d9b0420e", {}]OCPP 2.0.1 中对应:StatusNotification
通知后台充电会话已停止。
请求
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| transactionId | integer | 必填 | 正在停止的交易的 ID。 |
| timestamp | string | 必填 | 交易停止的时间戳。值为日期时间。 |
| meterStop | integer | 必填 | 交易结束时的电表数值(Wh)。 |
| idTag | string | 可选 | 请求停止的标识符。最多 20 个字符。 |
| reason | string | 可选 | 停止交易的原因。取值:EmergencyStop、EVDisconnected、HardReset、Local、Other、PowerLoss、Reboot、Remote、SoftReset、UnlockCommand、DeAuthorized。 |
| transactionData | array | 可选 | MeterValue 对象数组(结构与 MeterValues.meterValue 相同)。 |
| timestamp | string | 必填 | 电表数值的时间戳。值为日期时间。 |
| sampledValue | array | 必填 | 一个或多个采样值。 |
| value | string | 必填 | 测得的值。 |
| context | string | 可选 | 读数的上下文。取值:Interruption.Begin、Interruption.End、Sample.Clock、Sample.Periodic、Transaction.Begin、Transaction.End、Trigger、Other。 |
| format | string | 可选 | 值的格式。取值:Raw、SignedData。 |
| measurand | string | 可选 | 测量类型。取值:Energy.Active.Export.Register、Energy.Active.Import.Register、Energy.Reactive.Export.Register、Energy.Reactive.Import.Register、Energy.Active.Export.Interval、Energy.Active.Import.Interval、Energy.Reactive.Export.Interval、Energy.Reactive.Import.Interval、Power.Active.Export、Power.Active.Import、Power.Offered、Power.Reactive.Export、Power.Reactive.Import、Power.Factor、Current.Import、Current.Export、Current.Offered、Voltage、Frequency、Temperature、SoC、RPM。 |
| phase | string | 可选 | 测量所对应的相。取值:L1、L2、L3、N、L1-N、L2-N、L3-N、L1-L2、L2-L3、L3-L1。 |
| location | string | 可选 | 测量位置。取值:Cable、EV、Inlet、Outlet、Body。 |
| unit | string | 可选 | 测量单位。取值:Wh、kWh、varh、kvarh、W、kW、VA、kVA、var、kvar、A、V、K、Celcius、Celsius、Fahrenheit、Percent。 |
响应
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| idTagInfo | object | 可选 | 该 idTag 的授权信息。 |
| status | string | 必填 | 授权状态。取值:Accepted、Blocked、Expired、Invalid、ConcurrentTx。 |
| expiryDate | string | 可选 | idTag 被视为过期的时间点。值为日期时间。 |
| parentIdTag | string | 可选 | 用于组授权的父级 idTag。最多 20 个字符。 |
示例
[2, "b380dc07", "StopTransaction", {
"transactionId": 4521,
"timestamp": "2026-10-06T09:30:00Z",
"meterStop": 19840,
"idTag": "04A2B3C4D5E6F7"
}][3, "b380dc07", {
"idTagInfo": {
"status": "Accepted"
}
}]OCPP 2.0.1 中对应:TransactionEvent
远程解锁充电接口。
请求
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| connectorId | integer | 必填 | 要解锁的充电接口。 |
响应
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| status | string | 必填 | 解锁请求的结果。取值:Unlocked、UnlockFailed、NotSupported。 |
示例
[2, "882ccab0", "UnlockConnector", {
"connectorId": 1
}][3, "882ccab0", {
"status": "Unlocked"
}]OCPP 2.0.1 中对应:UnlockConnector
固件管理
固件更新和诊断上传,用于充电点的远程维护。
请求充电桩上传诊断日志。
请求
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| location | string | 必填 | 诊断文件的上传地址。值为地址(URI)。 |
| retries | integer | 可选 | 上传的重试次数。 |
| retryInterval | integer | 可选 | 两次重试之间的秒数。 |
| startTime | string | 可选 | 日志收集时间范围的开始。值为日期时间。 |
| stopTime | string | 可选 | 日志收集时间范围的结束。值为日期时间。 |
响应
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| fileName | string | 可选 | 诊断文件的名称。最多 255 个字符。 |
示例
[2, "da7920cd", "GetDiagnostics", {
"location": "ftp://files.example.com/diagnostics/"
}][3, "da7920cd", {}]OCPP 2.0.1 中对应:GetLog
报告诊断上传的状态。
请求
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| status | string | 必填 | 诊断上传的当前状态。取值:Idle、Uploaded、UploadFailed、Uploading。 |
响应
没有字段:响应为空。
示例
[2, "d1c853b4", "DiagnosticsStatusNotification", {
"status": "Uploaded"
}][3, "d1c853b4", {}]OCPP 2.0.1 中对应:LogStatusNotification
报告固件更新的状态。
请求
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| status | string | 必填 | 固件更新的当前状态。取值:Downloaded、DownloadFailed、Downloading、Idle、InstallationFailed、Installing、Installed。 |
响应
没有字段:响应为空。
示例
[2, "dc9afcb2", "FirmwareStatusNotification", {
"status": "Installed"
}][3, "dc9afcb2", {}]OCPP 2.0.1 中对应:FirmwareStatusNotification
指示充电桩下载并安装新固件。
请求
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| location | string | 必填 | 固件的下载地址。值为地址(URI)。 |
| retrieveDate | string | 必填 | 充电桩开始获取固件的日期时间。值为日期时间。 |
| retries | integer | 可选 | 下载的重试次数。 |
| retryInterval | integer | 可选 | 两次重试之间的秒数。 |
响应
没有字段:响应为空。
示例
[2, "a57cc6a2", "UpdateFirmware", {
"location": "ftp://files.example.com/fw-1.4.3.bin",
"retrieveDate": "2026-10-07T02:00:00Z"
}][3, "a57cc6a2", {}]OCPP 2.0.1 中对应:UpdateFirmware
本地授权列表
管理充电点上的本地授权列表,用于离线身份验证。
读取本地授权列表的版本号。
请求
没有字段:请求为空。
响应
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| listVersion | integer | 必填 | 本地授权列表的当前版本号。 |
示例
[2, "ccf23a29", "GetLocalListVersion", {}][3, "ccf23a29", {
"listVersion": 1
}]OCPP 2.0.1 中对应:GetLocalListVersion
向本地授权列表发送完整或部分更新。
请求
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| listVersion | integer | 必填 | 本次列表更新的版本号。 |
| updateType | string | 必填 | 这是完整替换还是差异更新。取值:Differential、Full。 |
| localAuthorizationList | array | 可选 | 授权条目列表。 |
| idTag | string | 必填 | 要授权的标识符。最多 20 个字符。 |
| idTagInfo | object | 可选 | 该 idTag 的授权信息。 |
| status | string | 必填 | 授权状态。取值:Accepted、Blocked、Expired、Invalid、ConcurrentTx。 |
| expiryDate | string | 可选 | idTag 被视为过期的时间点。值为日期时间。 |
| parentIdTag | string | 可选 | 用于组授权的父级 idTag。最多 20 个字符。 |
响应
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| status | string | 必填 | 本地列表更新的结果。取值:Accepted、Failed、NotSupported、VersionMismatch。 |
示例
[2, "a23c9563", "SendLocalList", {
"listVersion": 1,
"updateType": "Full",
"localAuthorizationList": [
{
"idTag": "04A2B3C4D5E6F7",
"idTagInfo": {
"status": "Accepted"
}
}
]
}][3, "a23c9563", {
"status": "Accepted"
}]OCPP 2.0.1 中对应:SendLocalList
预约
为特定用户提前预留充电接口。
取消现有预约。
请求
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| reservationId | integer | 必填 | 要取消的预约的 ID。 |
响应
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| status | string | 必填 | 预约是否已取消。取值:Accepted、Rejected。 |
示例
[2, "63258356", "CancelReservation", {
"reservationId": 7
}][3, "63258356", {
"status": "Accepted"
}]OCPP 2.0.1 中对应:CancelReservation
在指定充电接口上创建预约。
请求
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| connectorId | integer | 必填 | 要预约的充电接口(0 表示不指定充电接口)。 |
| expiryDate | string | 必填 | 预约的到期日期时间。值为日期时间。 |
| idTag | string | 必填 | 为其进行预约的标识符。最多 20 个字符。 |
| reservationId | integer | 必填 | 本次预约的唯一 ID。 |
| parentIdTag | string | 可选 | 用于组预约的父级 idTag。最多 20 个字符。 |
响应
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| status | string | 必填 | 预约请求的结果。取值:Accepted、Faulted、Occupied、Rejected、Unavailable。 |
示例
[2, "62a25d78", "ReserveNow", {
"connectorId": 1,
"expiryDate": "2026-10-06T10:00:00Z",
"idTag": "04A2B3C4D5E6F7",
"reservationId": 7
}][3, "62a25d78", {
"status": "Accepted"
}]OCPP 2.0.1 中对应:ReserveNow
智能充电
设置和管理充电配置文件,用于负载均衡、光伏集成和定时充电。
从充电桩上移除一个或多个充电配置文件。
请求
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| id | integer | 可选 | 要清除的充电配置文件的 ID。 |
| connectorId | integer | 可选 | 要清除其配置文件的充电接口。 |
| chargingProfilePurpose | string | 可选 | 要清除的配置文件的用途。取值:ChargePointMaxProfile、TxDefaultProfile、TxProfile。 |
| stackLevel | integer | 可选 | 要清除的配置文件的堆栈级别。 |
响应
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| status | string | 必填 | 是否清除了任何配置文件。取值:Accepted、Unknown。 |
示例
[2, "2c436739", "ClearChargingProfile", {}][3, "2c436739", {
"status": "Accepted"
}]OCPP 2.0.1 中对应:ClearChargingProfile
请求某个充电接口的合成充电计划。
请求
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| connectorId | integer | 必填 | 要获取其计划的充电接口。 |
| duration | integer | 必填 | 所请求计划的时长,单位为秒。 |
| chargingRateUnit | string | 可选 | 计划的首选单位。取值:A、W。 |
响应
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| status | string | 必填 | 充电点能否提供该计划。取值:Accepted、Rejected。 |
| connectorId | integer | 可选 | 该计划所适用的充电接口。 |
| scheduleStart | string | 可选 | 合成计划的开始日期时间。值为日期时间。 |
| chargingSchedule | object | 可选 | 合成充电计划。 |
| chargingRateUnit | string | 必填 | 充电速率的单位(安培或瓦特)。取值:A、W。 |
| chargingSchedulePeriod | array | 必填 | 计划时段列表。 |
| startPeriod | integer | 必填 | 时段的开始时间,从计划开始起算的秒数。 |
| limit | number | 必填 | 该时段内的功率或电流限值。步长为 0.1。 |
| numberPhases | integer | 可选 | 充电使用的相数。 |
| duration | integer | 可选 | 计划的时长,单位为秒。 |
| startSchedule | string | 可选 | 计划的开始日期时间。值为日期时间。 |
| minChargingRate | number | 可选 | 支持的最低充电速率。步长为 0.1。 |
示例
[2, "50bc203f", "GetCompositeSchedule", {
"connectorId": 1,
"duration": 3600
}][3, "50bc203f", {
"status": "Accepted"
}]OCPP 2.0.1 中对应:GetCompositeSchedule
向充电桩发送充电配置文件。
请求
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| connectorId | integer | 必填 | 该配置文件所适用的充电接口。 |
| csChargingProfiles | object | 必填 | 要安装的充电配置文件。 |
| chargingProfileId | integer | 必填 | 该充电配置文件的唯一标识符。 |
| stackLevel | integer | 必填 | 配置文件的优先级(数值越高,优先级越高)。 |
| chargingProfilePurpose | string | 必填 | 充电配置文件的用途。取值:ChargePointMaxProfile、TxDefaultProfile、TxProfile。 |
| chargingProfileKind | string | 必填 | 计划的类型。取值:Absolute、Recurring、Relative。 |
| chargingSchedule | object | 必填 | 充电计划。 |
| chargingRateUnit | string | 必填 | 充电速率的单位(安培或瓦特)。取值:A、W。 |
| chargingSchedulePeriod | array | 必填 | 计划时段列表。 |
| startPeriod | integer | 必填 | 时段的开始时间,从计划开始起算的秒数。 |
| limit | number | 必填 | 该时段内的功率或电流限值。步长为 0.1。 |
| numberPhases | integer | 可选 | 充电使用的相数。 |
| duration | integer | 可选 | 计划的时长,单位为秒。 |
| startSchedule | string | 可选 | 计划的开始日期时间。值为日期时间。 |
| minChargingRate | number | 可选 | 支持的最低充电速率。步长为 0.1。 |
| transactionId | integer | 可选 | 该配置文件所适用的交易。 |
| recurrencyKind | string | 可选 | 循环配置文件的重复周期。取值:Daily、Weekly。 |
| validFrom | string | 可选 | 配置文件开始生效的日期时间。值为日期时间。 |
| validTo | string | 可选 | 配置文件失效的日期时间。值为日期时间。 |
响应
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| status | string | 必填 | 配置文件是否被接受。取值:Accepted、Rejected、NotSupported。 |
示例
[2, "01be9b20", "SetChargingProfile", {
"connectorId": 1,
"csChargingProfiles": {
"chargingProfileId": 10,
"stackLevel": 0,
"chargingProfilePurpose": "TxDefaultProfile",
"chargingProfileKind": "Relative",
"chargingSchedule": {
"chargingRateUnit": "A",
"chargingSchedulePeriod": [
{
"startPeriod": 0,
"limit": 16.0
}
]
}
}
}][3, "01be9b20", {
"status": "Accepted"
}]OCPP 2.0.1 中对应:SetChargingProfile
远程触发
按需请求充电点发送特定消息。
请求充电点立即发送特定消息。
请求
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| requestedMessage | string | 必填 | 充电点应发送的消息。取值:BootNotification、DiagnosticsStatusNotification、FirmwareStatusNotification、Heartbeat、MeterValues、StatusNotification。 |
| connectorId | integer | 可选 | 应为其发送消息的充电接口。 |
响应
| 字段 | 类型 | 要求 | 内容 |
|---|---|---|---|
| status | string | 必填 | 充电点是否会发送该消息。取值:Accepted、Rejected、NotImplemented。 |
示例
[2, "4c736efd", "TriggerMessage", {
"requestedMessage": "StatusNotification"
}][3, "4c736efd", {
"status": "Accepted"
}]OCPP 2.0.1 中对应:TriggerMessage
没有与该搜索匹配的消息。
OCPP 1.6 配置键
ChangeConfiguration 每次在充电桩上设置一个键,GetConfiguration 将它们读回。充电桩在实际使用中的大部分行为都在这里决定:电表数值多久上报一次、包含哪些内容、充电会话能否撑过网络中断、充电线如何解锁。
调用的行为方式
- 每个值都是字符串数字和布尔值也一样:"60"、"true"。JSON 数字不符合消息的 schema,会校验 schema 的充电桩将返回 CallError。
- 按规范拼写键名规范规定键名不区分大小写,但并非所有充电桩都遵循这一点,所以请写 MeterValuesSampledData,而不是 metervaluessampleddata。
- 部分键需要重启充电桩会应答 RebootRequired,发送 Reset 则由您负责。
- 制造商会添加自己的键使用空键列表调用 GetConfiguration 会返回充电桩支持的所有键,包括制造商自己的键。您按名称请求但充电桩无法识别的键,会在 unknownKey 中返回。
四种应答
- Accepted
- 该键已设置,并且现在生效。
- Rejected
- 该键存在,但值被拒绝:超出范围、格式错误,或在这台充电桩上为只读。
- RebootRequired
- 值已保存,但要等充电桩重启后才生效。
- NotSupported
- 充电桩完全没有实现这个键。
全部 43 个键,按功能配置文件分组
| 键 | 类型 | 访问权限 | 作用 |
|---|---|---|---|
| 核心34 | |||
| AllowOfflineTxForUnknownId规范中为可选 | boolean | 读写 | 充电桩离线时是否为未知 idTag 启动交易。设为 true 可让场地在网络中断期间继续充电,代价是部分充电会话可能无法向任何人计费。 |
| AuthorizationCacheEnabled规范中为可选 | boolean | 读写 | 充电桩是否缓存之前 Authorize 调用的结果。它与本地授权列表不同:缓存根据实际授权自动填充,列表则由后台推送。 |
| AuthorizeRemoteTxRequests | boolean | 只读 | 充电桩在启动前是否对 RemoteStartTransaction 中的 idTag 进行授权。设为 true 时,从 App 远程启动仍需要一次 Authorize 往返,因此无效的 idTag 会导致启动失败。 |
| BlinkRepeat规范中为可选 | integer | 读写 | 在一次闪烁序列中,充电桩指示灯闪烁的次数。 |
| ClockAlignedDataInterval | integer | 读写 | 按时钟对齐的电表数值的间隔,从午夜起算。设为 0 时禁用。设为 900 时,每个整刻钟产生一个读数。MeterValuesAlignedData 的数据就由它触发,无论是否接入车辆都会运行。 |
| ConnectionTimeOut | integer | 读写 | 授权后,充电桩等待驾驶员插上充电枪的时长,超时后释放该充电接口。 |
| ConnectorPhaseRotation | CSL | 读写 | 每个充电接口的相序,采用 connectorId.RST 表示法,例如 0.RST、1.RST、2.RTS。这里设置错误,会导致分相电表数值错误和单相负载均衡错误。任何三相场地都值得检查一下。 |
| ConnectorPhaseRotationMaxLength规范中为可选 | integer | 只读 | ConnectorPhaseRotation 中的最大项数。 |
| GetConfigurationMaxKeys | integer | 只读 | 单个 GetConfiguration 请求最多可以请求的键数。超过这个数量,充电桩可能会返回错误。发送不含任何键的 GetConfiguration,即可获取它支持的全部键。 |
| HeartbeatInterval | integer | 读写 | 没有其他通信时,充电桩发送 Heartbeat 的频率。BootNotification 的响应可以覆盖此值。在按流量计费的 SIM 卡上,过短的心跳间隔会悄悄累积流量费用。 |
| LightIntensity规范中为可选 | integer | 读写 | 充电桩灯光的亮度,以百分比表示。 |
| LocalAuthorizeOffline | boolean | 读写 | 充电桩离线时是否根据本地列表或缓存进行授权。 |
| LocalPreAuthorize | boolean | 读写 | 充电桩在线时是否根据本地列表或缓存启动交易,而不等待后台。可以缩短在充电桩前的等待时间,代价是后台不再对每次启动拥有最终决定权。 |
| MaxEnergyOnInvalidId规范中为可选 | integer | 读写 | 授权被证实无效后,充电桩仍会输出的电量。 |
| MeterValuesAlignedData | CSL | 读写 | 按 ClockAlignedDataInterval 在按时钟对齐的 MeterValues 中发送的测量量。测量量词汇与 MeterValuesSampledData 相同,触发方式不同:按时钟,而不是按充电会话。 |
| MeterValuesAlignedDataMaxLength规范中为可选 | integer | 只读 | MeterValuesAlignedData 中测量量的最大数量。 |
| MeterValuesSampledData | CSL | 读写 | 交易期间按 MeterValueSampleInterval 采样、并在 MeterValues 中发送的测量量。本页最有用的一个键。详见下文的深入讲解。 |
| MeterValuesSampledDataMaxLength规范中为可选 | integer | 只读 | MeterValuesSampledData 中测量量的最大数量。在编写长列表之前先读取它:一旦超出,充电桩会拒绝整个列表。 |
| MeterValueSampleInterval | integer | 读写 | 交易期间充电桩对 MeterValuesSampledData 采样的频率。设为 0 时禁用采样。60 是合理的默认值。低于 30 并配合长测量量列表时,会产生大量流量,却几乎得不到额外的信息。 |
| MinimumStatusDuration规范中为可选 | integer | 读写 | 充电桩在一种状态下至少停留多久,才会报告下一种状态。可用于抑制在 Preparing 和 Available 之间来回切换的充电桩的状态抖动。 |
| NumberOfConnectors | integer | 只读 | 这台充电桩上实体充电接口的数量。 |
| ResetRetries | integer | 读写 | 重置失败时充电桩重试的次数。 |
| StopTransactionOnEVSideDisconnect | boolean | 读写 | 在车辆一侧拔下充电枪是否会停止正在进行的交易。设为 false 时,拔下线缆后充电会话仍保持打开,永不结束的充电会话就是这样产生的。 |
| StopTransactionOnInvalidId | boolean | 读写 | 后台拒绝 idTag 时,充电桩是否停止交易。 |
| StopTxnAlignedData | CSL | 读写 | 添加到 StopTransaction 的 transactionData 中的按时钟对齐的测量量。 |
| StopTxnAlignedDataMaxLength规范中为可选 | integer | 只读 | StopTxnAlignedData 中测量量的最大数量。 |
| StopTxnSampledData | CSL | 读写 | 添加到 StopTransaction 的 transactionData 中的采样测量量。请保持简短。其中的每一项都会针对整个充电会话的每次采样,重复放进同一个 StopTransaction 负载中,充电桩就是这样产生出被后台拒绝的数兆字节停止消息。 |
| StopTxnSampledDataMaxLength规范中为可选 | integer | 只读 | StopTxnSampledData 中测量量的最大数量。 |
| SupportedFeatureProfiles | CSL | 只读 | 这台充电桩实现的功能配置文件,例如 Core、FirmwareManagement、SmartCharging。它如实回答了充电桩能做什么。在向客户承诺智能充电之前,请先读取它。 |
| SupportedFeatureProfilesMaxLength规范中为可选 | integer | 只读 | SupportedFeatureProfiles 中的最大项数。 |
| TransactionMessageAttempts | integer | 读写 | 后台未确认交易消息时,充电桩重新发送该消息的次数。 |
| TransactionMessageRetryInterval | integer | 读写 | 这些重试之间的基础等待时间。充电桩会将其乘以尝试次数。 |
| UnlockConnectorOnEVSideDisconnect | boolean | 读写 | 在车辆一侧拔下线缆时,充电桩一侧的线缆是否解锁。 |
| WebSocketPingInterval规范中为可选 | integer | 读写 | OCPP-J 连接上 WebSocket ping 帧的间隔。充电桩位于会关闭空闲连接的 NAT 或防火墙之后、频繁掉线时,用它就能解决。 |
| 本地授权列表3 | |||
| LocalAuthListEnabled | boolean | 读写 | 是否使用本地授权列表。 |
| LocalAuthListMaxLength | integer | 只读 | 本地授权列表可容纳的条目数。 |
| SendLocalListMaxLength | integer | 只读 | 单条 SendLocalList 消息可容纳的条目数。超过这个数量的列表必须分成多次差异更新发送。 |
| 预约1 | |||
| ReserveConnectorZeroSupported规范中为可选 | boolean | 只读 | 充电桩是否接受在充电接口 0(即任一充电接口)上的预约。 |
| 智能充电5 | |||
| ChargeProfileMaxStackLevel | integer | 只读 | 充电桩在充电配置文件上接受的最高堆栈级别。级别越高越优先。 |
| ChargingScheduleAllowedChargingRateUnit | CSL | 只读 | 充电桩在充电计划中接受哪些单位:Current(A)、Power(W)或两者。向只接受安培的充电桩发送以瓦特为单位的配置文件,会被拒绝。这个键会告诉您该用哪种单位。 |
| ChargingScheduleMaxPeriods | integer | 只读 | 一个充电计划中时段的最大数量。 |
| ConnectorSwitch3to1PhaseSupported规范中为可选 | boolean | 只读 | 充电桩能否在三相和单相充电之间切换。它决定了您能否把功率降到三相最低值以下继续充电,而不必完全暂停。 |
| MaxChargingProfilesInstalled | integer | 只读 | 可同时安装的充电配置文件数量。 |
没有与该搜索匹配的键。
MeterValuesSampledData:充电桩测量什么
一个键 MeterValuesSampledData 决定了您能从一次充电会话中获得哪些遥测数据。它是一个以逗号分隔的测量量列表,充电桩按 MeterValueSampleInterval 设定的间隔对其中每一项进行采样,然后在 MeterValues 消息中发送。保持默认值,您只会得到一个累计电能读数,足以计费,此外什么都没有:没有功率曲线,没有分相电流,没有电压,也无法看出智能充电限值是否已生效。
它从不单独起作用。MeterValueSampleInterval 设定采样频率,MeterValuesSampledDataMaxLength 限制可列出的测量量数量,StopTxnSampledData 决定其中哪些会在 StopTransaction 中重复发送,而 MeterValuesAlignedData 使用同一套词汇,只是按时钟计划而不是按充电会话采样。
测量量
以下任何一项都可以出现在列表中。充电桩支持哪些取决于其硬件:交流壁挂式充电桩通常不会上报荷电状态,基础款充电桩可能只有电能寄存器。
| 测量量 | 单位 | 通常见于 | 提供的信息 |
|---|---|---|---|
| Energy.Active.Import.Register | Wh | 交流和直流 | 从电网取用的累计电能,直接从电表寄存器读取。MeterValuesSampledData 为空时的默认值,也是几乎所有计费计算的基础。 |
| Energy.Active.Export.Register | Wh | 支持 V2G | 回馈的累计电能,适用于双向配置。 |
| Energy.Active.Import.Interval | Wh | 交流和直流 | 自上次采样以来输入的电能,而不是累计总量。 |
| Energy.Reactive.Import.Register | varh | 取决于电表 | 输入的累计无功电能。 |
| Power.Active.Import | W | 交流和直流 | 瞬时有功功率。用它绘制充电曲线,负载管理也根据它做出调整。 |
| Power.Offered | W | 交流和直流 | 充电桩当前向车辆提供的功率。将它与 Power.Active.Import 对比,即可看出限值是否真的生效。 |
| Power.Reactive.Import | var | 取决于电表 | 瞬时无功功率。 |
| Power.Factor | 比值 | 取决于电表 | 有功功率与视在功率之比。 |
| Current.Import | A | 交流和直流 | 取用的电流。通常按相上报,因此这一个测量量每次采样可能对应三个值。 |
| Current.Offered | A | 交流和直流 | 充电桩向车辆发出的电流限值信号。可直接看出您的智能充电配置文件是否已生效。 |
| Current.Export | A | 支持 V2G | 回馈的电流,适用于双向配置。 |
| Voltage | V | 交流和直流 | 供电电压,三相充电桩按相上报。可用于发现缺相或接触不良。 |
| Frequency | Hz | 取决于电表 | 电网频率。注意,规范没有为它定义单位字段。 |
| Temperature | 摄氏度 | 取决于充电桩 | 充电桩或充电接口处的温度。它可以解释炎热天气下的降额,免得被误报为故障。 |
| SoC | % | 直流,或交流上的 ISO 15118 | 车辆电池的荷电状态。只有车辆真的上报时才会出现,而在普通交流充电中,车辆通常不会上报。 |
| RPM | rpm | 少见 | 风扇转速,仅限会上报它的充电桩。 |
没有与该搜索匹配的测量量。
可用的列表
把其中一个复制到 ChangeConfiguration 调用的值中。先从少量开始,充电桩接受后再添加测量量。
- 仅计费
仍能生成正确发票的最低配置。大多数充电桩的默认设置。
Energy.Active.Import.Register - 标准遥测
适合受管理交流场地的合理默认值:功率曲线,以及用于诊断的分相电流和电压。
Energy.Active.Import.Register, Power.Active.Import, Current.Import, Voltage - 智能充电
增加提供值,让您看到配置文件是否真的被应用,而不是靠猜测。
Energy.Active.Import.Register, Power.Active.Import, Power.Offered, Current.Import, Current.Offered, Voltage - 直流快充
增加荷电状态和温度,直流充电桩确实会上报这些数据,而它们可以解释大多数降额。
Energy.Active.Import.Register, Power.Active.Import, Current.Import, Voltage, SoC, Temperature
容易出错的地方
- 一个错误的测量量会让整个列表被拒绝
充电桩把列表作为一个整体来校验。只要有一项不受支持,整个列表都会得到 Rejected 或 NotSupported,而且不会指出是哪一项出错。逐个设置测量量来找出问题项,或者先查看 MeterValuesSampledDataMaxLength 和厂商文档。
- 一个测量量可能对应三个值
Current.Import 和 Voltage 按相上报,因此在三相充电桩上,它们各自以三个 sampledValue 条目到达,并标记为 L1、L2、L3 或 L1-N 等。一个包含六个测量量的列表,每次采样很容易就有十几个值。负载大小的增长比列表长度看起来要快。
- Wh 与 kWh
电能寄存器默认单位是 Wh,但单位字段也可能写成 kWh,有些固件就是这样做的。请读取单位而不是假设,否则发票会相差一千倍。
- 短间隔是有代价的
MeterValueSampleInterval 设为 10 秒并配一个长列表,意味着每次充电会话有数百条消息。在按流量计费的 SIM 卡上,这是实打实的费用;在大型场地上,这是实打实的后台负载。60 秒是一个好的默认值,只需要曲线形状的场地可以用 300 秒。
- StopTxnSampledData 是负载陷阱
这里列出的所有内容,会把整个充电会话的每一次采样都重复放进一条 StopTransaction 消息中。充电会话长、列表也长时,产生的负载大到足以被后台拒绝或截断,交易随后就无法正常关闭。除非有明确理由,否则只保留电能寄存器。
- 去掉电能寄存器,计费就会出错
如果 Energy.Active.Import.Register 不在列表中,周期性电表数值就不包含累计总量。大多数后台随后会退而使用交易消息中的 meterStart 和 meterStop,任何缺失 StopTransaction 的充电会话都将无法计费。请始终把它保留在列表中。
- 交流充电通常无法获取 SoC
荷电状态来自车辆,通过 ISO 15118 或直流充电协议传递。在没有 Plug and Charge 的普通交流壁挂式充电桩上,车辆不会上报它,因此请求 SoC 要么被拒绝,要么返回不了有用的信息。
- 读取 context 字段
每个 sampledValue 都带有一个 context:Sample.Periodic、Transaction.Begin、Transaction.End、Sample.Clock 或 Trigger。Transaction.Begin 时的值是起始读数,不是消耗量。把每次采样都当作周期性采样,充电会话就会被重复计算。
关于 OCPP 1.6J 的问题
OCPP 1.6J 是开放充电点协议 1.6 版的 JSON 形式。充电桩向其后台建立一条 WebSocket 连接,双方通过它发送 JSON 消息。开放充电联盟于 2015 年发布了 1.6 版,大多数充电桩至今仍支持它:在我们的充电桩数据库中,已知 OCPP 版本的 495 款充电桩里有 483 款支持 1.6。
两者传送的消息相同,方式不同。1.6J 通过充电桩保持打开的 WebSocket 发送 JSON,因此充电桩只需要一条出站连接。1.6S 通过 HTTP 发送 SOAP,这时后台也必须能够访问到充电桩。
2.0.1 是较新的版本,有自己的一套消息。它用设备模型描述充电桩的设置,内置安全配置文件,用 TransactionEvent 取代 StartTransaction 和 StopTransaction,并增加了用于 Plug and Charge(ISO 15118)的消息。两者不能混用:充电桩与其后台在建立连接时商定使用一个版本。在我们的充电桩数据库中,有 102 款充电桩列有 2.0.1,与 1.6 并存或取代 1.6。全部 2.0.1 和 2.1 消息见 OCPP 2.0.1 和 2.1 参考。
开放充电联盟在其网站上免费发布该规范,并附有每条消息的 JSON schema。本参考依据该规范编写。两者不一致时,以规范为准。
通过智能充电(Smart Charging)功能配置文件。后台发送 SetChargingProfile,其中包含以安培或瓦特为单位的限值计划。ChargePointMaxProfile 限制整台充电桩,TxDefaultProfile 适用于每个新的充电会话,TxProfile 适用于某个正在进行的充电会话。当两个用途相同的配置文件重叠时,stackLevel 较高的那个生效。Plugchoice 如何使用这些功能,请参阅智能充电页面。
在充电桩数据库中查一查:其中有 775 款充电桩,列出了我们已知的 OCPP 版本及每条信息的来源。充电桩的数据手册通常也会注明,常写作 OCPP 1.6J 或 OCPP 1.6 JSON。
在充电桩的设置中(通常在安装商 App 或其本地网页上),输入后台的 WebSocket URL(以 ws:// 或 wss:// 开头)和充电桩的 ID,即 charge point identity。充电桩建立连接并发送 BootNotification。后台应答 Accepted 后,充电桩即上线,并为每个充电接口发送 StatusNotification。
延伸阅读
在 Plugchoice 上运行您的 OCPP 充电桩
将您的 OCPP 1.6J 充电桩免费连接到 Plugchoice,在 Web 门户、App 中以及通过 API 管理它们。