Add calibration-charge skill to fix EG4 SoC counter drift (improvement #1)
The everyday profile caps grid charging at 54V, so the bank can go weeks without a full charge and the EG4 BMS coulomb counters drift (proven: pack 6 read 76% SoC while at the same 53.4V/3.337V-per-cell as packs reading 50-55% — all paralleled, so physically equal charge; the spread is pure drift). - profiles/eg4-lp4-v2-calibration.yaml: temporary profile, identical to canonical except stop_charge_voltage 54.0 -> 0 (Full), so grid can finish a full charge to the 56.4V absorption hold that re-anchors every pack to 100%. - calibration-charge skill: guided runbook (pre-flight safety, two methods solar-only / grid-assist, live monitoring with cell-voltage/temp aborts, re-anchor verification, mandatory revert). - REFERENCE: scoped action-policy exception (this skill alone may flip stop_charge, both units, user-confirmed, must revert); corrected pack-6 / SoC-drift notes to the verified equal-voltage-different-SoC signature. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -114,9 +114,13 @@ MQTT — compute them yourself from the raw entities when working off the Pi.
|
||||
untrustworthy and use the `lifepower4_*` pack entities for any battery math; if it
|
||||
reads ~10 V right now, a powermon (or inverter) restart may clear it — worth testing.
|
||||
- **Pack 6 is an oddball**: Modbus addr `0x01` @ 115200 (packs 1–5 are `0x40` @
|
||||
9600); ran 65 % SoC while 1–5 sat 40–44 %. Treat as a distinct member.
|
||||
9600). It reads SoC high (76 % on 2026-06-24 vs 50–55 % on packs 1–5) — but at the
|
||||
SAME pack_voltage (53.4 V) and cell voltage (3.337 V), so that's **counter drift,
|
||||
not real imbalance**: all packs are paralleled and physically at the same charge.
|
||||
- **EG4 SoC never re-anchors** (drifts because packs rarely hit 100 % to reset the
|
||||
coulomb counter). See memory `project_eg4_soc_drift_remediation`.
|
||||
coulomb counter). Verified live via the equal-voltage/different-SoC signature above.
|
||||
Fix = the `calibration-charge` skill (periodic full charge). See memory
|
||||
`project_eg4_soc_drift_remediation`.
|
||||
- **RS485 daisy-chain silences slave packs** — each pack needs its own FTDI; an
|
||||
inter-pack chain demotes slaves. See memory `project_eg4_daisy_chain_silences_slaves`.
|
||||
- **No per-day inverter energy** — PI18 only gives `ET` (lifetime Wh); ED/EM/EY NAK.
|
||||
@@ -143,3 +147,9 @@ MQTT — compute them yourself from the raw entities when working off the Pi.
|
||||
|
||||
When a fix is outside the allowed set, report the finding and hand the user the
|
||||
precise command(s) to run.
|
||||
|
||||
**Scoped exception — `calibration-charge` skill only:** that one skill may change
|
||||
exactly one setting (`stop_charge_voltage` → Full and back) via the prepared
|
||||
`eg4-lp4-v2-calibration.yaml` profile, on BOTH inverters, and ONLY after explicit
|
||||
in-session user confirmation, and it must REVERT afterward. No other skill and no
|
||||
other setting. This does not loosen the policy above for anything else.
|
||||
|
||||
Reference in New Issue
Block a user