You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit c472c0a
Browse filesBrowse the repository at this point in the historyBrowse files
* Guard against GRID_EXPORT as timed-export restore mode (#26)
If the inverter is already in GRID_EXPORT when a new timed export starts
(e.g. due to a stale duplicate scheduler instance), saving GRID_EXPORT as
the restore mode would leave the inverter exporting indefinitely with no
SOC floor protection after the timed window ends. Extend the existing
TOU→SELF_POWERED redirect to also cover GRID_EXPORT→SELF_POWERED.
* Add high_soc_export_set flag to prevent mid-period safety export oscillation (#27)
The mid-period high-SOC safety export had no one-shot guard — unlike the
clipping check (gated by clipping_export_set), it evaluated every tick.
Once an export ended at the SOC floor, solar would recharge past the 50%
trigger threshold and it would fire again after the 15-minute cooldown,
causing repeated export/restore cycles within the same period.
Add high_soc_export_set (same pattern as clipping_export_set) to
DayStateEntry. Once a mid-period high-SOC export fires, the flag prevents
re-triggering for the rest of that period. Auto-extension in
maybe_restore_timed_grid_export handles continuous strong solar during the
active window.
* Set 10% gap for mid-period high-SOC safety export (trigger 55%, floor 45%) (#27)
Raise trigger threshold from 50% to 55% and use DAYTIME_TIMED_EXPORT_MIN_SOC_PERCENT
(45%) as the SOC floor directly, replacing the headroom-target-based floor that
was collapsing the gap to zero for Green days (max(45, 50) = 50%).
Result: export only fires when battery is above 55%, stops at 45%, giving a
10% band of guaranteed discharge per export window.
0 commit comments