| 现象 | 缺失方 | 立即查看 |
|---|---|---|
| 桩侧有、平台无 | 上传链路 | TCP/心跳、报文 ACK、Kafka 积压 |
| 平台有、桩侧无 | 本地存储 | SQLite 锁/满盘、文件句柄、NTP 时间 |
| 两边都有但时间差>5s | 时间基准 | chrony status、MCU RTC 漂移 |
GetDiagnostics 消息,指定 startTime / stopTime 到秒,桩侧必须把对应时段本地 .log 打成 zip 通过 HTTP POST 上传到平台指定 URL;这一步就能把“本地漏记”还是“平台漏收”一次性区分开 。COMMIT 被阻塞,结果日志写在内存缓冲区就掉电丢失;临时方案:把 PRAGMA synchronous = FULL; PRAGMA journal_mode = WAL; 写进固件初始化脚本,掉电也能回滚 。messageId + payload;timestamp 顺序重发 StartTransaction / StopTransaction / MeterValues;transactionId 是否生成,生成即代表对齐成功。systemctl restart chronyd,再 chronyc makestep;OCPP 报文里 timestamp 与平台差超过 30s 会被直接丢弃,这是最容易忽视的“隐形丢日志”。ChangeConfiguration 里把 AcknowledgeLocalTx 设为 true,平台每收到一条记录必须回 STATUS_OK,否则桩侧重发 3 次;这样以后再也不会出现“平台以为收到,桩侧以为没收到”的灰色地带。#!/bin/sh# 强制对齐昨天 00:00~23:59 的日志CHARGE_BOX_ID="12345678"START=$(date -d yesterday +%Y-%m-%dT00:00:00Z)STOP=$(date -d yesterday +%Y-%m-%dT23:59:59Z)curl -X POST $CSMS_URL \
-d '{"action":"GetDiagnostics","chargeBoxId":"'$CHARGE_BOX_ID'",
"payload":{"startTime":"'$START'","stopTime":"'$STOP'","retries":3}}'LEFT JOIN,空白行就是缺失记录,按第 3 步补传即可。GetDiagnostics 先定位谁缺,再补时钟、补事务、补回执,30 分钟就能 对齐;AcknowledgeLocalTx 打开,再也不同步焦虑 。芯橙科技交流充电桩主板,质优价美,欢迎咨询选购!
联系人: 深圳市芯橙科技有限公司
手机: 18025316892
电话: 0755-21010929
邮箱: shutao.chen@x-cheng.com
地址: 深圳市龙华区民治大道展滔科技大厦B座911