欢迎光临~深圳市芯橙科技有限公司
语言选择: 中文版 ∷  英文版

新闻中心

如何远程诊断OCPP充电桩主控板离线原因?是网络断了、证书过期,还是心跳包丢失?

远程把OCPP充电桩主控板“离线”拆成 网络层 / 安全层 / 应用层 三段,每段各用一条 CLI 或日志关键字即可 30 秒定位,无需去现场。下面给出通用排查脚本(按优先序),可直接写进运维 SOP。

1. 网络层:先确认“通不通”

① 在云端 SSH 跳板机执行
ping -c 4 <桩IP> && telnet <桩IP> 8883
  • ping 不通 ➜ 路由/基站/流量卡欠费,转步骤②
  • telnet 8883 超时 ➜ 4G 模组在线但 443/8883 被防火墙掐掉,联系运营商放通白名单
② 若桩侧有本地维护口,让现场人员插 USB-串口,执行
AT+CSQ          # 信号强度,<10 视为盲区AT+CGATT?       # 是否附着 PDP,返回 0 即卡欠费/APN 错

信号值 4 表示“找网失败”,值 8 表示 TCP 已建链

2 条 AT 指令即可区分“信号问题”还是“IP 问题”

2. 安全层:再确认“证书拦没拦”

云端抓 TLS 握手包(Wireshark filter:tcp.port==8883 && ssl.alert
  • 看到 Alert 42 “Bad Certificate” ➜ 桩侧客户端证书过期/根 CA 被换;
  • 看到 Alert 40 “Handshake Failure” ➜ 加密套件不匹配,桩侧仍用 TLS1.1。
桩侧日志关键字同时grep:
grep -i "certificate verify" /var/log/ocpp.log
若出现 x509: certificate has expired or is not yet valid 即可秒定“证书过期”

3. 应用层:最后看“心跳丢没丢”

云端数据库(或 Redis 流)查
select last_heartbeat from cp where charge_box_id='XXX' 
       order by ts desc limit 1;
  • 当前时间 - last_heartbeat > 2×HeartbeatInterval ➜ 桩没发心跳;
  • 再查 ocpp_msg 表,若 BootNotification 后无 Heartbeat 记录,说明固件 crash 或线程饿死
桩侧串口实时打印
tail -f /tmp/ocpp | grep -E "Heartbeat|WebSocket"
连续 3 次 Send HeartbeatHeartbeatResponse ➜ 云端 MQTT 消费掉线,重启云端容器即可恢复

4. 一键远程诊断脚本(已落地 8 万桩)

#!/bin/bashID=$1echo "=== 网络 ==="ping -W 2 -c 3 $ID >/dev/null && echo "ok" || echo "network down"echo "=== TLS ==="echo | openssl s_client -connect $ID:8883 2>&1 | grep "Verify return code"echo "=== 心跳 ==="redis-cli --raw hget cp:$ID last_seen | xargs -i date -d @{}
3 秒输出 3 行结果,运维工单系统自动根据关键字派单:
  • network down ➜ 派给运营商;
  • certificate ➜ 派给证书管理员;
  • last_seen 超时 ➜ 派给平台运维。

结论

用“ping/telnet → AT+CSQ → 证书日志 → 心跳时间戳”四连击,坐在办公室就能在 30 秒内把离线原因锁定在“网络/证书/心跳”之一,不再盲猜“是不是充电桩主控板死机”,现场出勤率因此下降 65 % 。

芯橙科技出品的交流充电桩主控板,质美价优,欢迎咨询选购!