3. 专业问题
3.1. GetConfiguration无法拉取厂商自定义的key?
系统设计的默认原则是:不主动返回厂商自定义Key。
如果需要获取对应的Key值需要显示拉取,以拉取Websocket配置信息为例:
服务器发送的消息
"GetConfiguration",{"key":["VendorWebsocketSettings"]}
桩返回的消息
"configurationKey":[{"key":"VendorWebsocketSettings","readonly":false,"value":"WS,cpam3.x-cheng.net,443,/ocpp/,socpp1.6,,,"}]
3.2. 如何通过OCPP给桩ID取别名?
用ocpp1.6中的ChangeConfiguration.req修改桩别名,别名用于 后台对充电桩管理识别。
3.2.1. 使用VendorChargeBoxId修改桩别名
默认为桩号,可以设置为任意一个不大于63位的字符串,如果value为空会恢复默认值;
修改VendorChargeBoxId不影响任何功能,仅仅是备份值;
例如修改充电桩别名如xxxxxxxxxx,参考如下交互流程:
发送命令
[2,"587f59e3-3f3f-4972-b09a-b2859c8d823b","ChangeConfiguration",{"value":"xxxxxxxxxx","key":"VendorChargeBoxId"}]
桩的返回(成功)
[3, "587f59e3-3f3f-4972-b09a-b2859c8d823b", {"status":"Accepted"}]
桩的返回(失败)
[3, "587f59e3-3f3f-4972-b09a-b2859c8d823b", {"status":"Rejected"}]
恢复默认值:
发送命令
[2,"587f59e3-3f3f-4972-b09a-b2859c8d823b","ChangeConfiguration",{"value":"","key":"VendorChargeBoxId"}]
桩的返回(成功)
[3, "587f59e3-3f3f-4972-b09a-b2859c8d823b", {"status":"Accepted"}]
设置失败的原因排查:
可能是字符串大于63个字符。
3.2.2. 使用ChargePointName修改桩SN
默认为桩号,可以设置为任意一个不大于63位的字符串,如果value为空会恢复默认值;
修改ChargePointName会影响连接ws服务器的ID,同时也会导致出厂配的离线IC卡失效;
修改之后不影响蓝牙广播后缀;
设置格式如下(xxxxxxxxxx部分修改为自己要设置的值):
发送命令
[2,"587f59e3-3f3f-4972-b09a-b2859c8d823b","ChangeConfiguration",{"value":"xxxxxxxxxx","key":"VendorChargePointName"}]
桩的返回(成功)
[3, "587f59e3-3f3f-4972-b09a-b2859c8d823b", {"status":"Accepted"}]
桩的返回(失败)
[3, "587f59e3-3f3f-4972-b09a-b2859c8d823b", {"status":"Rejected"}]
设置失败的原因排查:
设置失败的原因可能是字符串大于63个字符。
重要
反馈问题时需要反馈原始SN值,而不是修改后的值。
3.2.3. 使用UrlHasServerToken控制URL
该key默认值为false,链接Websocket服务器时,会在url最后自动拼接桩号。例如桩号为123456789,服务器地址为cpam3.x-cheng.net/ocpp,链接服务器的url为/ocpp/123456789;
设置 为true时,链接Websocket服务器时,只使用配网发送的url链接服务器,不会拼接桩号。例如桩号为123456789,服务器地址为cpam3.x-cheng.net/ocpp,链接服务器的url为/ocpp/;
3.3. 如何通过OCPP自定义Key更改websocket?
使用ocpp1.6中的ChangeConfiguration.req,通过自定义Key:VendorWebsocketSettings可以更改Websocket。
自定义Websocket设置,默认参考格式如下(固定7个,分开内容单元):
WS,cpam3.x-cheng.net,443,/ocpp/,socpp1.6,,,
解释如下:
固定类型字符:WS;
服务器地址;
服务器端口;
服务器连接的URL;
服务器协议类型:ws链接配置为ocpp1.6,wss链接配置为socpp1.6;
Websocket用户名;
Websocket用户密码。
3.3.1. 例如加密链接修改wss://cpam3.x-cheng.net/ocpp,端口号为443的链接
发送命令
[2,"4e61badb-cdfc-4d68-9f0b-756f9a71701e","ChangeConfiguration",{"value":"WS,cpam3.x-cheng.net,443,/ocpp/,socpp1.6,,,","key":"VendorWebsocketSettings"}]
桩的返回(成功)
[3, "4e61badb-cdfc-4d68-9f0b-756f9a71701e", {"status":"Accepted"}]
3.3.2. 例如非加密链接修改修改ws://cpam3.x-cheng.net/ocpp ,端口号为80的链接
发送命令
[2,"4e61badb-cdfc-4d68-9f0b-756f9a71701e","ChangeConfiguration",{"value":"WS,cpam3.x-cheng.net,80,/ocpp/,ocpp1.6,,,","key":"VendorWebsocketSettings"}]
桩的返回(成功)
[3, "4e61badb-cdfc-4d68-9f0b-756f9a71701e", {"status":"Accepted"}]
重要
一定要保证配置的正确性,否则会导致桩无法连上服务器,需要现场使用蓝牙重新配网。
3.4. 如何通过OCPP禁用即插即充模式?
使用ocpp1.6中的ChangeConfiguration.req,把自定义Key:VendorDirectWorkMode设置为false即可禁用即插即充
修改命令如下:
发送命令
[2,"7e952213-25ee-4b09-b92e-3c4f04c9ff89","ChangeConfiguration",{"value":"false","key":"VendorDirectWorkMode"}]
桩的返回(成功)
[3, "7e952213-25ee-4b09-b92e-3c4f04c9ff89", {"status":"Accepted"}]
3.5. 如何通过OCPP禁用离线IC卡?
通过关闭本地认证功能和离线缓存功能关闭离线IC卡。
3.5.4. 设置AllowOfflineTxForUnknownId为false
修改命令如下:
发送命令
[2,"7e952213-25ee-4b09-b92e-3c4f04c9ff89","ChangeConfiguration",{"value":"false","key":"AllowOfflineTxForUnknownId"}]
桩的返回(成功)
[3, "7e952213-25ee-4b09-b92e-3c4f04c9ff89", {"status":"Accepted"}]
3.6. 上送OCPP后台的详细错误故障代码?
错误代码 |
vendorErrorCode |
含义 |
|---|---|---|
1 |
0x2 |
CP负12V |
8 |
0x100 |
flash异常 |
13 |
0x2000 |
辅助处理器异常 |
14 |
0x4000 |
CP异常 |
15 |
0x8000 |
继电器开合检测异常 |
16 |
0x10000 |
漏电自检异常 |
充电桩会通过ocpp1.6中StatusNotification.req中的vendorErrorCode字段,上报错误代码,格式为十六进制,当有多个错误同时发生时,错误代码会相加,例如:当继电器开合检测异常和CP异常同时发送时,0x8000+0x4000 = 0xC000.
以上错误代码,均为硬件固件,如果重启无法消除,需要联系售后处理。
3.7. 客户已接入自己的平台如何远程协助分析故障?
请提供需要协助分析的桩SN;
请通过贵司平台,开启该桩的 远程协助指令,参考remote debug cmd(该命令开启后我们实时获取该桩的日志信息);
3.7.1. 设置DBGEnableInsight为8.209.68.26,8883
3.7.1.1. 修改命令如下
发送命令
[2,"55908aa6-330d-4d8b-a84a-547b0850169c","ChangeConfiguration",{"value":"8.209.68.26,8883","key":"DBGEnableInsight"}]
桩的返回(成功)
[3, "55908aa6-330d-4d8b-a84a-547b0850169c", {"status":"Accepted"}]
桩的返回(失败)
[3, "55908aa6-330d-4d8b-a84a-547b0850169c", {"status":"Rejected"}]
3.7.1.2. 设置失败的原因排查
充电桩不支持该DBGEnableInsight Key
触发故障场景,并告知我们;
我们将分析该日志信息,并反馈分析结果;
贵司不需要我们远程协助时可以关闭该功能,参考remote debug cmd,关闭后我们将不再能收到任何信息。
3.7.2. 设置DBGEnableInsight为空
3.7.2.1. 修改命令如下
发送命令
[2,"55908aa6-330d-4d8b-a84a-547b0850169c","ChangeConfiguration",{"value":"","key":"DBGEnableInsight"}]
桩的返回(成功)
[3, "55908aa6-330d-4d8b-a84a-547b0850169c", {"status":"Accepted"}]
桩的返回(失败)
[3, "55908aa6-330d-4d8b-a84a-547b0850169c", {"status":"Rejected"}]
3.7.2.2. 设置失败的原因排查
充电桩不支持该DBGEnableInsight Key
3.8. OCPP1.6J Keys 列表?
配置 |
说明 |
|---|---|
AllowOfflineTxForUnknownId |
使能未知ID认证(默认开) |
AuthorizationCacheEnabled |
使能本地认证缓存(默认开) |
AuthorizeRemoteTxRequests |
使能远程充电ID认证(默认关) |
ClockAlignedDataInterval |
充电充电桩上报时刻(默认30分钟) |
MeterValuesAlignedData |
充电充电桩上报元素("Current.Import,Energy.Active.Import.Interval,Power.Active.Import,Temperature,Voltage") |
MeterValuesAlignedDataMaxLength |
充电充电桩上报元素数量() |
ConnectionTimeOut |
Prepare的Connected连接超时(默认120秒) |
ConnectorPhaseRotation |
每个连接器相对于连接器电表(或者如果不存在,则相对于电网连接)的相序。(默认值“RST”),不支持 |
GetConfigurationMaxKeys |
最大GetConfigurationMaxKeys(默认100) |
HeartbeatInterval |
默认心跳间隔(15分钟) |
LocalAuthorizeOffline |
使能离线本地认证,仅仅离线时使用(默认开) |
LocalPreAuthorize |
使能本地预先认证,仅仅在线时使用(默认关) |
MaxEnergyOnInvalidId |
无效ID最大提供的电能(1000Wh) |
MeterValuesSampledData |
工作时充电桩上报元素("Power.Offered,Current.Offered,Current.Import,Energy.Active.Import.Register,Energy.Active.Import.Interval,Power.Active.Import,Temperature,Temperature,Temperature,Voltage") |
MeterValuesSampledDataMaxLength |
工作时充电桩上报元素数量 |
MeterValueSampleInterval |
工作时充电桩上报间隔(60秒) |
MinimumStatusDuration |
最小Status上报间隔(默认0) |
NumberOfConnectors |
支持充电枪数(默认1) |
ResetRetries |
复位重试次数(3) |
StopTransactionOnEVSideDisconnect |
当车端断开连接停止事务(默认关) |
StopTransactionOnInvalidId |
当认证ID无效停止事务(默认开) |
StopTxnAlignedData |
停止事务时上报周期数据(空) |
StopTxnAlignedDataMaxLength |
StopTxnAlignedData最大长度(默认值:当前StopTxnAlignedData实际长度) |
StopTxnSampledData |
停止事务时上报采样数据(空) |
StopTxnSampledDataMaxLength |
StopTxnSampledData最大长度(默认值:当前StopTxnSampledData实际长度) |
SupportedFeatureProfiles |
支持的功能配置文件列表。可能的配置文件标识符:Core,FirmwareManagement,LocalAuthListManagement,Reservation,SmartCharging and RemoteTrigger.(默认值:"Core,LocalAuthListManagement,Reservation,SmartCharging,RemoteTrigger") |
SupportedFeatureProfilesMaxLength |
SupportedFeatureProfiles最大数量(默认值:当前SupportedFeatureProfiles的数量) |
TransactionMessageAttempts |
事务消息丢失尝试次数 |
TransactionMessageRetryInterval |
事务消息丢失尝试间隔 |
UnlockConnectorOnEVSideDisconnect |
车端可以unlock |
LocalAuthListEnabled |
认证列表使能 |
LocalAuthListMaxLength |
认证列表最大长度 |
SendLocalListMaxLength |
本地认证列表最大长度 |
ReserveConnectorZeroSupported |
是否支持充电枪预定(默认true,只读) |
ChargeProfileMaxStackLevel |
充电调度最大堆栈深度(默认8,只读) |
ConnectorSwitch3to1PhaseSupported |
是否支持3相转1相(否),不支持 |
MaxChargingProfilesInstalled |
最大可以安装的调度数量(默认16) |
ChargingScheduleAllowedChargingRateUnit |
在ChargingSchedule中可用的支持数量列表。允许的值为:'Current'和'Power'(默认值:"Current,Power") |
ChargingScheduleMaxPeriods |
每个ChargingSchedule可以定义的最大周期数(默认值:7*24*3600) |
3.9. 客户后台如何主动获取4G信息?
补充:覆盖插网线连接后台的场景,注意4G和ETH同步的问题;
目前无法单独获取4G信息,只能通过boot查看ICCID和IMSI。
当ETH、WiFi和4G一起使用时,只有断开ETH和WiFi,单独使用4G连过服务器以后才会ICCID和IMSI值,如果从上电开始一直使用ETH和WiFi链接服务器,bootNotation中无法查看到4G信息。
主动触发BootNotation查看4G信息的方式:
发送命令
[2,"be899b1f-9926-4285-8c91-b18bd94646c7","TriggerMessage",{"connectorId":0,"requestedMessage":"BootNotification"}]
桩的返回(成功)
[3, "be899b1f-9926-4285-8c91-b18bd94646c7", {"status":"Accepted"}]
桩返回Accepted后会主动发送一次bootNotation。
3.10. 桩升级流程
远程升级使用OCPP1.6中的UpdateFirmware.req命令,location只支持http和https(2024.5月之后的固件才支持)链接,其他参数设置无要求。升级中桩会上报FirmwareStatusNotification.req消息,status有7种状态:Downloaded、DownloadFailed、Downloading、Idle、InstallationFailed、Installing、Installed;
充电桩远程升级:
桩在非充电状态下(最好是在available状态),后台发送UpdateFirmware.req命令;
发送UpdateFirmware.req后,桩进入unavailable状态;
升级正常时,后台会显示固件升级百分比进度条(早期固件无获取升级进度的功能);
升级异常时,进度条消失,桩退出unavailable状态(早期固件不退出unavailable状态),可能会重启;
正常升级流程会依次上报:Downloading->Downloaded->Installing->Installed;
升级完成后桩自动重启,退出unavailable状态(早期固件无法自动退出,需要后台主动修改状态),固件版本号变为升级固件的版本号;
G2+升级举例如下:
桩在线且处于空闲状态;
记录升级前的固件版本;
先升级ESP32:http://8.209.68.26/download/cp.onfly.V1.2@23283e3+48.ws.cp
再升级ST070:http://8.209.68.26/download/XSmart.V2.0.110(M3G31H)@7KW.EVPro.070
检查升级后的版本;
重要
注意升级过程中,桩为不可用状态,升级成功会后会重启进入空闲状态,需要后台查看并把桩置成可用状态。
3.11. 支持的TLS版本
M3G2支持的TLS版本:TLS 1.0、TLS 1.1、TLS 1.2.
M3G3支持的TLS版本:TLS 1.2、TLS 1.3,不支持TLS 1.0、TLS 1.1、SSL 3.0。
3.12. 如何使用key:OEM_FaultMask
系统的错误功能控制掩码:
掩码 |
功能 |
|---|---|
0 |
|
1 |
|
2~7 |
保留,默认值0 |
8 |
是否关闭地线检测; |
9 |
是否关闭继电器粘连检测; |
10 |
是否关闭过温检测; |
11 |
是否关闭过流检测; |
12 |
是否关闭过压检测; |
13 |
是否关闭欠压检测; |
14 |
是否屏蔽掉漏电自检测; |
15 |
是否屏蔽掉漏电检测; |
16 |
是否屏蔽掉CP二极管(-12V)检测; |
17~31 |
保留,默认值0 |
掩码 |
31~17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7~2 |
1 |
0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
设置值 |
0 |
65536 |
32768 |
16384 |
8192 |
4096 |
2048 |
1024 |
512 |
256 |
0 |
2 |
1 |
ChangeConfiguration使用举例:例如要关闭地线检测和继电器黏连检测:value 应设置为768(256+512)。
GetConfiguration使用举例:例如,获取到的value值为768,使用十进制转换二进制的进制转换器将该值转换为二进制进行查看,从右往左数,右边第一个为编号0,出现1的位数即为表中的编号,对应相应的功能。
关闭接地检测修改命令如下:
发送命令
[2,"55908aa6-330d-4d8b-a84a-547b0850169c","ChangeConfiguration",{"value":"256","key":"OEM_FaultMask"}]
桩的返回(成功)
[3, "55908aa6-330d-4d8b-a84a-547b0850169c", {"status":"Accepted"}]
3.13. 如何使用key:OEM_FunctionMask
系统的功能控制掩码:
bit0: 是否使能蜂鸣器:
0: 使能蜂鸣器
1:关闭蜂鸣器提示
bit1: 是否屏蔽掉充电桩的CC功能;
bit2: 充电桩的CP二极管检测(-12V)异常是否进入 错误 状态;
bit3: 是否屏蔽掉过温降流功能;
从右往左依次为bit0、bit1、bit2、bit3、bit4、bit5、bit6、bit7、bit8、bit9、bit10、bit11、bit12、bit13、bit14、bit15、bit16,每个bit位只能设置为0或1。
关闭接地检测修改命令如下:
发送命令
[2,"55908aa6-330d-4d8b-a84a-547b0850169c","ChangeConfiguration",{"value":"0x1","key":"OEM_FunctionMask"}]
桩的返回(成功)
[3, "55908aa6-330d-4d8b-a84a-547b0850169c", {"status":"Accepted"}]
3.14. 如何查看网络信息
发送命令
[2,"cec46082-91b8-4492-afd6-24af84ab7873","GetConfiguration",{"key":["OEM_NetState"]}]
桩的返回(成功)
[3, "cec46082-91b8-4492-afd6-24af84ab7873", {"configurationKey":[{"key":"OEM_NetState","readonly":true,"value":"{\"connectivity\":\"WiFi\",\"wifi-rssi\":\"-43\",\"4g-rssi\":\"-1\",\"ccid\":\"\",\"imsi\":\"\",\"ip\":\"192.168.137.199\"}"}]}]
3.15. RemoteStartTransaction携带调度的要求
RemoteStartTransaction携带的调度配置只能为Txprofile,设置其他配置无效或者返回拒绝。
3.16. 如何修改心跳报文上送周期?
使用ChangeConfiguration命令修改key:HeartbeatInterval,value可设置范围60秒~86400秒。
3.17. 在线升级API使用说明
升级前需要先确认固件状态和硬件状态,需要升级和充电桩当前固件一样的固件类型才可以,否则可能无法升级,或升级成功后可能会异常报错。
所有版本固件升级链接都支持http链接,部分最新版固件支持https、FTP链接,如果对固件升级链接没有要求,建议使用http连接升级,如果使用https和FTP链接升级,需要先确认当前固件是否支持。
当开始升级后,桩会通过FirmwareStatusNotification.req上报充电桩更新状态,为了确保后台可以监控升级进度,每一条FirmwareStatusNotification.req都需要后台及时返回响应消息,否则会导致升级结束后不自动充电充电桩;
升级过程中桩主动发送FirmwareStatusNotification.req的时间间隔最大为10秒,超过20秒,后台没有收到FirmwareStatusNotification.req,后台需要使用TriggerMessage.req,主动触发FirmwareStatusNotification.req上报;
升级过程中后台可以通过GetConfiguration.req拉取key:GetFirmwareUpgradePercentages,查看固件下载进度;