Fix calibration grid-assist lever: firmware NAKs stop_charge=0/Full
Live run 2026-06-24: flash.py apply NAK'd BUCD480,000 on both inverters — the
firmware rejects stop_charge_voltage=0 ("Full"). flash.py aborts on first setter
failure, so nothing changed and the cluster stayed in sync (verified).
The field flash.py calls stop_charge_voltage is actually the inverter's
battery_re_discharge_voltage (HA: sensor.lvx6048_*_battery_re_discharge_voltage):
the V at which loads switch back to battery after grid charging. 54.0 tops grid
charge to ~54V; raising to 56.0 is the corrected (but UNVALIDATED) lever and may
band-oscillate rather than hold absorption.
- calibration profile: 0 -> 56.0, with the finding documented.
- skill: solar-only is now the RECOMMENDED/known-good method; grid-assist demoted
to advanced/unvalidated with a mandatory diff-preview gate.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -48,14 +48,23 @@ Record and check:
|
||||
- **Forecast/grid**: solar-only needs a sunny low-load day; grid-assist works anytime.
|
||||
|
||||
## 2. Choose the method (ask the user)
|
||||
- **Solar-only (no setting change, free):** on a sunny, low-load day the bank reaches
|
||||
bulk 56.4 V on its own (the 54 V cap only gates GRID charging, not solar). Just
|
||||
monitor §4 and verify §5. Best when weather cooperates; no flash needed — skip §3.
|
||||
- **Grid-assist (reliable, any weather):** temporarily lift the grid-charge ceiling so
|
||||
grid finishes the top-off. Needs the setter change in §3. Use this if it's cloudy or
|
||||
a full charge hasn't happened in a while.
|
||||
- **Solar-only — RECOMMENDED (no setting change, free, known-good):** on a sunny,
|
||||
low-load day with a full day ahead, solar drives the bank through the full CC/CV
|
||||
curve to bulk 56.4 V and holds absorption on its own — exactly the clean termination
|
||||
the BMS needs to re-anchor. No flash, no risk. Just monitor §4 and verify §5; skip §3.
|
||||
This is the method to default to.
|
||||
- **Grid-assist — ADVANCED / UNVALIDATED:** the field flash.py calls
|
||||
`stop_charge_voltage` is really `battery_re_discharge_voltage`; the firmware **NAKs
|
||||
`0`/"Full"** (confirmed 2026-06-24 — both units rejected `BUCD480,000`). The corrected
|
||||
lever raises it 54.0 → 56.0 so grid charges higher, but it may band-oscillate near
|
||||
56 V instead of holding a clean absorption, so it is **not proven** to re-anchor.
|
||||
Only use as a supervised experiment when solar can't reach full and you accept it
|
||||
may not fully work. Needs §3.
|
||||
|
||||
## 3. Grid-assist: apply the calibration profile (USER-CONFIRMED setter change)
|
||||
## 3. Grid-assist (ADVANCED): apply the calibration profile (USER-CONFIRMED setter change)
|
||||
Run `flash.py diff` FIRST and confirm the ONLY change is `stop_charge_voltage 54.0 ->
|
||||
56.0` before applying. If any apply NAKs, the cluster is unchanged (flash.py aborts on
|
||||
first failure) — fall back to solar-only.
|
||||
Mirror to BOTH inverters (parallel cluster — mismatched settings throw fault 86).
|
||||
`flash.py apply` stops powermon for exclusive USB, so MQTT telemetry pauses briefly.
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user