Changelog¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased¶
Added¶
- SunSpec InfoPoint Sequencer for automated register control sequences
- Diagnostic conformance suite for hardware register verification
- Comprehensive SunSpec Model Reference documentation (
SUNSPEC_MODEL_REFERENCE.md) - MIT License, CONTRIBUTING.md, GitHub issue/PR templates
- Branch protection rulesets for
developandmaster - Repository topics for discoverability
- Grid lifetime energy metrics (
M701.TotWhInj,M701.TotWhAbs) inread_grid_status(), monitor TUI, and--status --detail(FEAT-MONITOR-GRID-LIFETIME)
Fixed¶
- CRITICAL: Synchronized Grid and Battery telemetry signs with confirmed hardware behavior (Negative = Charge/Import). Resolves directional labeling conflict in CLI and Monitor (Batch 4 / Issue #6).
- Corrected
battery_statederivation incontroller.pyto match physical power flow.
Changed¶
- Replaced hardcoded IP addresses with
YOUR_AGATE_IPplaceholder - Replaced device serial numbers with
XXXXXXXXXXXXXXXXXXXXplaceholder - Updated
setup.pyemail to GitHub noreply address - Cleaned docs/ and tools/ indexes for public visibility
Removed¶
- Internal test results, archive directory, agent configs from tracked files
- 53 one-off tool scripts (9 curated tools remain)
- Internal design docs and proprietary references
0.9.0 - 2026-03-16¶
Fixed¶
- CRITICAL: WSetPct charge rate calculation used wrong denominator (
WMaxRtg=1000Winstead ofWChaRteMaxRtg=5000W). Requesting 1200W charge now correctly produces WSetPct=-24% instead of -120%. (DEF-001) actual_powerread-back inread_full_status()now uses direction-aware charge/discharge rates- Success messages display correct rated capacity (5000W) instead of WMaxRtg (1000W)
- "ORPHANED VPP DETECTED" warning downgraded to INFO — WSetEna=1 is normal persistent state (DEF-002)
- Removed EXTENSION REGISTERS section from
--statusoutput; retained in--healthcheck(DEF-003)
Added¶
- High-resolution home load from Register 16000 (~1W precision vs 10W from extensions)
- Propagated high-res home load to CLI, standalone tool, and demo
- Base-1 addressing reference in QUIRKS.md
- PICS-driven safety improvements: orphan VPP check, input validation, alarm definitions
- M801/M802 battery model scan — confirmed non-existence on aGate
- Register 15000-15043 correlation analysis
Changed¶
- Conflict detection now uses energy context (solar, load, grid) to reduce false positives
- PICS conformance cross-reference updated with vendor submission findings
0.8.0 - 2026-03-10¶
Added¶
- Package namespace renamed from
franklinwhtofranklinwh_modbus(avoids conflict with Cloud API) - SunSpec DER sequencing reference documentation
- Comprehensive hardware test guide
- VPP Mode visual reference with mobile app screenshots
Changed¶
- CLI restructured to use library imports (
from franklinwh_modbus import ...)
0.7.0 - 2026-03-08¶
Added¶
- Extension register write probing (15507-15509 writability detection)
- Virtual mode specifications (Self-Consumption, Emergency Backup, TOU, Peak Shave, Manual)
- Orchestration and control documentation with sequence diagrams
- Safety controls documentation (10 safety rules)
- Software timeout (watchdog) implementation for VPP commands
- Battery state derivation from DC power (replacing unreliable M713.Sta)
Fixed¶
- SoC proximity ramping for charge/discharge near target
- Control conflict detection with aGate native modes
0.6.0 - 2026-02-24¶
Added¶
- MQTT publisher with Home Assistant discovery
- TUI monitor (
--monitor) using Rich library - TOU schedule support with JSON definitions
- Modbus throttling analysis and rate limiting
- Network scanner for aGate discovery
Fixed¶
- Connection stability with threaded status fetching and timeout guards
- MQTT keepalive tuning for persistent sessions
0.5.0 - 2026-02-18¶
Added¶
- Initial
FranklinWHControllerwith pysunspec2 integration - SunSpec model scanning (Models 1, 701-715)
- Battery charge/discharge via M704 WSetPct/WSetEna
- Extension register reading (15500-15509)
- CLI tool with
--status,--charge,--discharge,--stop - Basic alarm monitoring