v3.4.0-beta.20
Pre-release
Pre-release
Requires pylxpweb 0.9.36b22 (installed automatically; the manifest requirement is bumped).
Added
- AC First, Forced Charge and Forced Discharge schedule time entities (#295): every schedule type the firmware exposes is now a native Home Assistant time entity, joining the AC Charge windows from beta.18 — all with the same pattern: three windows per schedule, window 1 enabled by default, windows 2/3 created disabled in the entity registry.
- AC First (holding registers 152-157) — the off-grid grid-passthrough schedule: created only on EG4_OFFGRID units (6000/12000XP, SNA), matching the EG4 portal, where the AC First section exists only on the SNA working-mode page. Cloud writes use the portal's own
HOLD_AC_FIRST_*parameters (verified from the portal HTML); together with the AC Charge windows this completes portal-free peak/off-peak automation on the XP (requested by @mjstrand in #277/#295). - Forced Charge (76-81) and Forced Discharge (84-89) on control-capable families (forced discharge excluded on off-grid units, matching the existing control suppression).
- LOCAL/HYBRID write the packed register directly (FC06); CLOUD writes the portal's named hour/minute parameters with the beta.18 partial-write convergence behavior; the off-grid-only 152-157 register read is family-gated so non-SNA firmware that rejects the range never degrades the parameter cycle.
- Under the hood the four schedules share one declarative table and one entity class — the time platform grew by only 18 lines while quadrupling its coverage.
- AC First (holding registers 152-157) — the off-grid grid-passthrough schedule: created only on EG4_OFFGRID units (6000/12000XP, SNA), matching the EG4 portal, where the AC First section exists only on the SNA working-mode page. Cloud writes use the portal's own
Verification
1751 tests passing; dual (Claude Opus + Codex) adversarial review gate + code-simplifier pass; hybrid-mode docker smoke against this exact build created exactly the expected 36 time entities (AC First correctly absent on hybrid inverters). AC Charge entity identities are byte-for-byte unchanged from beta.18/19.
🤖 Generated with Claude Code