maint_start and maint_abort take an optional unit. With two or more batteries each Batteries card has Start cycle and Stop cycle buttons. One slot per site stays: a start while a battery cycles is refused and names it (no queue). A battery that is switched off, an unknown unit, and a stop on a battery that is not cycling are refused with a plain message. A request with no unit is the old call. The scheduler and the phase machine are unchanged. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bdqr7PiaHcBnzPituu2yTC
35 lines
1.6 KiB
Markdown
35 lines
1.6 KiB
Markdown
# MAINT-11 - start or stop the maintenance cycle per battery
|
|
|
|
**Status: for review.** Tests: `test_maint11.py`. No option added.
|
|
|
|
**The fault.** At two or more batteries the page had one "start a battery cycle"
|
|
button, and `_maint_button()` chose the battery. An operator could not cycle a
|
|
chosen one (inverter B, new after storage, needed its first cycle).
|
|
|
|
## Rule
|
|
|
|
1. `maint_start` and `maint_abort` take an optional `unit`. With no unit they
|
|
run the old code unchanged. The Batteries screen sends the unit from a
|
|
per-battery Start cycle and Stop cycle button, at two or more batteries only.
|
|
2. **A start while any battery holds the maintenance slot is refused, not
|
|
queued.** The message names the battery that is cycling. One slot per site
|
|
stays the rule, and the scheduler is untouched.
|
|
3. Also refused, with a plain message: an unknown unit, a start on a battery
|
|
that is switched off (battery modes on), and a stop on a battery that is not
|
|
cycling. Nothing changes on a refusal.
|
|
4. A stop on the cycling battery is today's abort: the cycle ends, then every
|
|
inverter goes to 0 W.
|
|
|
|
## Why refuse and not queue
|
|
|
|
A queued start is a cycle that begins hours later, unseen, after the operator
|
|
has moved on. A refusal is immediate and says why. The scheduler already
|
|
queues by waiting time, so nothing is lost.
|
|
|
|
## What this does not cover
|
|
|
|
- Today's bare button never refused a battery that is refusing to give power
|
|
(SAFETY-73); its drain waits. The per-battery start does the same.
|
|
- A start on the battery that is already cycling is refused as "busy", where
|
|
the bare button restarts its drain. The bare button is unchanged.
|