- writable_registers.py: shared whitelist, ranges and defaults (230: 0-115 A,
293: 0-6500 W; defaults 43 and 4500) with strict validate_write()
- app.py: POST /api/registers validates everything before writing, writes
under the inverter lock, reads each register back to verify; also reads
register 230 for display
- index.html: Settings section with per-register Set, Default button,
client-side digit/range checks and a confirm dialog
- read_registers.py: use the shared limits; README documents the feature
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- read_registers.py: --read N|START-END|START:COUNT for arbitrary registers
(chunked, shows dec/hex/signed); README documents the tool
- app.py: BMS pack 2 (614-627) is byte-swapped by the firmware; swap back
and scale (SOC 0.1%, temp +1000 offset); pack 1 is unused, so drop it
- index.html: BMS cards now show pack 2 SOC, voltage, current, temp,
charge voltage and BMS charge current limit
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>