docs(protocol): 补 meter 字段的平台侧落地情况(已落库 + 变化留痕=抄表记录)

协议 §5.3 的 cabinet.meter 字段表原本只写了要求「平台原样存库」。现补上落地情况:
- 已落 cabinets.meter_wh / meter_at(最新读数)
- 已在 cabinet_meter_readings 表**只在读数变化时**追加留痕(即抄表记录,可直接算日用电量)
- 并注明此前只写 Redis(TTL 300s)⇒ 上报即被清掉、历史不可回溯,属实现缺口
- 明确 meter(整柜累计电能)与 energy(单订单充电量,协议无此字段)不是一回事

实测证据:4 次同值上报只在留痕表留下 1 行;读数由 125500 改为 125600 后新增 1 行且 cabinets.meter_wh 同步。
This commit is contained in:
12451 2026-09-20 05:55:53 +08:00
parent f3e733eaec
commit ad6c32b709

View File

@ -564,6 +564,11 @@
| `temp` | 整数 | 柜体温度。**⚠️ 这是 JSON 数值字段 = 平台单位,由设备换算后上报**:送 **K×100**(即硬件 1K 的读数 ×100,`29800` = `298.00K`)。平台**原样存库、不再 ×100**;管理端按 `temp/100 − 273.15` 显示为 ℃ | | `temp` | 整数 | 柜体温度。**⚠️ 这是 JSON 数值字段 = 平台单位,由设备换算后上报**:送 **K×100**(即硬件 1K 的读数 ×100,`29800` = `298.00K`)。平台**原样存库、不再 ×100**;管理端按 `temp/100 − 273.15` 显示为 ℃ |
| `meter` | 整数 | 电表读数。**⚠️ 这是 JSON 数值字段 = 平台单位,由设备换算后上报**:送 **Wh**(即硬件 0.1kWh 的读数 ×100,`125500` = `125.5 kWh` = 125500 Wh)。平台**原样存库、不再 ×100** | | `meter` | 整数 | 电表读数。**⚠️ 这是 JSON 数值字段 = 平台单位,由设备换算后上报**:送 **Wh**(即硬件 0.1kWh 的读数 ×100,`125500` = `125.5 kWh` = 125500 Wh)。平台**原样存库、不再 ×100** |
> ✅ **平台侧落地情况(2026-09-20)**:本字段**已按此要求落库** —— cabinets.meter_wh(最新读数)+ cabinets.meter_at(收到时刻),
> 并在 cabinet_meter_readings 表**只在读数变化时**追加一条留痕(即**抄表记录**,可直接用于按日统计用电量)。
> 此前平台只把它写进 Redis(TTL 300 秒)⇒ 上报 5 分钟后即被清掉、历史无法回溯,属实现缺口,现已补齐。
> ⚠️ 与订单电量 nergy **不是一回事**:meter 是**整柜累计电能**(电表读数,天然累加值),nergy 是**单订单充电量**(协议无此字段,见待确认第 13 项的兜底)。
> ⚠️ **`temp` / `meter` 与 `channels[]` 不是同一套口径,千万别混**(全文统一规则见 **3.1**): > ⚠️ **`temp` / `meter` 与 `channels[]` 不是同一套口径,千万别混**(全文统一规则见 **3.1**):
> - **`temp` / `meter` 是 JSON 数值字段 → 设备换算**:示例里的 `29800` / `125500` **就是最终值**,**固件不要再乘 100**。 > - **`temp` / `meter` 是 JSON 数值字段 → 设备换算**:示例里的 `29800` / `125500` **就是最终值**,**固件不要再乘 100**。
> - **`channels[]` 是 hex 字节流 → 平台换算**:同一条报文里的 `0143` 是**硬件原始值**(323K),平台会 **×100** 得到 32300(K×100)。 > - **`channels[]` 是 hex 字节流 → 平台换算**:同一条报文里的 `0143` 是**硬件原始值**(323K),平台会 **×100** 得到 32300(K×100)。